我正在开发一个通话应用程序,例如 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()
}
最佳答案
当应用程序在前台运行时,系统不会向您的应用程序提供调用屏幕。您必须自己提供通话屏幕。
通过使用CallKit
框架,完全由系统决定是否显示来电屏幕。据我所知,只有 3 次系统会为您的应用程序提供调用屏幕。
系统为 VoIP 调用提供调用屏幕的已知实例:
当电话收到来自 VoIP 推送通知的 VoIP 电话时 服务。使用 CallKit 框架,需要上报新的 传入调用屏幕到
CXProviderDelegate
对象。当手机有活跃的常规(手机)通话并收到 VoIP 时 称呼。如果您在 CXProviderConfiguration 中进行了设置,则此方法有效 您的 VoIP 应用程序允许处理多个调用。如果你允许打电话 分组和调用保持,系统会提供UI给用户处理 在常规通话和 VoIP 通话之间切换
当手机有一个事件的常规调用,并且用户开始拨出 从后台进行 VoIP 调用,这样,系统调用屏幕将 继续为用户提供 UI 以处理多个调用操作 (如果您允许在您的应用中处理多个调用,则可以)
总结是您需要自己为 VoIP 应用程序提供 UI,至少是拨出和事件调用屏幕,并根据通话状态相应地更新 UI。
关于ios - 从锁定屏幕接听电话后显示自定义 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54762705/