我构建了一个VoIP呼叫应用程序,该应用程序与服务器保持持久连接以侦听任何传入呼叫。为此,我实施了后台服务。
但是自奥利奥(Oreo)以来,此运行代码由于引入了Background Execution Limits
而被破坏了。浏览论坛后,我发现有人在建议
将服务转换为JobService并让android对其进行调度
这样做,我的应用停止后将无法接听电话
在前台服务中运行操作
对于某些用户而言,在通知栏中看到持续的通知很烦人。因此,上述这些选项对我来说无法为Oreo修复代码。
WhatsApp如何在Background Execution Limits周围的Android设备(奥利奥及以后)中获得来电(VOIP)?
答案 0 :(得分:0)
有两种选择:
答案 1 :(得分:0)
(粘性)前景服务不受限制的影响。因此,您可以使用其中之一替换Oreo上的后台服务。
但是前台服务有两个缺点:与后台服务相比,前台服务为了回收资源而被系统杀死的可能性较小,因此影响了Android系统的自我修复能力。并且它们要求您显示永久通知。但是用户可以抑制该通知,从而在一定程度上减轻了这一缺点。
答案 2 :(得分:0)
我假设您正在使用SIP建立连接并发起呼叫。如果没有服务不断重新发送REGISTER,则服务器发送请求时,应用程序将不会收到INVITE。
解决此问题的方法是所谓的“推送通知策略”。它的工作方式如下:当服务器发送INVITE时,它还会向您的应用程序发送FCM通知,这将唤醒您的应用程序,然后将REGISTER发送到您的服务器,服务器将返回的调用分叉到您的应用程序。 Here is a video that better explains this strategy