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