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

Kan*_*jit 5 background xmpp sip android-service android-8.0-oreo

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

但是自从 Oreo 之后,由于引入了后台执行限制,这个运行代码现在被破坏了

看了论坛,发现有些人在说

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

    这样做,我的应用程序在停止时将无法接听电话

  2. 在前台服务中运行您的操作

    某些用户在通知栏中看到不断的通知很烦人。因此,上述这些选项对我修复 Oreo 代码不起作用。

WhatsApp 如何在 Android(Oreo 及更高版本)中获取传入 (VOIP) 呼叫以解决后台执行限制

use*_*814 5

我假设您正在使用 SIP 建立连接并发起呼叫。如果没有不断重新发送 REGISTER 的服务,应用程序在服务器发送 INVITE 时不会收到 INVITE。

此问题的解决方法是所谓的“推送通知策略”。它的工作原理如下,当服务器发送 INVITE 时,它还会向您的应用程序发送 FCM 通知,这会唤醒您的应用程序,然后将 REGISTER 发送到您的服务器,作为回报,服务器分叉对您的应用程序的调用。这是一个视频,可以更好地解释此策略


Woj*_*tek 3

有两种选择:

  • 使用平台推送服务(APNS或FCM)
  • 保持持久的套接字连接并将应用程序排除在电池优化之外。