我开发了诸如Whatapp和 Skype。我的问题是,当我的手机被锁定并且另一个用户正在呼叫我时,从锁定屏幕上我会收到一条通知,如果我轻扫通知,则该呼叫会自动收到。(当然是使用callkit)
我只是想知道是否可以看到callkitUI屏幕与我的手机解锁时另一个用户给我打电话时的屏幕相同?
如果有人知道详细信息,解决方案或任何与此有关的信息,那将非常有帮助。
我已经检查了以下文件。
ENHANCE YOUR VOIP APP USER EXPERIENCE USING PUSHKIT + 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()
}
答案 0 :(得分:1)
当应用程序在前台运行时,系统不会将其呼叫屏幕提供给您的应用程序。您必须自己提供呼叫屏幕。
通过使用CallKit
框架,完全取决于系统确定是否显示来电屏幕。据我所知,只有3种情况,系统会为您的应用程序提供调用屏幕。
系统为VoIP呼叫提供呼叫屏幕的已知实例:
当电话从VoIP推送通知接收VoIP呼叫时
服务。通过使用CallKit框架,您需要报告新
CXProviderDelegate
对象的来电屏幕。
当电话进行有效的常规(蜂窝)通话并接收VoIP时 呼叫。如果您在CXProviderConfiguration中设置为 您的VoIP应用程序允许处理多个呼叫。如果您允许通话 分组和呼叫保持,系统将提供用户界面以供用户处理 在普通和VoIP通话之间切换
当电话具有正常的常规通话并且用户启动外拨时 从后台进行VoIP呼叫,这样,系统呼叫屏幕将 继续向用户提供UI来处理多个呼叫操作 (如果您已允许在您的应用中处理多个呼叫,则为ofc)
摘要是,您需要为VoIP应用程序自己提供UI,至少要提供呼出和活动呼叫屏幕,并相应地用呼叫状态更新UI。