APNS:多次发送相同的通知

时间:2011-10-17 14:52:29

标签: ios push-notification apple-push-notifications

我有一个可以向其发送推送通知的应用。当用户在应用程序中保存某些内容时,保存时间将放在我的服务器上的“active_users”表中的mysql数据库中。我的服务器运行一个脚本来查看时间是否已经用完,如果有,它会向设备发送通知。

这里看到的奇怪的是,在系统的第一次测试中,推送通知到达了我的手机,一切顺利。我做了一些改变并再次尝试,但现在似乎没有发生任何事情。

这里真正奇怪的是我有一个push_queue(我的数据库中的一个表),当它被推送时,将推送消息(令牌和有效负载)。当我运行我的测试时,消息被添加到push_queue中,并且在我的日志文件中,所有内容都会被记录,就像它运行正常一样。

我现在的问题是:我是否只能为每个设备令牌发送一次推送通知?这是我能想到的唯一解决方案。

这是我的日志文件中的粘贴:http://pastebin.com/whkpV3F6 如您所见,它与两个消息中使用的设备令牌相同。

提前致谢。

2 个答案:

答案 0 :(得分:1)

该令牌应该适用于您要推送到设备的任意数量的邮件,除非该应用已从设备中删除或该应用已从Apple的服务器收到新令牌。

  1. 如果删除该应用,则会通知设备Apple,并且令牌无效。您必须“偶尔”轮询Apple以获取此反馈,告诉您不应再向哪些令牌发送消息。您必须轮询反馈服务,否则Apple将无效发送推送通知。

  2. 您的应用需要在每次发布时请求Apple推送通知服务。你每次回来的令牌可能永远不会改变,但它可以。然后,您需要确保您的服务器具有正确的令牌。

  3. 所有人都说,在这种情况下,你的令牌不太可能改变,因为你只是在测试。

    可能更有可能的是,该消息未被传递......我不相信推送通知可以保证提供,就像SMS可靠性一样。我不认为Apple也不会阻止你多次发送同样的消息,但我可能错了;如果重复的消息快速连续发送,那么可能某些限制器。不确定那个。

答案 1 :(得分:0)

我自己找到了解决方案。这是我的情况和解决方案:

我从Synology Diskstation(DS211 +)运行我的网络服务器。为了能够通过PHP运行打开SSL连接,必须启用openssl。执行以下操作以在Synology Diskstation上启用PHP:

1)打开mac上的终端) 2)创建SSH连接并以root身份连接(用户“admin” - 密码) 3)cd /usr/syno/etc.defaults/ 4)vi php.ini

现在使用/ string:/openssl.dll在vi中搜索字符串 该行以分号(;)开头,表示已注释掉。取消注释“extension = php_openssl.dll”行。

现在使用以下命令重启apache服务器: /usr/syno/etc.defaults/rc.d/S97apache-user.sh restart

它现在应该可以完美运作。