CXCallEndedReason在iOS CallKit的reportCall(with:endAt:reason:)中如何使用?

问题描述 投票:0回答:1

CallKit 希望您在响铃的 voip 呼叫结束时报告,而无需直接与用户交互说明原因。

CXCallEndedReason
可以解释以下内容:

failed
remoteEnded
unanswered
answeredElsewhere
declinedElsewhere

这是否在系统中的任何地方使用?该文档没有解释为什么它需要原因,并且根据原因(据我所知),任何地方都没有 UI 指示。

这是我可以合理忽略的事情吗?

callkit
1个回答
0
投票

向系统提供您所知道的最多信息总是好的。一般来说,当系统询问你做某事的原因时,他们有一个reason来做这件事(双关语)。

我在Apple的官方文档中找到了这个:

连接 VoIP 呼叫时可能会出现很多问题,CallKit 可以轻松处理出现的问题。

  • 如果发起呼叫的人挂断,请使用您的应用程序和服务器之间的网络连接来通知应用程序。在您的应用程序中,调用其
    reportCall(with:endedAt:reason:)
    对象的
    CXProvider
    方法,并指定
    CXCallEndedReason.remoteEnded
    作为调用结束的原因。如果来电界面在屏幕上,CallKit 会更新界面以反映通话结束,并关闭界面。
  • 如果呼叫接收者在应用程序与服务器建立连接之前应答,请不要立即履行发送到委托的
    CXAnswerCallAction
    方法的
    provider(_:perform:)
    对象。相反,请等到建立连接后再实现该对象。当它等待您的应用程序满足请求时,来电界面会让用户知道呼叫正在连接,但尚未准备好。
  • 如果您的应用程序无法与服务器建立连接,请使用
    reportCall(with:endedAt:reason:)
    选项调用
    CXCallEndedReason.failed
    方法。如果当前屏幕上有来电界面,系统会更新它以指示呼叫失败。

根据 AT&T 开发者文档中的快速入门

通知 CallKit 来电失败。

[...]

多次未能通知 CallKit,iOS 13 将阻止应用程序接收 VoIP 推送。

所以对于你的问题:

这是我可以合理忽略的事情吗?

我会回答“不”。

© www.soinside.com 2019 - 2024. All rights reserved.