现在已经一周了,我正在寻找我遇到的问题的答案,但我找不到任何东西,所以我要在这里问这个问题!
我制作了一个可以向用户发送通知的 iPhone 应用程序。所以,我有一个通知服务器,用 PHP 编码,它使用 apns-php (http://code.google.com/p/apns-php/)
我的服务器可以随时发送通知,所以我有一个无限期运行的工作人员,每次它收到要发送的通知(要发送的通知在队列中)时,它都会发送通知。为了尽可能快,worker 有 10 个可以发送通知的线程。
当我启动工作人员时,我会收到我应该收到的通知。
问题是一段时间后(我不知道是在特定时间或特定数量的通知发送后......还是其他!),我没有收到任何新通知。当我查看 apns-php 的日志时,什么也没有:所有消息似乎都发送到了 APNS 服务,没有错误(apns-php 使用增强格式)。一旦我重新启动工作人员,我会再次收到通知(但只是一段时间)。
我在 stackoverflow 和 Google 上搜索过这个问题,到目前为止,我看到的唯一回复是:
- 使用的证书/配置文件有问题。我知道这不是问题,因为我在启动工作人员时会收到通知
- 我们的数据库中有一些开发设备令牌,这使得 APNS 关闭了连接。实际上,我们的数据库中可能存在一些开发设备令牌,但是当我查看 apns-php 代码时,如果连接关闭,则会打开一个新设备。所以我不明白这会如何影响在坏设备令牌之后发送的所有通知。
这个问题真的让我抓狂,因为通知对我们的服务非常重要。因此,如果有人知道这里可能存在什么问题,那真的可以挽救生命!
PS:我没有发布任何代码,因为我没有做任何具体的事情。我只是使用 apns-php 的 send() 函数来发送每个通知。