2016-05-04 14 views
0

こんにちは、私は私のPHPコードがapnsにメッセージを送信できませんか?

<?php 

// set time limit to zero in order to avoid timeout 
set_time_limit(0); 

// charset header for output 
header('content-type: text/html; charset: utf-8'); 

// this is the pass phrase you defined when creating the key 
$passphrase = 'Zazimi16'; 

// you can post a variable to this string or edit the message here 
//if (!isset($_POST['msg'])) { 
//$_POST['msg'] = "Notification message here!"; 
//} 

// tr_to_utf function needed to fix the Turkish characters 
//$message = tr_to_utf($_POST['msg']); 

$message = 'test'; 

// load your device ids to an array 
$deviceIds = array(
'f67f045d934cdc1bfa9f41e333aa47d0841c4c833bc38c7252cb137c7067ecda', 
); 

// this is where you can customize your notification 
$payload = '{"aps":{"alert":"' . $message . '","sound":"default"}}'; 

$result = 'Start' . '<br />'; 

//////////////////////////////////////////////////////////////////////////////// 
// start to create connection 
$ctx = stream_context_create(); 
stream_context_set_option($ctx, 'ssl', 'local_cert', 'push1.pem'); 
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase); 

echo count($deviceIds) . ' devices will receive notifications.<br />'; 

foreach ($deviceIds as $item) { 
    // wait for some time 
    sleep(1); 

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

    if (!$fp) { 
     exit("Failed to connect: $err $errstr" . '<br />'); 
    } else { 
     echo 'Apple service is online. ' . '<br />'; 
    } 

    // Build the binary notification 
    $msg = chr(0) . pack('n', 32) . pack('H*', $item) . pack('n', strlen($payload)) . $payload; 

    // Send it to the server 
    $result = fwrite($fp, $msg, strlen($msg)); 

    if (!$result) { 
     echo 'Undelivered message count: ' . $item . '<br />'; 
    } else { 
     echo 'Delivered message count: ' . $item . '<br />'; 
    } 

    if ($fp) { 
     fclose($fp); 
     echo 'The connection has been closed by the client' . '<br />'; 
    } 
} 

echo count($deviceIds) . ' devices have received notifications.<br />'; 

// function for fixing Turkish characters 
function tr_to_utf($text) { 
    $text = trim($text); 
    $search = array('Ü', 'Þ', 'Ð', 'Ç', 'Ý', 'Ö', 'ü', 'þ', 'ð', 'ç', 'ý', 'ö'); 
    $replace = array('Ãœ', 'Åž', '&#286;ž', 'Ç', 'Ä°', 'Ö', 'ü', 'ÅŸ', 'ÄŸ', 'ç', 'ı', 'ö'); 
    $new_text = str_replace($search, $replace, $text); 
    return $new_text; 
} 

// set time limit back to a normal value 
set_time_limit(30); 
?> 

ですが、私はあなたが開発プロファイルで実行している場合、それは

1 devices will receive notifications. 
Apple service is online. 
Delivered message count: f67f045d934cdc1bfa9f41e333aa47d0841c4c833bc38c7252cb137c7067ecda 
The connection has been closed by the client 
1 devices have received notifications. 

答えて

1

テキスト持って送信するときに、私が作成してください

私のiphoneにメッセージを送信したいです接続にサンドボックスのURLを使用していることを確認してください。

$fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT | STREAM_CLIENT_PERSISTENT, $ctx); 

また、アプリケーション用にコンパイルされたプロファイルをチェックして、生成されたpemファイルが正しいかどうかを確認してください。

+0

もう一度問題はありません –

関連する問題