苹果的推送通知服务可靠吗?

15
我有一个iOS应用程序,使用推送通知功能。但偶尔会出现期待收到通知却没有收到的情况。我会收到所有随后的通知。我已经确认过后端确保所有通知都成功发送了。
我的问题是:APNs是否几乎100%可靠?或者由于间歇性的3G / wifi连接,我只能期望偶尔会错过一些通知?
我认为APNs工作方式类似于排队系统,并在前几次未成功时进行重试。
2个回答

22

APN服务会将消息排队,但苹果不能保证所有消息都能送达。当用户处于离线状态时,只有应用程序发送的最后一条消息将被保留在队列中。此外,旧消息可能会被删除。

本地和推送通知编程指南

Apple Push Notification Service包含一个默认的服务质量(QoS)组件,执行存储和转发功能。如果APNs尝试传递通知但设备处于离线状态,则QoS会存储该通知。它仅保留设备上每个应用程序的一条通知:即从提供程序接收到的最后一条通知。当离线设备稍后重新连接时,QoS会将存储的通知转发到设备。 QoS会在删除通知之前保留通知一段时间。


谢谢您及时的回复,Steve。在我的情况下,我不认为我有旧消息或一次性太多的问题。更可能是每10-20分钟一条信息,这还是很宽容的。 - Andrew Young
3
安德鲁,就你的情况而言,如果用户离线(没有WiFi或3G)20-40分钟,他们可能无法收到1或2条消息。 - Steve
xydev,我打算向我们的一些用户核实这是否与他们的经验一致。但是如果不是这种情况,修改我的问题内容就不公平了。所以,是的,我将其标记为已回答。 - Andrew Young
感谢提供这些信息。在用户想知道他们的通知去哪里之前,提前了解这些信息非常好! - Mark Erickson

1
我有一个Azure网站(以及移动服务,服务总线,数据库,活动目录等),向Windows Phone和iPhone上的Xamarin应用程序发送推送通知。第一条通知被两者都接收到。第二个通知只被Windows Phone接收,而不会传递到iPhone。如果我发送另一个通知,则两者都会接收到。因此,我更加深入地研究了这种行为,并发现如果我机枪般地连续发送一系列通知(每2秒手动输入一个),Windows Phone可以接收到所有通知,但iPhone只接收到第一个通知。但是,如果我等待一段时间并发送通知,则两个设备都会接收到。下一个测试是看通知是否始终在5分钟间隔内接收。发送两条消息,间隔五分钟,Windows Phone和iPhone都接收到了两个通知。

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