何时正确订阅 firebase 中的主题

When to properly subscribe to a topic in firebase

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

MainActivity.java

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

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

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

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

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

Since a service should work even if the app is destroyed

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

提前致谢。

使用 STIKY 服务。

覆盖此方法:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    return START_STICKY;
}

这应该会使您的服务在应用程序被销毁后重新启动。 Alse subscribe in this method you topic 因为每次销毁后都会调用此方法。

您的应用无需激活 FirebaseMessagingService 即可接收通知。

服务仅用于处理传入消息或令牌请求。

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


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