我的问题是关于应用程序终止时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上是否可以向设备的系统托盘发送远程推送通知?
答案 0 :(得分:2)
我现在可以回答我自己的问题:在应用未运行时,可以向Android设备(在通知中心)发送推送通知。
未通过通知的问题是由华为的EMUI和特定的电池节省设置引起的。在华为P8,P9和许多其他具有EMUI的设备上,不允许应用程序在未运行时接收通知。必须在省电设置中明确授权它们。