远程推送通知和已终止的应用

时间:2017-06-13 21:58:26

标签: android notifications push

我的问题是关于应用程序终止时iOS和Android设备上的标准远程推送通知。

简而言之:

有不同的应用状态/模式:

  • 前景
  • 背景
  • 暂停
  • 终止

有不同的通知类型:

  • 正常通知(包含警报信息)
  • 数据/无声通知(包含数据有效负载)
  • 混合通知(警报和数据)

对于前景,背景和暂停模式,它很清楚,并且在iOS和Android上运行良好。取决于通知类型,如文档中所述的预期行为。

但是,当应用程序终止时,iOS和Android的远程通知似乎存在本质区别。

对于iOS:如果应用程序终止(未暂停),iOS系统会收到标准远程通知并显示在通知中心。没有调用委托,应用程序没有进入后台模式(即使启用了远程推送后台模式也没有)。当用户单击通知时,应用程序将启动,并通过相应的委托提供通知对象。总结:即使应用程序被强制退出,用户也可以在他的设备上接收推送通知。

对于Android:当应用程序终止时,通知中心不会显示标准的远程推送通知。 (一旦应用程序启动并放到后台,通知就会被接收并正确显示。

文档非常不清楚,因为只提到了前景和后台模式。 https://firebase.google.com/docs/cloud-messaging/concept-options https://firebase.google.com/docs/cloud-messaging/android/receive

有很多讨论得出的结论是,在强制退出应用后,远程通知不会显示在系统托盘(通知中心)中。但是关于设备重启后没有启动应用程序的预期行为的讨论却很少。

但也有讨论表明远程推送始终显示在系统托盘中,即使应用已终止(Android push notifications not being received when app closed)。这与iOS的行为相同。

要明确一点:即使应用程序被终止/强制退出/未运行,Android上是否可以向设备的系统托盘发送远程推送通知?

1 个答案:

答案 0 :(得分:2)

我现在可以回答我自己的问题:在应用未运行时,可以向Android设备(在通知中心)发送推送通知。

未通过通知的问题是由华为的EMUI和特定的电池节省设置引起的。在华为P8,P9和许多其他具有EMUI的设备上,不允许应用程序在未运行时接收通知。必须在省电设置中明确授权它们。