android - 何时正确订阅 firebase 中的主题

标签 android firebase android-service firebase-cloud-messaging

在 Firebase 文档中,当您的应用程序打开时订阅主题是安全的,就像在 MainActivity 的 onCreate 中一样。

主 Activity .java

FirebaseMessaging.getInstance().subscribeToTopic("announcement");

当应用程序处于后台(按下主页按钮)/前台时,您很可能会收到通知。

问题是当我关闭应用程序(应用程序被销毁)或我重新启动手机时,我的应用程序似乎没有收到来自 Firebase 控制台的通知(通过主题发送)。虽然我认为我需要在手机重启时实现广播接收器。

无论如何,我从扩展的 FirebaseMessagingService 的 onCreate 订阅了主题,但它总是调用 onDestroy。从调试看来,当从 FirebaseMessagingService 收到通知时,它会转到 onCreate -> onMessage -> onDestroy 以获得每个通知。

据我所知,即使应用程序被销毁,我的扩展 FirebaseMessagingService 也应该存在,因此它不应该每次都调用 onCreate。

Since a service should work even if the app is destroyed

所以我想知道我应该在我的 Android 代码中的什么地方放置我对主题的订阅,这样即使应用程序被销毁它仍然会收到通知之类的通知。

提前谢谢你。

最佳答案

FirebaseMessagingService 无需处于 Activity 状态,您的应用即可接收通知。

该服务仅用于处理传入消息或 token 请求。

如果服务停止,请不要担心。 Android 将在新通知到达时重新启动它。


您可以在应用的任何位置订阅主题。 订阅会一直保存,直到您取消订阅。

关于android - 何时正确订阅 firebase 中的主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42414657/

相关文章:

javascript - Firebase 实时数据库 - o​​rderByChild 不返回任何结果

java - 如何设置为 0 通知计数 android firebase

android - 在计时器后启动 Activity

android - 使用 gson 保存数据和 mediaplayer 服务时出错

android - proguardFile 问题,返回 null : 1

android - 在特定日期显示 Android 状态栏通知,

ios - 如果节点具有 currentuser.uid 对象并显示在我的 UITableViewCell 中,则从 Firebase 中的节点检索对象

android - 如果应用程序在后台,则点击通知栏不会在 Activity 中收到消息

java - 如何在java中实现获取回调的接口(interface)

android - 如何从 Windows 命令行构建 .apk 文件?