2017-06-13 129 views
1

我的问题是有关应用程序终止时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

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

未发送通知的问题是由于华为的EMUI和特定的节电设置造成的。在华为P8,P9以及其他许多带有EMUI的设备上,应用程序不会在未运行时收到通知。必须在节电设置中明确授权它们。

+0

我不明白你的答案,你的意思是,如果我强迫退出我的android应用程序(设置 - >应用程序 - > MyApp - >强制停止),我仍然可以收到推送消息?或者,也许你的手机无声地强制退出后台模式的应用程序? – lelloman

+0

据我所知,如果您退出应用程序或系统将其杀死,这并没有什么不同。如果它已退出/终止/未运行,则设备会在Google电话和其他许多设备上收到推送通知。但在我的情况下(手动强制退出应用程序),华为P8的默认电池节能设置禁止了此行为。在Google手机上,它在默认设置下运行良好。 –

+0

感谢您的回复,我所经历的是,如果应用程序已被迫停止(从设置)没有通知显示。强制停止与非运行不同,强制停止时,应用程序不应该执行任何操作,直到用户主动启动它为止。你确认你可以看到通知,即使应用程序被强制停止? – lelloman