从锁定屏幕接听电话后显示自定义UI

时间:2019-02-19 09:24:11

标签: ios swift callkit cxprovider

我开发了诸如Whatapp和 Skype。我的问题是,当我的手机被锁定并且另一个用户正在呼叫我时,从锁定屏幕上我会收到一条通知,如果我轻扫通知,则该呼叫会自动收到。(当然是使用callkit)

我只是想知道是否可以看到callkitUI屏幕与我的手机解锁时另一个用户给我打电话时的屏幕相同?

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

我已经检查了以下文件。

Apple CallKit

ENHANCE YOUR VOIP APP USER EXPERIENCE USING PUSHKIT + CALLKIT

CallKit Tutorial for iOS

这是我的代码。

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()

}

1 个答案:

答案 0 :(得分:1)

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

通过使用CallKit框架,完全取决于系统确定是否显示来电屏幕。据我所知,只有3种情况,系统会为您的应用程序提供调用屏幕。

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

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

  2. 当电话进行有效的常规(蜂窝)通话并接收VoIP时 呼叫。如果您在CXProviderConfiguration中设置为 您的VoIP应用程序允许处理多个呼叫。如果您允许通话 分组和呼叫保持,系统将提供用户界面以供用户处理 在普通和VoIP通话之间切换

  3. 当电话具有正常的常规通话并且用户启动外拨时 从后台进行VoIP呼叫,这样,系统呼叫屏幕将 继续向用户提供UI来处理多个呼叫操作 (如果您已允许在您的应用中处理多个呼叫,则为ofc)

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