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