Android可靠的推送通知



我对Android编程是相对较新的,并花费了大量时间来阅读和测试有关服务和推送通知的所有内容。我需要我的应用程序向用户提供可靠的(在一分钟以下的交货时间)通知。为此,我有一些问题,但我仍然没有找到答案:

  1. 是FirebasecloudMessaging(FCM)仍然"不可靠"。关于2014年以来的这一说法,Google的连接刷新率每15分钟与WiFi进行一次,并且每28分钟进行一次移动 - 连接https://productforums.google.com/forum/forum/#!/forum/nexus/nexus/forulto/fslyqyrulto/lu2d3qe1mugj。仍然如此吗?火箱有比GCM更可靠的连接管理吗?我知道这并不意味着,只有在此时间之后才推出通知,但是当必须将警告或错误消息推向用户时,Die连接失败并在15分钟后重新建立的可能性对于我的用例不可接受。

  2. 为Android创建服务的最佳方法是什么?我的问题是,(尤其是使用API级/Android 6.0及其激进的电源管理)每次服务都会暂停或停止。即使是唤醒锁也不可靠,在一个小时后会以某种方式发布。是的,我可以尝试合并所有方法以重新激活电话或应用程序(计时器,警报,延迟处理程序,唤醒锁等)以保持连接,但是所有这些都可能失败,我的警告是没送到。我在这里错过了什么吗?

  3. 是否有可能为非根系设备创建一个不可能被系统杀死的戴蒙吗?是否有可能像看门狗一样创建某人,观察服务及其状态,并在必要时重新启动?

  4. 诸如Facebook或WhatsApp之类的大应用程序如何实现?Facebook仍在使用mqtt?

  5. 是否有实施此类服务的OpenSource项目?

1)通过GCM/FCM发送的通知仍然非常不可靠,不适合实时,关键任务交付。自2014年以来,心跳间隔略有下降,但是诸如WhatsApp和Facebook之类的流行应用程序仍然利用自己的推送通知解决方案,该解决方案使用XMPP和MQTT协议实施。这必须意味着FCM对于关键任务交付还不够可靠。

2)处理最近的Android版本中最新的省电优化,在维持推送通知的背景连接方面越来越困难。Doze模式将杀死您服务的网络连接性,而后台执行限制将在您的应用到后台时终止您的服务。

3)想到了前景服务,但这需要您的应用程序在服务运行时显示不可变的通知。只要它正在运行,该系统就不会终止您的前景服务,但是显而易见的缺点是您的应用必须显示此通知,用户可能会觉得烦人。否则,请尝试使用JobsCheduler API使您的服务适应新的电池优化功能。

4)如前所述,WhatsApp仍然使用XMPP,Facebook Messenger仍然使用MQTT。

5)您可以找到并拼凑出几个开源项目来实现这一目标,例如paho.mqtt.android客户端库和蚊子经纪人。

另外,请考虑付费产品(https://pushy.me/),该产品通过微型MQTT插座提供可靠的推送通知。SDK包括对最近的Android OS电池优化的支持。

全面披露 - 我创立了Pundy。

您可能需要在客户端上使用oksocket并解决问题。

您的问题在中国非常普遍,因为该国禁止FCM/GCM。中国开发的应用程序使用Oksocket通信库,并根据OKSOCKETCOOCT提供的TCP/IP传输协议实施通知,警报或RPC。

https://github.com/xuuhaoo/oksocket这是Github中的库。

相关内容

  • 没有找到相关文章

最新更新