如何在应用关闭时实时接收calls/messages

How to receive calls/messages real-time when the application is closed

我正在开发一个以 SIP 作为信令协议的 VoIP 应用程序。我已经实现了消息传递和调用功能,当应用程序位于前台时它们可以工作。为了让应用程序在关闭时监听来电和消息接收,我创建了一个前台通知,以便应用程序始终在前台。

问题是上述方法耗电量大,无法接受。我还注意到,WhatsApp 和 Signal 等著名的 VoIP 应用程序并未使用前台通知,但无论应用程序是否关闭,它们都会设法通知我们有关传入 calls/messages 的信息。我想知道如何实现相同的功能。有人能给我指出正确的方向吗?

这种App应该使用Push Notifications(参考:https://firebase.google.com/docs/cloud-messaging),对整个系统使用ONE SINGLE socket connection:每个App都应该注册自己接收Push,然后当服务器触发(很多语言FCM 支持 examples/tutorials) 调用事件,然后将一条特殊的“消息”发送到应用程序(提供有关 IP 的一些信息或您想要的任何信息),获取这些信息并以正确的方式执行操作。

不幸的是,FCM 在每月发出几千次通知后要求付款。 还有其他类似的在线服务,但这些服务需要付费,因为它们需要处理同时连接的许多用户,并且需要硬件和带宽。