2013-04-17 207 views
0

我有以下php代碼爲ios推送notification.Here我代碼爲2個設備使用循環在fwrite()部分。當前的代碼工作正常。我的疑問是,我可以直接傳遞設備令牌數組而不使用for循環嗎?ios推送通知多個設備

<?php 
// Put your device token here (without spaces): 
$deviceToken[0] = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; 

$deviceToken[1] = 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'; 

// Put your private key's passphrase here: 
$passphrase = '123456'; 

// Put your alert message here: 
$message = 'multiple device push notification...!'; 

//////////////////////////////////////////////////////////////////////////////// 

$ctx = stream_context_create(); 
stream_context_set_option($ctx, 'ssl', 'local_cert', 'abc.pem'); 
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase); 

// Open a connection to the APNS server 
$fp = stream_socket_client(
'ssl://gateway.sandbox.push.apple.com:2195', $err, 
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx); 

if (!$fp) 
exit("Failed to connect: $err $errstr" . PHP_EOL); 

echo 'Connected to APNS' . PHP_EOL; 

// Create the payload body 
$body['aps'] = array(
'alert' => $message, 
'sound' => 'default', 
'badge' => '+1' 
); 

// Encode the payload as JSON 
$payload = json_encode($body); 
for($i=0;$i<2;$i++) 
{ 
// Build the binary notification 
$msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken[$i]) . pack('n', strlen($payload)) .  $payload; 

// Send it to the server 
$result = fwrite($fp, $msg, strlen($msg)); 
echo "msg may be delivered"; 
} 

if (!$result) 
echo 'Message not delivered' . PHP_EOL; 
else 
echo 'Message successfully delivered' . PHP_EOL; 

// Close the connection to the server 
fclose($fp); 
+0

可能重複的[iOS推送通知問題](http://stackoverflow.com/questions/4504448/ios-push-notifications-question) – DjangoDev

回答

6

它的design by default,但沒有選擇傳遞設備令牌數組。你必須遍歷循環。

+0

是否有任何替代選項可用,我可以創建一個device_tokens數組上傳上傳與蘋果有效載荷和通知去所有設備中指定的設備可以說,例如。 1000個用戶或更多?請幫忙 –

+2

它的設計默認情況下不能發送數組,你必須遍歷所有設備令牌的數組發送給多個推送通知。 –

+0

我的代碼與上面幾乎相同,但是當我嘗試發送推送到多個設備時(fwrite到每個'device_id'),它的工作原理是,如果我有一個包含2-3個設備ID的數組(僅測試那麼多),但當我擁有〜300個設備ID時不起作用 – Darpan

0

替代此方法將使用第三方,如amazon SNS service。在這裏,您可以發佈到主題(一個請求),並且訂閱此主題的所有設備都將收到通知。

相關問題