Android FCM在从后台删除应用时未收到通知

时间:2017-06-30 13:35:54

标签: android firebase firebase-cloud-messaging

手机是OnePlus3T。氧气OS构建为4.1.6。当应用程序在后台但在内存中处于前台时,应用程序会收到通知。但是,当应用程序不在内存中时,即在刷出内存时,不会收到通知。 在具有Android OS版本4.2,5.1.1,6.0.1,7.1.1的其他设备上收到通知.Latage OS甚至应用程序也不在内存中。

请提出一些建议。 提前谢谢。

2 个答案:

答案 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将无效!  (广播,闹钟......)

如果出现此问题,请与制造商联系并要求他们修理设备!