2014-11-09 3 views
0

Этот вопрос задан раньше, но в ответ код не работает.Отправить уведомление iOS без порта 2195

Как я могу отправить IOS толчок уведомления от PHP без использования порта 2195, который блокируется на моем хосте (one.com)

Я попробовал этот код:

$url = 'https://gateway.sandbox.push.apple.com:2195'; 
$cert = 'ck.pem'; 

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL,$url); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json")); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_SSLCERT, $cert); 
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, 'password_hidden_on_stack_overflow'); 
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"device_tokens": ["458e5939b2xxxxxxxxxxx3"], "aps": {"alert": "test message one!"}}'); 

$curl_scraped_page = curl_exec($ch); 

Но это дает мне эта ошибка: ошибка анализа: синтаксическая ошибка, неожиданный '*'

Как это можно решить?

EDIT

Я также попробовал этот код:

$ctx = stream_context_create(); 
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem'); 
stream_context_set_option($ctx, 'ssl', 'passphrase', 'password_hidden_on_stack_overflow'); // Add your own ck.pem passphrase here 

foreach($deviceIDs as $deviceToken) { 
    // 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' 
     ); 
    $payload = json_encode($body); 

// Build & send notification 
$msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload; 
$result = fwrite($fp, $msg, strlen($msg)); 

/*if (!$result) 
    echo 'Message not delivered' . PHP_EOL; 
    else 
     echo 'Message successfully delivered' . PHP_EOL;*/ 
} 
// Close the connection to the server 
fclose($fp); 

Но это дает мне эту ошибку: Warning: stream_socket_client(): не удалось подключиться к SSL: //gateway.sandbox. push.apple.com:2195 (Время установления соединения)

ответ

-1

Не используется это раньше, но я знаю, что мой знакомый использовал какой-то открытый код. Вот ссылка на него, надеюсь, что это поможет: php-apn

+0

Какой порт использует этот php-apn? –

Смежные вопросы