Apple Push Notification Service 发送重复通知

Posted

技术标签:

【中文标题】Apple Push Notification Service 发送重复通知【英文标题】:Apple Push Notification Service sends repeated notifications 【发布时间】:2012-10-16 16:21:35 【问题描述】:

我有一个从 Apple Push Notification Service 接收通知的 iPhone 应用程序。我正在使用 (Easy APNS for php) 使用每 15 分钟运行一次的 Cron 作业推送通知。 我注册了大约 400 台设备正在使用我的应用程序。

问题: 当我想向我的用户发送新通知时,他们会多次收到通知,而且总是一样的。我不知道为什么 Apple 会多次发送相同的通知(比如 5 或 6 次)

一些额外的信息:

Easy APNS 的工作原理是一次获取 100 条消息(就像一个批次一样),所以我想将 400 条消息发送给我的所有用户需要 1 小时。 在我的apns_messages表中,每台设备的消息只有一个条目,所以理论上没有重复的消息。似乎同一个条目被处理了很多次。

我找不到多次收到相同通知的原因。这对用户来说也很烦人。

【问题讨论】:

【参考方案1】:

好的,我知道发生了什么。 EasyAPNS 抓取 100 条消息并循环播放它们。在每个循环中,y 连接到两个 Apple 服务(推送通知服务和反馈服务)。在我的服务器中,防火墙阻止了反馈服务的端口,在尝试连接它时会超时。所以 php 执行崩溃了,当它已经发送时,消息被保留为“排队”。所以同一条消息被处理了很多次!

【讨论】:

【参考方案2】:

可能是您在发送后没有从消息表中删除消息吗? Easy APNS 似乎将 apns_messages 表中的消息排队,直到准备好发送。因此,如果他们在发送后仍留在该表中,Easy APNS 会看到并再次发送。

【讨论】:

该表有一个名为 status 的列,它是一个 emum Queued, Delivered, failed。当 EasyAPNS 发送消息时,立即将其切换为已传递。

以上是关于Apple Push Notification Service 发送重复通知的主要内容,如果未能解决你的问题,请参考以下文章

Apple Push Notification - 无法回调 didRegisterForRemoteNotificationsWithDeviceToken

Send push notification on Apple (APNS) on c#.net

Apple Push Notification Service 发送重复通知

Apple Push Notification Service 用户响应

Apple Push Notification 与生产服务 URL 上的开发证书一起使用

Apple Push Notification 不适用于非开发的临时构建