现在已经过了一周,我正在寻找我遇到的问题的答案,但我找不到任何东西,所以我将在这里提出这个问题!
我制作了一个可以向用户发送通知的iPhone应用程序。 所以,我有一个用PHP编码的通知服务器,它使用apns-php(http://code.google.com/p/apns-php/)
我的服务器可以随时发送通知,因此我有一个无限期运行的工作程序,每次收到要发送的通知(要发送的通知都在队列中)时,它会发送通知。为了尽可能最快,该工作者有10个可以发送通知的线程。
当我启动工作人员时,我会收到我想要收到的通知。
问题是,过了一段时间(我不知道是在经过特定时间或发送了特定数量的通知......还是别的东西!)后,我没有收到任何新的通知。当我查看apns-php的日志时,没有任何内容:所有消息似乎都被发送到APNS服务,没有错误(apns-php使用增强格式)。 一旦我重新启动工作人员,我再次收到通知(但只有一段时间)。
我在stackoverflow和Google上搜索过这个问题,到目前为止,我看到的唯一答案是:
这个问题让我很生气,因为通知对我们的服务非常重要。所以,如果有人知道这里可能出现什么问题,那真的会节省生命!
PS:我没有发布任何代码,因为我没有具体的任何代码。我只是使用apns-php的send()函数来发送每个通知。
答案 0 :(得分:0)
我终于找到了问题的根源:如果2小时内打开的APNS连接没有活动,则连接超时,APNS关闭连接。
我仍然不明白为什么apns-php没有检测到连接已关闭。 但是我每次在30分钟不活动一段时间后发送通知时自动重新连接到APNS就解决了这个问题(我可以选择2个小时,但我只是想确保没有问题)。