是否可以在 iOS 模拟器中使用 CallKit 接听电话?
Posted
技术标签:
【中文标题】是否可以在 iOS 模拟器中使用 CallKit 接听电话?【英文标题】:Is it possible to receive calls using CallKit in iOS simulator? 【发布时间】:2020-12-30 03:19:52 【问题描述】:在 ios 中,可以使用 CallKit's reportIncomingCall 显示来电 ui。
就我而言,这在物理设备中按预期工作。我的 iPhone 收到来电提醒,我可以接听或拒绝来电。
但是,它似乎在 iOS 模拟器中不起作用。更具体地说,reportNewIncomingCall
方法调用本身成功,但随后它立即结束(我什至没有看到任何调用警报)。另外,func provider(_ provider: CXProvider, perform action: CXEndCallAction)
被CXProviderDelegate调用,表示调用已经结束。
我在苹果官方文档中找不到是否可以在 iOS 模拟器中测试 CallKit - reportIncomingCall。
奇怪的是,reportOutgoingCall
和 CXCallController
的拨出电话似乎在模拟器中运行良好,因为当CXStartCallAction
完成时,我可以看到绿色状态栏出现在 iPhone 的顶部。
所以我唯一不能让它工作的是在 iOS 模拟器中使用 CallKit 接听电话。这是预期的行为吗?
【问题讨论】:
【参考方案1】:CallKit 完全不能在 iOS 模拟器上运行,既不能接听电话,也不能拨打电话。
在模拟器上启动任何包含CXStartCallAction
或CXAnswerCallAction
的CXTransaction
将立即失败,NSError.Code
值为CXErrorCodeRequestTransactionErrorUnknown
(零)。
您必须使用真实设备来测试您的 CallKit 应用程序。
是的,我在任何 Apple 文档中都没有提到这一点。 this article提到模拟器和真机的区别,没有提到CallKit。
另请注意,模拟器没有通话 UI(拨号盘和最近通话)
【讨论】:
以上是关于是否可以在 iOS 模拟器中使用 CallKit 接听电话?的主要内容,如果未能解决你的问题,请参考以下文章
CallKit + WebRTC:在 iOS 中按下锁定/电源按钮时 CallKit 通话断开