首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于Android的Firebase -我想在Android客户机上禁用firebase通知。

基于Android的Firebase -我想在Android客户机上禁用firebase通知。
EN

Stack Overflow用户
提问于 2016-05-29 14:40:45
回答 5查看 25.9K关注 0票数 17

我使用Firebase控制台向用户发送通知。但是,我想让用户禁用通知。我怎么能让他们停用呢?

只有在应用程序处于前台时,我才能通过FirebaseMessagingService处理(并停止)通知。但是,当应用程序处于后台时,我不能停止通知。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-05-29 22:46:15

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

GCM消息是按顺序广播处理的,因此您可以通过调用此方法来停止处理链:

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

如果您没有在您的接收器中做任何事情,那么下一个接收器将进行处理,这将是Firebase接收器。

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

票数 6
EN

Stack Overflow用户

发布于 2016-09-19 10:19:15

我还不能发表评论,但racs的评论帮了我很多忙。

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

因此,基本上,我从以下位置更改了推送通知请求的主体:

代码语言:javascript
运行
复制
{
   "data": {
       "type" : "mytype"
    },
    "notification": {
        "title": "My Title",
        "body": "My Notification Message"
    },
    "to": "/topics/all"
}

至:

代码语言:javascript
运行
复制
{
   "data": {
       "type" : "mytype",
       "title": "My Title",
       "body": "My Notification Message"
    },
    "to": "/topics/all"
}

现在,我的应用程序每次都调用onMessageReceived(),甚至在后台也是如此,我只是更改了方法,以便在push数据中使用获得的通知标题和消息。

票数 14
EN

Stack Overflow用户

发布于 2016-09-03 08:28:58

我也遇到了同样的问题。我使用subscribeToTopic API订阅通知。

代码语言:javascript
运行
复制
FirebaseMessaging.getInstance().subscribeToTopic("APP");

我找到另一个要取消订阅的API unsubscribeFromTopic

代码语言:javascript
运行
复制
FirebaseMessaging.getInstance().unsubscribeFromTopic("APP");

也许这对使用主题通知的应用程序是有用的。它不会收到前台和后台的通知。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37511198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档