2

我开发了一个呼叫应用程序,例如 Whatapp 和 skype。我的问题是,当我的手机被锁定并且另一个用户打电话给我时,我会从锁定屏幕收到通知,如果我滑动通知,则会自动接听电话。(当然使用 callkit)

我只是想知道当我的手机解锁时是否有可能看到 callkitUI 屏幕与其他用户呼叫我时相同?

如果有人知道有关它的详细信息、解决方案或任何信息,那将非常有帮助。

我已经检查了以下文件。

苹果呼叫套件

使用 PUSHKIT + CALLKIT 增强您的 VOIP 应用程序用户体验

iOS 的 CallKit 教程

这是我的代码。

func provider(_ provider: CXProvider, perform action: CXAnswerCallAction) {

    action.fulfill()

    print("=================CXAnswerCallAction============")

    self.window = UIWindow(frame: UIScreen.main.bounds)
    let storyboard = UIStoryboard(name: "VoipAcceptUser", bundle: nil)    
    let initialViewController = storyboard.instantiateViewController(withIdentifier: "VoipAcceptUser")     
    self.window?.rootViewController = initialViewController
    self.window?.makeKeyAndVisible()

}
4

1 回答 1

1

当应用程序在前台运行时,系统不会向您的应用程序提供呼叫屏幕。您必须自己提供呼叫屏幕。

通过使用CallKit框架,完全由系统决定是否显示来电屏幕。据我所知,仅在 3 个实例中,系统会为您的应用程序提供呼叫屏幕。

系统为 VoIP 呼叫提供呼叫屏幕时的已知实例:

  1. 当电话收到来自 VoIP 推送通知服务的 VoIP 呼叫时。通过使用 CallKit 框架,您需要向对象报告新的来电屏幕CXProviderDelegate

  2. 当电话有活动的常规(蜂窝)呼叫并收到 VoIP 呼叫时。如果您在 CXProviderConfiguration 中设置了您的 VoIP 应用程序允许处理多个呼叫,则此方法有效。如果您允许呼叫分组和呼叫保持,系统将为用户提供 UI 来处理常规呼叫和 VoIP 呼叫之间的切换

  3. 当电话有一个活动的常规呼叫,并且用户从后台开始拨出 VoIP 呼叫时,系统呼叫屏幕将保持打开状态,为用户提供 UI 以处理多个呼叫操作(如果您已允许在您的应用程序)

总结是您需要自己为 VoIP 应用程序提供 UI,至少需要拨出和活动呼叫屏幕,并根据呼叫状态相应地更新 UI。

于 2019-03-07T07:59:09.777 回答