2011-02-25 16 views
0

這裏,是我在linux服務器上的編碼。蘋果推送通知與PHP,iPhone不會收到,有什麼可能性導致這種情況發生?

$ctx = stream_context_create(); 
stream_context_set_option($ctx, 'ssl', 'local_cert', 'apns-prod.pem'); 
$apnsConnection = stream_socket_client('ssl://gateway.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx); 

$deviceToken = "XXXX"; //no space 
$message = "A new question has been posted"; 

$body = array(); 
$body['aps'] = array('alert' => $message); 
$badge = 1; 
$sound = 1; 

if($badge) 
{$body['aps']['badge'] = $badge;} 

if($sound) 
{$body['aps']['sound'] = $sound;} 

$payload = json_encode($body); 
$msg = chr(0) . pack("n",32) . pack('H*', str_replace(' ', '', $deviceToken)) . pack("n",strlen($payload)) . $payload; 
echo $payload; 

fwrite($apnsConnection, $msg); 
fclose($apnsConnection); 
+1

也許你可以從中學到的東西:http://www.easyapns.com/ – 2011-02-25 08:21:16

+0

可能呢? http://stackoverflow.com/questions/2293155/apple-push-notification-service-apns-notifications-not-arriving – deceze 2011-02-25 08:24:28

回答

0

我發現了同樣的問題。我想蘋果不會推送一些錯誤。 所以我解決了這樣的問題: 當iPhone收到推送它回到服務器並更新表中的GetPush列。 只要(或者三次)GetPush列沒有設置,服務器就會要求Apple服務器發送推送請求。

1

它發生,如果你的主機服務器無法打開端口:2195或2196

+0

如何確保? – 2013-07-17 00:04:49