[英]iOS - Make WhatsApp voice/video call programmatically from my application
[英]How to disconnect the video/voice call when the application is in foreground/background/kill states iOS 13. Same as WhatsApp application
当应用程序处于前台/后台/终止状态时,我具有断开视频/语音呼叫的功能。 与 WhatsApp 应用程序中的语音通话相同
我使用 Callkit 显示默认传入 CallKit 屏幕将使用 VOIP 推送触发。
设想:
尝试使用静默推送通知Content-Available = 1并在发送推送有效负载时删除 Alert 键中的值。 它仍然没有在后台工作并杀死 State
现在的问题是我们如何在所有状态下触发 DidReceiveRemoteNotification 或者我们是否有任何其他概念来实现此功能。
请提出您宝贵的建议,如果您需要更多信息,请告诉我。
重要的是要了解 CallKit 本身并不处理呼叫连接,也不是所有可能的呼叫状态,即使它涉及呼叫发起和终止的整个过程。 因此,您经常使用某种形式的 SIP 实现。
无论如何,您必须有一些呼叫连接和音频/视频流的实现。
iOS 和 CallKit 不能为您开箱即用地做到这一点。
当您的应用程序通过推送通知收到来电通知时,您的应用程序会通过 SIP 或类似方式收到远程方挂断的通知。 但不应通过推送通知通知呼叫终止。 使用推送通知并没有那么大的意义,因为无论如何你已经有一个正在进行的呼叫连接。 然后,这种正在进行的连接通常用于发出本地或远程方正在挂机的信号,这无论如何都是 SIP 的一个特性。
在开始时使用推送通知来通知来电通知而不是持续 SIP 连接的原因是它可以节省电池寿命,而没有这样的好处会导致也使用推送通知来发出呼叫终止的信号。 因此,最好不要尝试使用推送通知来表示呼叫终止,而是使用SIP 的 BYE 消息。
然后,您的 SIP 处理代码应通过 CallKit 通知 iOS,方法是通过 reportCall 报告呼叫结束reportCall(with UUID: UUID, endedAt dateEnded: Date?, reason endedReason: CXCallEndedReason)
并自行处理实际的呼叫断开连接。
因此,由于 iOS/CallKit 不能也不会处理您的呼叫连接/断开,因此您必须始终自己执行此操作,或者使用像 PJSIP 这样的 SIP 库,这将为您完成大部分工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.