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

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

}

最佳答案

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

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

系统为 VoIP 调用提供调用屏幕的已知实例:

  1. 当电话收到来自 VoIP 推送通知的 VoIP 电话时 服务。使用 CallKit 框架,需要上报新的 传入调用屏幕到 CXProviderDelegate 对象。

  2. 当手机有活跃的常规(手机)通话并收到 VoIP 时 称呼。如果您在 CXProviderConfiguration 中进行了设置,则此方法有效 您的 VoIP 应用程序允许处理多个调用。如果你允许打电话 分组和调用保持,系统会提供UI给用户处理 在常规通话和 VoIP 通话之间切换

  3. 当手机有一个事件的常规调用,并且用户开始拨出 从后台进行 VoIP 调用,这样,系统调用屏幕将 继续为用户提供 UI 以处理多个调用操作 (如果您允许在您的应用中处理多个调用,则可以)

总结是您需要自己为 VoIP 应用程序提供 UI,至少是拨出和事件调用屏幕,并根据通话状态相应地更新 UI。

关于ios - 从锁定屏幕接听电话后显示自定义 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54762705/

相关文章:

ios - 使用 Swift 的 CallKit

ios - 使用 UITableView 调整 UICollectionView 大小,并以动态标题作为单元格

ios - 持续时间 Callkit 后调用超时函数

iphone - 在 Xcode 4.2 和 iOS SDK 5.0 中使用 gcc 4.2

ios - 创建自定义弹出窗口/警报 UIView/UIViewController 的正确方法

swift - 将 Codable 用于 NSAttributedString 时出错

swift - 如何在swift中使用类属性?

ios - 如何在 UIViewcontroller 中访问已安装的 pod 库宏字符串?

ios - "ionic run ios"如何添加配置文件

javascript - Apple 会拒绝下载额外 JavaScript 的 Cordova 应用程序吗?