应用程序关闭时如何实时接听电话/消息

问题描述

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

问题是上面的方法耗电很大,是不能接受的。我还注意到,像 WhatsApp 和 Signal 这样著名的 VoIP 应用程序没有使用前台通知,但是,无论应用程序是否关闭,它们都会设法通知我们有关来电/消息的信息。我想知道如何实现相同的功能。有人能指出我正确的方向吗?

解决方法

这种App应该使用Push Notifications(参考:https://firebase.google.com/docs/cloud-messaging),整个系统使用ONE SINGLE socket连接:每个App都应该注册自己接收Push,然后当Server触发时(支持多种语言)通过带有示例/教程的 FCM)调用事件,然后一个特殊的“消息”被发送到应用程序(提供一些关于 IP 的信息或任何你想要的信息),以获取这些信息并以正确的方式行动。

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