手机是OnePlus3T。氧气OS构建为4.1.6。当应用程序在后台但在内存中处于前台时,应用程序会收到通知。但是,当应用程序不在内存中时,即在刷出内存时,不会收到通知。 在具有Android OS版本4.2,5.1.1,6.0.1,7.1.1的其他设备上收到通知.Latage OS甚至应用程序也不在内存中。
请提出一些建议。 提前谢谢。
答案 0 :(得分:19)
我也面临同样的问题。
解决此问题的两种方法
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系统尝试并显示通知,这个案例onMessageReceived
方法你的FirebaseMessagingService将不会调用。甚至应用程序都会在后台显示通知。
这样做的一个缺点是 - 您可以自定义通知,因为它是由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设置中 - >应用 - >点击齿轮 - >最后一个选项App select app auto launch - >找到你的应用启用开关
这是大多数设备中的问题,如Vivo,Oppo,xiaomi,Asus,一加三。
基于设备制造商启用应用程序自动启动的步骤。
<强>更新强>
OnePlus 3和Android 8.0自动启动选项已删除,现在您可以转到设置&gt;电池&GT; <电池优化> (左上角的三点菜单)高级优化&gt;关闭高级优化。
答案 1 :(得分:1)
这看起来像是特定设备的问题。
要在应用关闭时(重启后或刷卡后)检查运行此命令
adb shell dumpsys package MY-PACKAGE | grep stopped
如果您可以阅读stopped=true
,则表示您设备的制造商实施了非标准行为,其中包含强制停止&#34;刷卡时的应用程序。
force-stopping
非常类似于在用户再次打开它之前禁用该应用
当应用处于该状态时,许多其他Android API将无效!
(广播,闹钟......)
如果出现此问题,请与制造商联系并要求他们修理设备!