安卓推送通知可靠吗?

18

我想知道是否可以使用推送通知消息而不是服务,或者换句话说,推送通知的传递是否完全可靠。我知道 iOS 不可靠,但我不确定 Google 是否保证传递。请给我一些启示。


你认为什么是可靠的? - tyczj
1
谷歌也无法保证交付;据我所知,没有人能够做到。 - tyczj
你具体想做什么? - Rohit5k2
我正在考虑开发一个服务,帮助那些在街上遇到故障而没有救援车可用的人们。如果服务器需要等待超过30分钟才能派出一辆救援车,那么这个服务将会无用地消耗电池。我认为,如果通知传递失败率在1000次中只有1次左右,那么我可以使用推送通知。 - lm2a
4个回答

10
抱歉,标准的GCM推送通知是一种尽力而为的服务,这一点可以从Google官方文档中了解到(https://developers.google.com/cloud-messaging/concept-options)。引用他们的话说:“换句话说,对于必须立即发送或永不发送的消息,GCM会保证尽力而为。”
如果您正在寻找可靠的推送消息传递API,则可以尝试使用Catapush。我们通过使用XMPP协议(如Whatsapp所做的那样)添加您自己的实时后台连接来与设备进行通信,因此能够更快速地在最关键的情况下传递消息。此外,我们跟踪每条消息的实时状态(已发送、已交付、已阅读等),使您的系统能够实时作出反应。

9

由于GCM基础架构的各种问题,通过GCM / FCM发送的Android推送通知不可靠[1][2][3]。推送通知可能会延迟、被限速、在传输中丢失或按发送顺序到达。

您可以使用其他替代的推送通知网关,这些网关对于您的时间关键型操作需求更加可靠。

您可以尝试Pushy (https://pushy.me/),这是一个为Android应用提供高度可靠的推送通知网关的服务,它独立于GCM工作,使用自己的后台MQTT连接。

完全透明披露:我是Pushy的创始人。


嘿,Pushy先生,能否保证通过Pushy交付?我需要向特定设备发送推送通知,并立即告知是否已经成功发送。 - Daniel Wilson
虽然没有任何推送通知网关可以保证传递(因为有太多的因素超出我们的控制,例如不可靠的蜂窝连接/无信号/设备关闭/设备处于省电模式等),但我们提供了一个通知状态API,让您可以检查设备是否收到通知:https://pushy.me/docs/api/notification-status - Elad Nava
1
谢谢Elad,我们一定会使用你的解决方案,它看起来非常出色,比FCM可靠得多。 - Daniel Wilson
1
只有完全披露才能点赞! - Abdelalim Hassouna

2
事实上,没有任何方法可以100%保证通知的送达。苹果和谷歌无法控制的几个变量会阻止它们做到这一点。在用户设备上,您有用户首选项和网络连接等因素。
然而,最大的问题之一是,它们都没有完全负责发起推送本身。我希望随着苹果和谷歌开始探索应用服务托管,这种情况会发生改变,但他们仍然将所有责任留给开发人员。这意味着开发人员主要负责启动推送和其内容的服务器。这样,他们仍然可以说:“如果未能传递,则必须是您的问题”。如果您熟悉iOS,则知道设置计算机/服务器以处理远程推送通知非常麻烦。
我发现让像Parse.com这样的服务处理所有通知传送变得越来越有帮助,可以接近100%的传送成功率。他们提供一些很棒的功能,如跟踪所有已安装设备、它们的操作系统和它们的推送通知状态(徽章数字)。他们还提供一些非常酷的其他功能。

0

正如Nathan Kellert所描述的那样,它们依赖于网络连接和其他问题。 如果与可信赖的服务提供商一起使用,则推送消息可以非常有用。 如果您想使用推送服务,则选项包括parse、pushboots和其他服务。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接