【发布时间】:2018-09-19 10:46:03
【问题描述】:
我在我的 iOS 应用程序中使用 PushKit 和 CallKit 来发送和接收呼叫。
我的问题是,当应用程序被杀死并且我接到一个电话时,didReceiveIncomingPushWith 被调用,我使用该行显示一个本机通话屏幕
provider.reportNewIncomingCall(with: currentCallID, update: update, completion: { error in })
但是一旦调用此线路并出现原生调用屏幕,如果调用者取消调用,didReceiveIncomingPushWith 将不再调用。
奇怪的是,如果我评论了这一行
provider.reportNewIncomingCall(with: currentCallID, update: update, completion: { error in })
didReceiveIncomingPushWith 被完美调用。
有人有任何解释/解决方案吗?
编辑
我正在使用打开套接字的 XMPP 服务器,以防我在 didReceiveIncomingPushWith 方法中关闭此套接字,它可以工作(但会导致另一个问题,由于连接丢失,我无法回答)。
【问题讨论】:
-
你调用提供的完成处理程序吗?
-
是的,我打电话给
completion()didReceiveIncomingPushWith -
因为你没有调用 endCall 方法。
-
我必须收到来电者已取消的通知才能调用 endCall
-
在收到来自
PushKit的通知并显示本地通话屏幕后,您应该连接您的套接字,当您通过套接字而不是PushKit收到取消/结束通话通知时。只需调用reportCall 和densureElseWhere 并关闭您的来电屏幕。这将使您的工作更加轻松。
标签: ios iphone callkit pushkit