ios - 从锁定屏幕接听电话后显示自定义 UI
问题描述
我开发了一个呼叫应用程序,例如 Whatapp 和 skype。我的问题是,当我的手机被锁定并且另一个用户打电话给我时,我会从锁定屏幕收到通知,如果我滑动通知,则会自动接听电话。(当然使用 callkit)
我只是想知道当我的手机解锁时是否有可能看到 callkitUI 屏幕与其他用户呼叫我时相同?
如果有人知道有关它的详细信息、解决方案或任何信息,那将非常有帮助。
我已经检查了以下文件。
使用 PUSHKIT + CALLKIT 增强您的 VOIP 应用程序用户体验
这是我的代码。
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。
推荐阅读
- exception - Qt 或任何 C 应用程序中的异常处理
- google-sheets - Google表格中扩展行和列的多个标量产品
- javascript - 从另一个函数javascript调用子函数
- linux - 如何将所有表的定义转储到 PostgreSQL 中特定模式的文本文件
- c# - 从特定 URL SharePoint C# 获取文件时出错
- javascript - 如何在 react native 中解决这个问题:组件异常
- dask - 可以从 fastparquet 获得正确的统计数据
- ios - 如何在 swift 中使基类属性通用,以便与多种模型类型一起使用?
- python - 有太多 uwsgi OSError 消息
- python - 为什么我不能正确使用 pandas.DataFrame.plot.bar()?