如果某个应用程序在后台或终止并且收到了voip push,那么操作系统将启动它并运行它。
文档说:
“即使您的应用是,您的应用也会获得运行时来处理推送 在后台运作。“
有人知道这个运行时有多长,以及应用程序是否可以找出剩余时间?
如果一个应用程序在前台并移动到后台,那么如果它使用beginBackgroundTask()等,它可以获得30秒的执行时间。
我已经进行过实验,发现如果在应用程序已经处于后台时向应用程序发送静默推送,那么应用程序也可以在这种情况下使用beginBackgroundTask(),并且它还可以在30秒内执行并执行收到推送时做一些事情(它可以使用UIApplication.shared.backgroundTimeRemaining来查看剩余时间。)
但是如果提供了Voip推送而不是静默推送,则beginBackgroundTask()功能不起作用(当然因此UIApplication.shared.backgroundTimeRemaining不能用于确定剩余的执行时间),但是应用程序可以在背景和执行一些活动(上面引用的文档说它可以做)。
所以重复一下这个问题 - 苹果公司是否记录了收到Voip推送后运行多长时间?该应用程序可以找出剩余的时间吗?或者有些担心执行时间即将到期?
答案 0 :(得分:1)
1)Apple是否记录了收到Voip推送后运行的时间?
不,Apple在文档中没有此信息
2)应用可以查看剩余时间吗?
没有。当app启动时,它假定为在后台模式下执行。你将有大约30秒执行必要的任务。
3)或者有些警惕执行时间即将到期?
没有。至少没有文件化的方法来做到这一点。
答案 1 :(得分:0)
它是否记录了Apple在收到Voip推送时运行了多长时间?
不,没有关于你有多少时间的官方文件 收到后,
VoIP Push notification.
根据我的个人经验,您将时间延长至45秒 如果需要,使用长持续时间的声音文件。
应用可以查看剩余时间吗?或者让Waring认为执行时间即将到期?
不,没有官方文件或没有任何代表 找出剩余时间的方法。
我遇到了同样的问题,我使用多个问题克服了上述问题
VoIP Push
具有不同的参数。你可以实现如下。
根据我的要求,我必须在收到用户时显示通知 新来电。如果用户没有接听电话,那么我必须给出新的通知 未接来电。我的成就如下。
1) Generate local notification when received first VoIP Push.
2) Cancel already generated notification and generate new missed call notification for user.
我不确定,但如果工作也可以使用计时器。
答案 2 :(得分:0)
一旦你在didReceiveIncomingPushWithPayload
获得VOIP推送有效载荷,那么你必须安排声音文件的本地通知,根据声音文件的持续时间你的应用程序将在后台唤醒(当它处于终止模式时)。
声音文件最多允许30秒,并且没有进程知道待处理的时间。
UIApplication.shared.backgroundTimeRemaining
由于应用尚未从AppDelegate中醒来,因此无法获得剩余时间,因此VOIP委托方法在后台唤醒。
详情请参阅。
https://github.com/hasyapanchasara/PushKit_SilentPushNotification