【发布时间】:2021-01-12 14:31:16
【问题描述】:
我正在开发一个使用 SIP 作为信令协议的 VoIP 应用程序。我已经实现了消息传递和调用功能,它们在应用程序处于前台时工作。为了让应用在关闭时监听来电和消息接收,我创建了一个前台通知,以便应用始终处于前台。
问题是上述方法消耗大量电力,这是不可接受的。我还注意到,著名的 VoIP 应用程序(如 WhatsApp 和 Signal)没有使用前台通知,但无论应用程序是否关闭,它们都会设法通知我们来电/消息。我想知道如何实现相同的功能。有人能指出我正确的方向吗?
【问题讨论】:
-
WhatsApp 和类似的应用程序使用推送通知(参考:firebase.google.com/docs/cloud-messaging)在它们应该接收消息或呼叫时触发应用程序的方法。将适当的推送通知发送到设备,提供有关要引发的事件的信息,并且应用程序以正确的方式运行。实现取决于您的前台应用程序当前如何侦听传入呼叫: - Peer2Peer 连接到达它并且应该响应? - 应用程序对保持语音呼叫的服务器执行轮询操作,直到应用程序回答它?
-
@emandt 感谢您的参考。实际上,当一方拨打另一方的SIP地址时,SIP服务器会解析接收方的IP地址,并在接收方一侧注明。当这种握手发生时,服务器的交互就基本结束了。然后只有对等连接。有什么想法吗?
-
好的。 App如何从Server接收呼叫信息(呼叫者的IP地址)?通过投票?通过推送通知?你写过关于电源的文章,所以我想通过按间隔轮询服务器....我是对的吗?
-
是的,当然是通过投票
标签: android real-time sip voip