iOS Callkit 和后台模式

标签 ios swift voip callkit

我正在编写一个 VoIP 应用程序,它在应用程序处于后台时使用 CallKit。基本上一切正常,CallKit 可以很好地在来电期间在后台推送应用程序。

据我了解,一旦进入后台并且所有未完成的任务都已完成,该应用程序就会进入“休眠”状态并停止与外界通信。现在让应用程序恢复活力的唯一方法是当 iOS 操作系统告诉它时——当操作系统检测到传入的 VoIP 调用时,它将把它传递给应用程序并且应用程序将恢复活力并且接电话。

我的问题是:偶尔我的应用程序会崩溃或用户被注销,在这种情况下它无法接听电话。如果发生这种情况时它在后台,我怎么知道?我想要某种方式告诉调用者他无法调用,因为接收者无法访问? iOS 操作系统仍会尝试推送。

最佳答案

如果您正在使用 PushKit(这实际上是实现静默推送通知的推荐方法),当推送通知到达系统时,将调用下面的委托(delegate)函数。

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

上面的函数前面会有

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

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

VoIP 推送通知的概念是以最节能的方式唤醒应用程序。因此,它将帮助您唤醒订户以通知调用。

关于iOS Callkit 和后台模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49262819/

相关文章:

ios - 核心蓝牙 - 应用程序终止并在后台启动后,startScanningForPeripherals 在后台不工作

ios - 将 NSManagedObject 从一个 View Controller 传递到另一个 View Controller

ios - 将 UITableView 分成固定数量的单元格

ios - 检查保存到相机胶卷是否成功

java - 有没有免费的android voip api

带有推送套件的 IOS voip 应用程序

ios - UICollectionView 自定义单元格布局

IOS/objective-C/ swift /语音 : Specify Locale when declaring SFSpeech Recognizer variable

ios - Objective-C:NSMutableArray 的未转换元素返回意外类型

ios - 使用 Agora Kit 进行语音通话