我构建了一个 VoIP 调用应用程序,该应用程序与服务器保持持久连接以收听任何来电。我实现了一个后台服务来做到这一点。
但是自从奥利奥之后,这个运行代码现在因为Background Execution Limits的引入而被破坏了。
看了论坛后,发现有些人在建议
这样做,我的应用程序在停止时将无法接听电话
某些用户在通知栏中看到不断的通知很烦人。因此,上述这些选项对我修复 Oreo 代码不起作用。
WhatsApp 如何在 Android(Oreo 及更高版本)中获取传入 (VOIP) 调用 Background Execution Limits ?
最佳答案
我假设您正在使用 SIP 来建立连接并发起调用。如果没有服务不断地重新发送 REGISTER,当服务器发送它们时,应用程序不会收到 INVITE。
此问题的解决方法是所谓的“推送通知策略”。它的工作原理如下,当服务器发送 INVITE 时,它还会向您的应用程序发送 FCM 通知,这会唤醒您的应用程序,然后向您的服务器发送一个 REGISTER,作为返回,它将调用 fork 到您的应用程序。 Here is a video that better explains this strategy
关于background - Whatsapp 或电报等应用程序如何监听 Android 上的来电/消息事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57035519/