我现在在玩CallKit。我已经下载了SpeakerBox示例,我有自己的示例,该示例使用来自SpeakerBox的自定义SIP和WebRTC以及CallKit代码。
我注意到,在SpeakerBox应用程序中,如果您启动本地虚拟呼叫,然后有另一个来电(没有区别,如果是模拟SpeakerBox传入一个或真实的移动呼叫(,您将始终(OK,在99.9%的情况下(在系统提供的UI呼叫屏幕上获得"保持并接受"和"结束和接受"按钮。
但是对于我的应用程序,事情如下:
- 我启动我的VoIP应用程序(设备A(并拨打一些手机号码(设备B(
- 我在设备 B 上接听来电
- 我从另一个手机号码(设备 C(呼叫设备 A
- 我收到系统调用 UI,但只有"接受"和"拒绝"按钮。所以我不能把目前的电话搁置。
这是可以在应用程序内部的 CallKit 中配置的还是可以在应用程序本身中配置的?
当您不向系统(设备 A(报告设备 B 已接受呼叫时,会发生这种情况。然后,如果您接受来自设备 C 的新传入呼叫,您将结束与设备 B 的当前呼叫。
要解决此问题,当设备 A 收到有关 B 接受该呼叫的通知时,您必须使用以下命令:
[provider reportOutgoingCallWithUUID:callUUID connectedAtDate:[NSDate date]];
哪里:
- 提供商是 CXProvider 在
-(void) provider:(CXProvider *)provider performStartCallAction:(CXStartCallAction *)action
上收到的 - callUUID 是设备 A 中呼叫的 UUID。
我希望它对您有所帮助。