我如何指定要接听电话的CXProviderDelegate将打开的UIViewController?

问题描述 投票:0回答:1

这个问题困扰着我大约两个星期。在SO,Apple的文档或Apple开发者论坛上,我找不到任何直接回答此问题的信息。我构建了一个支持VoIP的应用程序,并实现了PushKit,CallKit和CXProviderDelegate,它们在该应用程序中都可以正常工作。但是,如果用户在终止其应用程序后收到呼叫,则该呼叫将在CallKit和CXCallController上显示iOS的本机呼叫UI很好,但是一旦用户接听电话,它将打开该应用程序(如果设备已解锁,或在设备解锁后立即打开应用程序),但我找不到在我设计的Call UI上打开应用程序的方法。

我不确定需要在哪里显示Call UI。我试图在rootViewController(这是我的LoginVC)中构建一些逻辑,以检查它们是否在viewDidAppear(_:)中处于活动状态,但是,当以这种方式打开应用程序时,似乎未调用此函数。

我已经查阅了这些教程和SO文章:(没有一个引用此特殊情况)

Ray Wenderlich's CallKit Tutorial

CallKit iOS Swift Tutorial for VoIP Apps

Switching from CallKit UI to in-app UI

How to display a ViewController when answering a call with CallKit

swift voip callkit pushkit
1个回答
0
投票

[当用户接听电话时,该应用程序已在后台启动。

[我要做的是在NotificationCenterprovider(_:perform:)方法内触发一个操作(例如,使用回调或使用CXProviderDelegate),然后将显示您的呼叫UI。

func provider(_ provider: CXProvider, perform action: CXAnswerCallAction)
{
    guard callManager.callWithUUID(action.callUUID) != nil else {
        action.fail()
        return
    }
    presentCallUICallback(completion: { action.fulfill() })
}
© www.soinside.com 2019 - 2024. All rights reserved.