何时正确订阅firebase中的主题

时间:2017-02-23 11:34:56

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

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

MainActivity.java

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

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

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

无论如何,我从扩展的FirebaseMessagingService的onCreate订阅了Topic,但它总是调用onDestroy。从调试开始,似乎当从FirebaseMessagingService收到通知时,它会转到onCreate - > onMessage - > onDestroy用于每个通知。

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

  

由于即使应用程序被销毁,服务也应该有效

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

提前谢谢。

2 个答案:

答案 0 :(得分:1)

FirebaseMessagingService无需处于活动状态,您的应用就可以接收通知。

仅执行服务以处理传入消息或令牌请求。

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

您可以在应用的任何位置订阅主题。 订阅将被存储,直到您取消订阅。

答案 1 :(得分:0)

使用STIKY服务。

覆盖此方法:

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

这应该会在应用程序被破坏后重新启动服务。 Alse在这个方法中订阅你的主题,因为每次在destroy之后调用这个方法。