2017-06-15 63 views
0

我使用CallKit开发VoIP应用程序。带有两个来电的CallKit

在用户收到两个来电并且他/她接受他们中的一个的情况下,另一个将被关闭。

例如报告都来电:

reportInComingCall uuid: 70D506FB-6A9D-4111-8828-35DB8F330A26 
reportInComingCall uuid: 129A6D67-AC6A-480E-BCD7-ED14F7961CE5 

当用户接受他们中的一个,我得到这个行动从CallKit:

perform action: CXEndCallAction uuid: 129A6D67-AC6A-480E-BCD7-ED14F7961CE5 
perform action: CXAnswerCallAction uuid: 70D506FB-6A9D-4111-8828-35DB8F330A26 

问:是否有可能接受没有结束一次通话另一个?

最后,我需要以下场景: 当我接受一个电话时,另一个电话会一直保持,直到我挂断第一个电话。 CallKit向我展示了另一个我可以接受它的例子。

拉尔夫

+0

嗨拉尔夫,在这个项目中https://github.com/opentok/CallKit/tree/master/CallKitDemo SpeakerboxCallManager.swift用于添加在队列中多次调用。在reportIncomingCall()方法中,您可以在队列中添加呼叫self.callManager.addCall(call),因此当您将获得另一个呼叫时,CallKit会要求您放弃第一个呼叫或接受当前呼叫,希望我的回答对您有用。 –

回答

0

系统将让用户决定如何解决问题。根据选择,它会将多个操作合并到一个CXTransaction中。例如,如果用户选择结束正在进行的呼叫并应答新呼叫,则系统将为前者创建CXEndCallAction,为后者创建CXStartCallAction。这两个操作都将被包装到一个事务中并发送给提供者,后者将单独处理它们。因此,如果您的应用程序已经知道如何完成个别请求,那么无需进一步操作!

您可以通过解决上述情况来测试它;通话清单将反映您的选择。该应用程序一次只能处理一个音频会话。如果您选择继续通话,另一个会自动保持。

欲了解更多信息,你可以按照that tutorial