当应用程序收到 Pushkit VoIP 推送时,它能获得多少运行时间?



如果应用程序在后台或终止并且收到VoIP推送,则操作系统将启动并运行它。

文档说:

"你的应用程序

被赋予运行时来处理推送,即使你的应用程序是 在后台操作。

有谁知道这个运行时有多长,以及应用程序是否可以找出剩余多长时间?

如果一个应用程序位于前台并移动到后台,那么如果它使用 beginBackgroundTask() 等,它可以获得 30 秒的执行时间。

我进行了实验,发现如果在应用程序已经在后台时将静默推送传递到应用程序,那么应用程序也可以在这种情况下使用 beginBackgroundTask(),并且当它收到推送时,它还有 30 秒的时间来执行和执行某些操作(它可以使用 UIApplication.shared.backgroundTimeT剩余来查看还剩多少时间。

但是,如果传递了VoIP推送而不是静默推送,则beginBackgroundTask()功能不起作用(当然,因此UIApplication.shared.backgroundTimeRemain不能用于确定剩余的执行时间),但是应用程序可以在后台运行并执行一些活动(这是上面引用的文档所说的它可以做的)。

所以重复这个问题 - 苹果是否记录了它在收到 Voip 推送时运行了多少时间? 应用程序可以找出还剩多少时间吗? 或者得到一些警告,执行时间即将到期?

> 1)苹果是否记录了它在收到VoIP推送时运行了多少时间?

不,Apple 在文档中没有此信息

2)应用程序可以找出还剩多少时间吗?

不。当应用程序启动时,它假定为在后台模式下执行。您将有大约 30 秒的时间执行必要的任务。

3)或者得到一些警告,执行时间即将到期?

不。至少没有办法做到这一点。

苹果是否记录了它在收到VoIP推送时运行了多少时间?

不,没有关于您有多少时间的官方文件 已经得到,当收到VoIP Push notification.

根据我的个人经验,您将延长时间长达 45 秒 如果需要,使用长时间的声音文件。

应用程序可以找出还剩多少时间吗?或者得到一些警告,执行时间即将到期?

否,没有官方文件或没有任何代表 方法查找剩余时间。

我遇到了同样的问题,我使用多个克服了上述问题VoIP Push具有不同的参数。您可以按如下方式实现它。

根据我的要求,我必须在用户收到时显示通知 新来电。如果用户没有接听电话,那么我必须发出新的通知 对于未接来电。我实现了如下。

1) Generate local notification when received first VoIP Push. 
2) Cancel already generated notification and generate new missed call notification for user.

我不确定,但如果工作,您也可以使用计时器。

一旦您在didReceiveIncomingPushWithPayload中获得 VOIP 推送有效负载,那么您必须使用声音文件安排本地通知,根据声音文件持续时间,您的应用程序将在后台唤醒(当它处于终止模式时)。

声音文件允许的最长为 30 秒,并且没有过程知道有多少时间待处理。

UIApplication.shared.backgroundTimeRemaining

由于应用程序尚未从应用程序代表唤醒,因此无法获得剩余时间,它通过 VOIP 代表方法在后台唤醒。

请参阅更多详细信息。

https://github.com/hasyapanchasara/PushKit_SilentPushNotification

最新更新