手机型号是OnePlus3T。氧气OS版本为4.1.6。当应用程序在前台或后台但在内存中时,应用程序会收到通知。但是,当应用程序不在内存中即从内存中滑出时,不会收到通知。
其他设备上的通知可以在Android OS版本4.2、5.1.1、6.0.1、7.1.1 Lineage OS上接收,即使应用程序不在内存中。
请提出建议。
提前致谢。
我也遇到了同样的问题。
解决这个问题的两种方法:
1- 使用通知负载
可以使用data
标签或notification
标签发送通知负载。
使用data
标签
"data" {
"title": "welcome",
"description" :"to your app" ,
"image" :"image_url",
"deeplink" :"deeplink",
- -
}
它会触发FirebaseMessagingService的onMessageReceived
方法。
在某些设备上,当应用程序在后台运行时,它将无法正常工作。
使用通知
"notification" {
"title":"title",
"description" : "description",
"click_action" :"activity to be open"
..
}
这种情况下,安卓系统会处理并展示通知,您的FirebaseMessagingService的onMessageReceived方法将不会被调用。即使应用程序在后台,通知也会显示出来。缺点是您无法自定义这些通知,因为它们由Android系统处理。
更多信息请参见此处。
如果您使用“data”发送通知并且应用程序已被杀死,则通知将不会显示。如果您观察log cat,您会看到:2- 在设备设置中启用自动启动
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、小米、华硕和OnePlus 3)都存在的问题。
启用应用程序自动启动的步骤因设备制造商而异。
更新:
在OnePlus 3和Android 8.0中,自动启动选项已被删除,因此现在您可以前往“设置”>“电池”>“电池优化”>(左上角的三点菜单)高级优化>关闭高级优化。
这看起来像是特定设备的问题。
为了检查,请在应用关闭后(重新启动或滑动后)运行此命令。
adb shell dumpsys package MY-PACKAGE | grep stopped
stopped=true
,那么这意味着您设备的制造商实现了一种非标准行为,即在应用程序被滑动关闭时"强制停止"应用程序。
强制停止
与禁用应用程序非常相似,直到用户再次打开应用程序为止。
当应用程序处于该状态时,许多其他 Android API 将无法工作!
(广播、闹钟等)
如果这是问题,请联系制造商并请求修复设备!