是否可以在 iOS 模拟器中使用 CallKit 接听电话?

Is it possible to receive calls using CallKit in iOS simulator?

在iOS中,可以使用CallKit's reportIncomingCall显示来电ui。

就我而言,这在物理设备中按预期工作。我的 iPhone 收到来电提醒,我可以接听电话或拒接电话。

但是,它似乎无法在 iOS 模拟器中运行。更具体地说,reportNewIncomingCall 方法调用本身成功,但随后立即结束(我什至没有看到任何调用警报)。此外,func provider(_ provider: CXProvider, perform action: CXEndCallAction) 从 CXProviderDelegate 中调用,这意味着调用已结束。

我无法在苹果官方文档中找到是否可以在 iOS 模拟器中测试 CallKit - reportIncomingCall。

奇怪的是,使用 reportOutgoingCallCXCallController 的去电似乎在模拟器中工作正常,因为我可以看到绿色状态栏显示在 iPhone 的顶部,当 CXStartCallAction 得到满足。

所以我唯一无法让它工作的是在 iOS 模拟器中使用 CallKit 接收呼叫。这是预期的行为吗?

CallKit 完全不能在 iOS 模拟器上运行,既不能接听电话也不能拨打电话。 在模拟器上启动任何包含 CXStartCallActionCXAnswerCallActionCXTransaction 将立即失败,NSError.Code 值为 CXErrorCodeRequestTransactionErrorUnknown(零)。 您将必须使用真实设备来测试您的 CallKit 应用程序。

是的,我在任何 Apple 文档中都找不到这一点。 this article中提到模拟器和真机的区别,没有提到CallKit。

另请注意,模拟器没有通话 UI(拨号盘和最近通话)