GCM/FCM 替代方案如何在内部工作以克服操作系统挑战

BVt*_*Vtp 5 android push-notification

对于没有 Google Play 服务的设备,有几个选项可以接收推送通知。这些选项可以是中国的百度、Pushy、Facebook 自己的推送通知等。

但我不明白如何才能克服这两个主要问题:

  1. 由于我们无法在设备级别拥有某种“SDK”(例如 Google Play 服务),因此我们唯一的选择是将其集成到应用程序级别。这意味着,我们无法像 GCM 那样为所有应用程序建立一个与推送服务器相互连接的套接字连接。相反,我们需要有与安装的应用程序数量一样多的活动套接字连接。
  2. 即使我们密切关注问题 1,为了使该连接能够在打瞌睡和应用程序待机状态下生存,我们也必须在前台服务中处理它们,这是保证其运行的唯一方法,即使在杀死应用程序之后,或者当设备进入 Doze 状态。但为什么我们在中国手机的通知栏中看不到前台服务的通知,或者使用 Pushy 的应用程序?他们只是定期轮询推送服务器吗?与 AlarmManager (用 setAndAllowWhileIdle 标记)和 BroadcastReceiver ?这将过于耗费资源且效率低下。