2012-09-21 118 views
0

我一直在实现一个小的PHP脚本,它会将推送通知发送到Apple的APN服务器。 我有一个数据库,其中包含所有设备令牌,用于在我的应用程序中注册推送通知。 我的脚本将查询数据库中的令牌并将它们发送给Apple。 一切都很好,但是...我手动在我的表格中插入了一个错误的标记并再次执行脚本。发送错误令牌后的iOS推送通知错误

我已经意识到,之后,错误的令牌发送到苹果,所有通知后,将不会到达设备。 如果一切正常,Apple似乎不会返回任何状况,但如果出现问题,它确实会发送KO代码。我从苹果公司那里得到了一个错误的令牌错误信息,但之后我没有收到任何其他通知的回应。

我只打开数据库内所有令牌的一个连接。

我制备插座上下文与该行:

$streamContext = stream_context_create(array(
  'ssl' => array(
   'local_cert' => $this->signFile 
 ) 
 )); 

然后开始与APN服务器的通信信道:

$this->hFile = stream_socket_client(self::$serverUrl[$environment], $err, $errstr, 60, STREAM_CLIENT_CONNECT, $streamContext); 

最后,我发送消息:

fwrite($this->hFile, $command); 

我想为每个通知设置一个新的连接,但我想首先询问SO意见...

顺便说一下,我知道PHP并不是最好的选择,但它是来自其他地方的需求,我们被迫以这种方式设置系统。

谢谢,祝你有个愉快的一天,

Alex。

回答

0

我终于找到了一个解决方案: 一旦我检测到一个令牌无效,我关闭连接并再次打开它,开始发送令牌后错误的。