Android上的Firebase - 我想在Android客户端上禁用firebase通知

mar*_*rlo 14 android firebase firebase-notifications

我正在使用Firebase控制台向用户发送通知.但是,我想让用户禁用通知.我怎样才能禁用它们?

只有当应用程序位于前台时,我才能通过FirebaseMessagingService处理(和停止)通知.但是,当应用程序处于后台时,我无法停止通知.

Alv*_*sli 12

我还没评论,但是racs的评论给了我很多帮助.

实际上,如果您希望完全控制处理方式,Firebase文档建议使用数据推送而不是通知:firebase.google.com/docs/cloud-messaging/... - quote:"当您希望FCM处理时使用通知代表客户端应用程序显示通知.当您希望应用程序处理显示或处理Android客户端应用程序上的消息时,请使用数据消息..."

所以基本上,我改变了推送通知请求的主体:

{
   "data": {
       "type" : "mytype"
    },
    "notification": {
        "title": "My Title",
        "body": "My Notification Message"
    },
    "to": "/topics/all"
}
Run Code Online (Sandbox Code Playgroud)

至:

{
   "data": {
       "type" : "mytype",
       "title": "My Title",
       "body": "My Notification Message"
    },
    "to": "/topics/all"
}
Run Code Online (Sandbox Code Playgroud)

现在我的应用程序甚至在后台调用onMessageReceived(),我只是改变了方法,以便在推送数据中使用获得的通知标题和消息.


rac*_*acs 6

不确定为什么会发生这种情况(也许是代码片段吗?),但是有一个沉重的最终解决方案:在清单中定义您自己的c2dm接收器并将优先级设置为高(> 0),然后停止处理通知。

GCM消息按有序广播进行处理,因此可以通过调用以下方法来停止处理链:

https://developer.android.com/reference/android/content/BroadcastReceiver.html#abortBroadcast()

如果您在接收器中什么也不做,则下一个接收器将进行处理,即Firebase接收器。

请注意:Firebase正在发送有关远程配置更改的推送通知。因此,如果您使用远程配置,则不建议禁止任何数据推送。