1
我在我的应用程序和PHP服务器中使用推送通知,该服务器使用令牌管理数据库并向Apple服务器发送有效内容。将消息发送到少量设备(我尝试使用2)时效果很好,但是当我想要发送消息到整个数据库(超过20,000个设备)时,它不起作用。与苹果服务器连接(我没有连接错误),但我有两个设备(也在数据库中)没有收到消息。 PHP代码为:Iphone推送通知服务问题
$apnsHost = 'gateway.push.apple.com';
$apnsPort = 2195;
$apnsCert = 'path/to/my/certificate.pem';
$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert);
$apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error, $errorString, 2, STREAM_CLIENT_CONNECT, $streamContext);
while($row = mysql_fetch_array($result))
{
$deviceToken=$row['token'];
$apnsMessage = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $deviceToken)) . chr(0) . chr(strlen($payload)) . $payload;
fwrite($apns, $apnsMessage);
if ($error==0)
{
echo "Notification was sent successfully to ".$row['token']."<br/>";
}
else
{
echo "Notification failure to ".$row['token']."<br/>";
}
}
socket_close($apns);
fclose($apns);
结果我收到“通知发送成功”为数据库中的所有记录,但现在看来似乎不发送消息,因为我没有看到它我的设备。当我使用相同的代码将消息发送到2个令牌时,它运行良好。可能是什么问题呢?使用一个连接可以发送的设备数量是否有上限?
难道我的回答帮助?任何跟进? – 2011-03-31 11:03:39
@andre谢谢你的回答。问题出在我数据库中的前3个标记。我不知道为什么,但如果我试图发送给他们,它不会发送给任何人。如果我尝试发送到所有其他令牌,它的工作。这些令牌似乎是有效的(如长度和格式),但我不会再尝试再发送它们。 – Mircea 2011-03-31 12:55:19