原因:“杀死应用程序,因为它在收到PushKit VoIP推送回调后从未向系统发布传入呼叫." [英] reason: 'Killing app because it never posted an incoming call to the system after receiving a PushKit VoIP push callback.'

查看:739
本文介绍了原因:“杀死应用程序,因为它在收到PushKit VoIP推送回调后从未向系统发布传入呼叫."的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在寻找解决方案,但是我什么都没找到.我的应用程序仅接收VoIP推送,而在iOS 13之后,当应用程序处于后台模式时,我将无法再接收推送.我看了其他问题,但无法通过提出的解决方案解决我的问题. 有人可以帮助我吗?

I'm looking for solutions but I has find nothing yet. My app receives only VoIP pushes and after iOS 13 I'm not able to receive push when the app is in background mode anymore. I looked other questions but I was not able to solve my problem with solutions proposed. There's someone who can help me?

在iOS 13.0和更高版本上,必须使用CallKit框架在收到传入的IP语音呼叫时报告它们,并且在didReceiceIncomingPush()方法执行完之前,必须使用CallKit框架进行报告,否则系统将终止您的应用程序.

On iOS 13.0 and later, incoming Voice over IP calls must be reported when they are received and before the didReceiceIncomingPush() method finishes execution, using the CallKit framework, or the system will terminate your app.

反复无法报告呼叫可能会阻止您的应用接收更多来电通知.

Repeatedly failing to report calls may prevent your app from receiving any more incoming call notifications.

基本上,您不能再将VoIP推送用于非VoIP消息传递,而将需要使用常规的推送通知.

Basically, you can no longer use VoIP pushes for non VoIP messaging, and will need to use regular push notifications for those.

我阅读了此公告,但是在我的应用程序中,对于特定类型的推送VoIP,我无法使用功能reportNewIncomingCall(),因为它需要以下参数:uuid,handle,hasVideo ecc. 这些参数不存在于有效载荷中.

I read this announce but in my app for particular types of push VoIP I can't use function reportNewIncomingCall() because it requires params like: uuid, handle, hasVideo ecc. And these params are not present in the payload.

推荐答案

从iOS 13开始,您只能使用VoIP推送来报告来电.对于不是来电的推送,您必须使用其他选择(请参阅以下

Since iOS 13 you can only use VoIP pushes for reporting incoming calls. For pushes that are not incoming calls, you must use other alternatives (take a look at this answer here).

反复无法报告呼叫可能会阻止您的应用接收更多来电通知.

Repeatedly failing to report calls may prevent your app from receiving any more incoming call notifications.

根据我的测试,在仅报告两次或3次后,它似乎阻止了所有VoIP推送,并且将在大约24小时内保持阻止状态.

From my tests, it seemed to block all VoIP pushes after failing to report only 2 or 3 times, and it would stay blocked for around 24h.

因为它需要以下参数:uuid,handle,hasVideo ecc.这些参数不存在于有效载荷中

because it requires params like: uuid, handle, hasVideo ecc. And these params are not present in the payload

如果收到新呼叫的VoIP推送,但没有上面列出的必需信息,则可以使用虚拟"值初始化呼叫,然后更新它们.例如,将remoteHandle设置为CXHandle(type: .generic, value: "Connecting..."),然后使用正确的值对其进行更新:

If you receive a VoIP push for a new incoming call, but stil don't have the required info you listed above, you can initialize the call with "dummy" values, and later update them. As for example, setting the remoteHandle to CXHandle(type: .generic, value: "Connecting...") and later updating it with the correct value:

cxCallUpdate.remoteHandle = CXHandle(type: .emailAddress, value: "email@mail.com")
cxProvider.reportCall(with: callUid, updated: cxCallUpdate)

这篇关于原因:“杀死应用程序,因为它在收到PushKit VoIP推送回调后从未向系统发布传入呼叫."的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆