我的问题是有关应用程序终止时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上向设备的系统托盘发送远程推送通知?
我不明白你的答案,你的意思是,如果我强迫退出我的android应用程序(设置 - >应用程序 - > MyApp - >强制停止),我仍然可以收到推送消息?或者,也许你的手机无声地强制退出后台模式的应用程序? – lelloman
据我所知,如果您退出应用程序或系统将其杀死,这并没有什么不同。如果它已退出/终止/未运行,则设备会在Google电话和其他许多设备上收到推送通知。但在我的情况下(手动强制退出应用程序),华为P8的默认电池节能设置禁止了此行为。在Google手机上,它在默认设置下运行良好。 –
感谢您的回复,我所经历的是,如果应用程序已被迫停止(从设置)没有通知显示。强制停止与非运行不同,强制停止时,应用程序不应该执行任何操作,直到用户主动启动它为止。你确认你可以看到通知,即使应用程序被强制停止? – lelloman