【问题标题】:With iOS13, is it allowed to report CXCallUpdate or CXEndCallAction when a VoIP Push is received?iOS13 是否允许在收到 VoIP Push 时报告 CXCallUpdate 或 CXEndCallAction?
【发布时间】:2019-10-16 13:08:11
【问题描述】:

不知道是否允许在收到VoIP Push时在下面的方法中报告CXCallUpdateCXEndCallAction

func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, forType type: PKPushType) {
  // report new incoming call
}

官方文档只提到在该块中报告 newNewIncomingCall here。这是文档的相关部分。

当链接到 iOS 13 SDK 或更高版本时,您的实现 此方法必须向 CallKit 报告 VoIP 类型的通知 框架通过调用 应用程序的 reportNewIncomingCall(with:update:completion:) 方法 CXProvider 对象。

提前感谢您的帮助。

【问题讨论】:

    标签: swift push voip ios13 callkit


    【解决方案1】:

    您可能知道,在 iOS 13 及更高版本上,您必须在收到 VoIP 推送时向 CallKit 报告呼叫。但是,只要您报告了呼叫并且呼叫仍然处于活动状态,您就可以接收任意数量的 VoIP 推送,并在 pushRegistry(:didReceiveIncomingPushWith:type:) 内做任何您想做的事情。

    【讨论】:

    • 所以如果我错了请纠正我,你的意思是如果我已经向 CallKit 报告了来电(通过 VoIP 推送)并且如果它仍然处于活动状态,我仍然可以接收其他相关的 VoIP 推送到那个电话(比如 callUpdate、callEnd),我不必向 CallKit 报告那个通知,对吗@Marco?
    • 没错。如果您已经有活动呼叫,则不必调用 reportNewIncomingCall(with:update:completion:) 方法。
    • 我的意思不是报告incomingCall,我的意思是例如报告CXCallEndAction。
    • 我的意思是:当你没有通话时,你必须拨打reportNewIncomingCall(with:update:completion:),但是当你有通话时,当你收到推送时,你可以做任何你想做的事情。
    • 但是当我们在报告incomingCall后没有向CallKit报告其他VoIP推送时,我们遇到了iOS阻止我们的应用程序接收VoIP推送,但我不确定这是否是官方行为。
    【解决方案2】:

    似乎描述应如何处理 VoIP 推送的相关文档刚刚在 Apple 官方文档网站上进行了更新。

    它说除了来电外,不要向应用程序发送任何其他 VoIP 推送,这意味着一旦收到 VoIP 推送,我们就无法报告 CXCallUpdate 或 CXEndCallAction。

    文档的相关部分可见下方

    发送初始推送通知后,请勿发送其他推送通知以取消通话或向您的应用传达新的详细信息。相反,直接通过您在应用程序和服务器之间建立的网络连接与应用程序通信。使用现有网络连接通常比发送推送通知要快,如果网络条件较差,APN 可能无论如何都无法向设备发送推送通知。

    这里也是刚刚更新的官方文档

    https://developer.apple.com/documentation/pushkit/responding_to_voip_notifications_from_pushkit?language=objc

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-25
      • 1970-01-01
      • 2020-06-02
      • 2019-08-17
      • 2012-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多