这款手机是OnePlus3T。氧气OS构建为4.1.6。当应用程序在后台但在内存中处于前台时,应用程序会收到通知。但是,当应用程序不在内存中时,即在刷出内存时,不会收到通知。在具有Android OS版本4.2,5.1.1,6.0.1,7.1.1的其他设备上收到通知.Latage OS甚至应用程序不在内存中。
请提出一些建议。提前致谢。
我也遇到了同样的问题。
解决这个问题的两种方法
1-使用通知负载
可以使用data
标记或notification
标记发送通知有效负载。
使用data
标签
"data" {
"title": "welcome",
"description" :"to your app" ,
"image" :"image_url",
"deeplink" :"deeplink",
- -
}
它将触发FirebaseMessagingService onMessageReceived
方法。当应用程序在后台时,它将无法在某些设备上运行。
使用notification
"notification" {
"title":"title",
"description" : "description",
"click_action" :"activity to be open"
..
}
这是处理android系统尝试并显示通知,这种情况下你的FirebaseMessagingService的onMessageReceived
方法将不会调用。甚至app将在后台显示。这样做的一个缺点是 - 你不能自定义通知,因为它是由Android系统处理的。 more info
2-在设备设置中启用自动启动
当您使用data
发送通知并且应用程序被杀死时,通知将不会显示。如果你观察到日志猫,你会看到
W/GCM-DMM: broadcast intent callback: result=CANCELLED forIntent { act=com.google.android.c2dm.intent.RECEIVE pkg=com.cabipool (has extras) }
可以在oneplus 3设置中解决 - >应用程序 - >点击齿轮 - >最后一个选项应用程序选择应用程序自动启动 - >找到你的应用程序启用开关
这就是大多数设备中的问题,如Vivo,Oppo,xiaomi,Asus,一加三。
启用应用程序自动启动的步骤非常基于设备制造商。
更新:
OnePlus 3和Android 8.0自动启动选项已删除,因此您现在可以转到设置>电池>电池优化>(左上角的三点菜单)高级优化>关闭高级优化。
这看起来像是特定设备的问题。
在您的应用关闭时(重启后或刷卡后)检查运行此命令
adb shell dumpsys package MY-PACKAGE | grep stopped
如果您可以阅读stopped=true
,则表示您的设备制造商在刷卡时实施了非标准行为,包括“强制停止”应用程序。
force-stopping
非常类似于禁用该应用程序,直到用户再次打开它。
当应用程序处于该状态时,许多其他Android API将无法运行! (广播,报警......)
如果这是问题,请联系制造商并要求他们修理设备!