iOS Callkit和后台模式

时间:2018-03-13 17:57:13

标签: ios swift voip callkit

我正在编写一个VoIP应用程序,当应用程序在后台时使用CallKit。很大程度上一切正常,CallKit在拨打电话时在后台推送应用程序时做得很好。

据我所知,一旦在后台完成所有未完成的任务,应用程序就会进入休眠状态。并停止与外界沟通。现在应用程序恢复活着的唯一方法是当iOS操作系统告诉它时 - 当操作系统检测到传入的VoIP呼叫时,它会将此传递给应用程序,应用程序将恢复活动状态。接听电话。

我的问题是:偶尔我的应用程序崩溃或用户退出,在这种情况下,它无法接听电话。如果发生这种情况,如果它在后台,我怎么知道?我想通过某种方式告诉来电者他不能打电话,因为接收器无法到达? iOS操作系统仍然会尝试推送。

1 个答案:

答案 0 :(得分:1)

如果您正在使用PushKit(这实际上是实现静默推送通知的推荐方式),则在推送通知到达系统时将调用委托功能。

func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType, completion: @escaping () -> Void)

上面的函数将以

开头
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool

当推送通知到达时应用程序终止或崩溃。

VoIP推送通知的概念是以最节能的方式唤醒应用程序。因此,它可以帮助您唤醒订阅者以通知有关呼叫。