ios - 拒绝来电推送后无法处理取消VOIP推送

标签 ios push-notification apple-push-notifications callkit

我已经开发了一个 VOIP 调用应用程序,它使用 pushkit 进行 VOIP 推送通知。我们的通知服务器旨在通过 VOIP 推送发送所有取消通知以及新来电通知(目前无法更改此行为)。由于在 iOS 13 发布后,必须将所有传入的推送通知报告给 callkit。在某些情况下,我无法向 callkit 报告取消 PUSH 通知,最终导致应用程序崩溃

场景:

如果用户拒绝来电PUSH通知(即基本拒绝来电),通知服务器紧接着下发取消PUSH通知。但是由于新来电已经被拒绝,没有active callId上报,所以没办法向callkit上报cancel PUSH通知。因此,未报告取消推送会导致应用内崩溃。这确实发生在所有没有事件/未决调用且客户端推送取消通知的情况下。

请帮我解决这个问题。

最佳答案

正如您所说:从 iOS 13 开始,必须为收到的每个 VoIP 推送报告新的来电。

没有办法解决这个问题。如果你不能改变你的服务器的行为,你唯一能做的来避免崩溃(以及后续 VoIP 推送传输的阻塞)是报告一个虚假的调用来让 PushKit 开心并立即终止它。

let callId = UUID()
cxProvider.reportNewIncomingCall(
    with: callId,
    update: callUpdate,
    completion: { [weak self] error in
        completion()
        self?.cxProvider.reportCall(with: callId, endedAt: nil, reason: .failed)
})

关于ios - 拒绝来电推送后无法处理取消VOIP推送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65343098/

相关文章:

swift - 从远程通知打开 ViewController

swift - Azure 通知中心无法注册具有可用内容的模板

ios - 当 iPhone 重新上线时,推送通知未发送

node.js - 在一个连接中从 node.js 向多个用户发送苹果推送通知

ios - 如何在 iOS 应用程序和 macOS 应用程序之间共享数据?

android - 从 JavaScript,触发 native 代码功能

ios - 如何从 CocoaAsyncUDPSocket 获取地址

android - 解析复杂json数据时出现 flutter 问题

android - 当我的移动应用程序向我的服务器报告它们的设备 token 时,我应该如何处理身份验证?

PHP 循环操作