我已经开发了一个 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/