从锁屏界面接听电话后显示自定义界面

4
我正在开发一个类似于WhatsApp和Skype的通话应用程序。我的问题是,当我的手机被锁定并且另一个用户给我打电话时,我会收到一个通知,如果我滑动通知,则自动接听电话(当然要使用CallKit)。 我想知道是否可能看到与解锁状态下另一个用户呼叫我的CallKit UI屏幕相同的屏幕? 如果有人了解详细信息、解决方案或任何相关信息,那将非常有帮助。 我已经查阅了以下文档:Apple CallKitENHANCE YOUR VOIP APP USER EXPERIENCE USING PUSHKIT + CALLKITCallKit 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个回答

1
系统在应用程序在前台运行时不会向您的应用程序提供呼叫屏幕,您必须自己提供呼叫屏幕。
通过使用CallKit框架,系统完全决定是否显示来电屏幕。我知道有三种情况下,系统会为您的应用程序提供来电屏幕。
已知系统为VoIP呼叫提供呼叫屏幕的情况:
  1. 当手机从VoIP推送通知服务接收到VoIP呼叫时。使用CallKit框架,您需要向CXProviderDelegate对象报告新的来电屏幕。

  2. 当手机有一个活动的常规(蜂窝)通话并接收到VoIP呼叫时。如果您允许处理多个呼叫,则此方法有效。如果您允许呼叫分组和呼叫保持,则系统将为用户提供UI以处理在常规和VoIP呼叫之间切换。

  3. 当手机有一个活动的常规通话,并且用户从后台开始发起一个即将进行的VoIP呼叫,这样,系统呼叫屏幕将保持打开,为用户提供UI以处理多个呼叫操作(如果您的应用程序允许处理多个呼叫)

总结一下,您需要为VoIP应用程序自己提供UI界面,至少包括呼出和活动通话屏幕,并根据通话状态相应地更新UI。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接