在Android应用程序上从GCM升级到FCM-强制杀死该应用程序后,新服务有效

时间:2018-08-05 12:32:56

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

我已从 GCM 升级到 FCM ,现在我正在测试升级用户的经验

我有以下步骤

  1. 安装支持 GCM
  2. 的应用版本
  3. 升级到支持 FCM
  4. 的新版本
  5. Firebase控制台
  6. 上发送推送消息

问题是我在设备的通知区域中看到了收到的消息,但没有调用代码CloudMessagingListenerService extends FirebaseMessagingService 我在CloudMessagingListenerService#onMessageReceived

的开头有一个调试日志

我进入应用信息并选择强制停止并重新打开应用后,我在CloudMessagingListenerService#onMessageReceived内的代码被正确调用。

任何想法是什么原因造成的,以及可以采取什么措施来避免强行杀死(我的用户不会自愿这样做)

在两种情况下,应用都在后台

更新

问题是从 Firebase控制台接收消息。

我在CloudMessagingListenerService#onCreateCloudMessagingListenerService#onDestroy中添加了日志,我发现它们之间的时间差为100毫秒-而CloudMessagingListenerService#onMessageReceived却没有被调用,因此看起来{ 1}}决定处理通知,但不处理数据部分

关于从服务器发送的消息: 这是我从服务器发送的json-数据部分正确传播到了我的代码,但是当我检查FirebaseMessagingService的内容时,通知被忽略了,我得到 null < / p>

remoteMessage.getNotification()

1 个答案:

答案 0 :(得分:0)

Firebase控制台通过notification键发送消息,这意味着仅当应用程序在前台/打开状态下运行时,消息才传递给onMessageReceived()。如果应用程序在后台运行,则通知将直接显示在通知抽屉中。
要在扩展onMessageReceived()的类的FirebaseMessagingService中接收有效载荷,请确保将通知内容通过您的请求的data键传递给FCM服务器。这样一来,无论应用程序位于前景/背景中,都将确保有效载荷传递到onMessageReceived()