在android应用程序上从GCM升级到FCM-强制关闭应用程序后新服务处于活动状态

在android应用程序上从GCM升级到FCM-强制关闭应用程序后新服务处于活动状态,android,google-cloud-messaging,firebase-cloud-messaging,Android,Google Cloud Messaging,Firebase Cloud Messaging,我从GCM升级到FCM,现在我正在测试升级用户的体验 我有以下步骤 安装支持GCM的应用程序版本 升级到支持FCM的新版本 在Firebase控制台上发送推送消息 问题是我在设备的通知区域中看到了收到的消息,但它没有调用CloudMessagingListenerService Extendes FirebaseMessagingService的代码 我在CloudMessagingListenerServiceonMessageReceived的开头有一个调试日志 在我转到应用程序信息并选择强

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

我有以下步骤

安装支持GCM的应用程序版本 升级到支持FCM的新版本 在Firebase控制台上发送推送消息 问题是我在设备的通知区域中看到了收到的消息,但它没有调用CloudMessagingListenerService Extendes FirebaseMessagingService的代码 我在CloudMessagingListenerServiceonMessageReceived的开头有一个调试日志

在我转到应用程序信息并选择强制停止并重新打开应用程序后,CloudMessagingListenerServiceonMessageReceived中的代码被正确调用

任何导致这种情况的想法,以及可以采取什么措施来避免暴力杀害我的用户,都不会是自愿的

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

更新:

问题在于接收来自Firebase控制台的消息

我在CloudMessagingListenerServiceonCreate和CloudMessagingListenerServiceonDestroy中添加了日志,我可以看到它们之间的时间差为100ms,而CloudMessagingListenerServiceonMessageReceived没有被调用,所以FirebaseMessagingService似乎决定处理通知,而不是处理数据部分

关于从服务器发送的消息: 这是我从服务器发送的json—数据部分正确地传播到我的代码中,但是当我检查remoteMessage.getNotification的内容时,通知被忽略。我得到null

{ 致:我的代币, 折叠键:我的应用程序, 通知:{ 标题:服务器标题, 正文:服务器文本 }, 数据:{ 标签:调试, 操作:自定义推送, ... } }

Firebase Console在通知键中发送消息,这意味着只有在应用程序在前台/打开状态下运行时,才会将消息发送到onMessageReceived。如果应用程序在后台运行,通知将直接显示在通知抽屉上。
要在扩展FirebaseMessagingService的类的onMessageReceived中接收有效负载,请确保通知内容在向FCM服务器发出的请求的数据密钥中传递。这将确保有效负载被传递到onMessageReceived,而不管应用程序是否位于前台/后台。

能否共享FCM消息正文?您在服务器中构建的一个…@HedeH的可能副本我没有发布我的服务器json b/c它处理得很好-如上所述,问题是在Firebase控制台中生成的消息。在我描述的场景中,应用程序始终在后台