background - Whatsapp 或电报等应用程序如何监听 Android 上的来电/消息事件?

标签 background android-service xmpp sip android-8.0-oreo

我构建了一个 VoIP 调用应用程序,该应用程序与服务器保持持久连接以收听任何来电。我实现了一个后台服务来做到这一点。

但是自从奥利奥之后,这个运行代码现在因为Background Execution Limits的引入而被破坏了。

看了论坛后,发现有些人在建议

  • 将 Service 转换为 JobService 并让 android 调度它

    这样做,我的应用程序在停止时将无法接听电话
  • 在前台服务中运行您的操作

    某些用户在通知栏中看到不断的通知很烦人。因此,上述这些选项对我修复 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/

    相关文章:

    java - GCM 连接错误

    ios - 触发显着位置变化更新所需的行程距离和给定位置的准确性

    ios - 是否可以使用 XMPP 框架 iOS 更改 ejabber jId

    android - xmpp facebook 不发送消息

    android - MediaPlayer 服务在 Android Studio 中不工作

    android - 使用 android :protectionLevel ="signature" 的问题

    java - 如何将 LocalBroadcast 从 BroadcastReceiver 发送到正在运行的服务?

    html - 噪音背景,我该如何实现?

    powershell - Powershell 中的后台作业

    java - 如何在 Android 中以编程方式设置背景可绘制对象