CallKit 希望您在响铃的 voip 呼叫结束时报告,而无需直接与用户交互说明原因。
CXCallEndedReason
可以解释以下内容:
failed
remoteEnded
unanswered
answeredElsewhere
declinedElsewhere
这是否在系统中的任何地方使用?该文档没有解释为什么它需要原因,并且根据原因(据我所知),任何地方都没有 UI 指示。
这是我可以合理忽略的事情吗?
向系统提供您所知道的最多信息总是好的。一般来说,当系统询问你做某事的原因时,他们有一个reason来做这件事(双关语)。
我在Apple的官方文档中找到了这个:
连接 VoIP 呼叫时可能会出现很多问题,CallKit 可以轻松处理出现的问题。
- 如果发起呼叫的人挂断,请使用您的应用程序和服务器之间的网络连接来通知应用程序。在您的应用程序中,调用其
对象的reportCall(with:endedAt:reason:)
方法,并指定CXProvider
作为调用结束的原因。如果来电界面在屏幕上,CallKit 会更新界面以反映通话结束,并关闭界面。CXCallEndedReason.remoteEnded
- 如果呼叫接收者在应用程序与服务器建立连接之前应答,请不要立即履行发送到委托的
方法的CXAnswerCallAction
对象。相反,请等到建立连接后再实现该对象。当它等待您的应用程序满足请求时,来电界面会让用户知道呼叫正在连接,但尚未准备好。provider(_:perform:)
- 如果您的应用程序无法与服务器建立连接,请使用
选项调用reportCall(with:endedAt:reason:)
方法。如果当前屏幕上有来电界面,系统会更新它以指示呼叫失败。CXCallEndedReason.failed
根据 AT&T 开发者文档中的快速入门:
通知 CallKit 来电失败。
[...]
多次未能通知 CallKit,iOS 13 将阻止应用程序接收 VoIP 推送。
所以对于你的问题:
这是我可以合理忽略的事情吗?
我会回答“不”。