Я использую Blue Host для размещения своего приложения, и я связался со службой поддержки, которая утверждает, что открыл порт 2195 на сервере, чтобы я мог подключиться для отправки уведомлений Pu sh через Apple APNS.
Я получаю ошибка «Не удалось подключиться: 0» при запуске сценария PHP. Служба поддержки сказала: «Убедитесь, что порт включен и на стороне провайдера». но я не уверен, как это проверить. Я проверил правильность моего пароля и расположение файла .pem.
$deviceToken = '<MY_DEVICE_TOKEN>';
$message =- 'You have a new comment!';
$body['aps'] = array(
'alert' => trim($message),
'sound' => 'default',
);
// Encode the payload as JSON
$payload = json_encode($body);
$msg = chr(0) . pack('n', 32) . pack('H*', trim($deviceToken)) . pack('n', strlen($payload)) . $payload;
// For sandbox
//$url = 'ssl://gateway.sandbox.push.apple.com:2195';
// for production
$url = 'ssl://gateway.push.apple.com:2195';
$passphrase = '<MY_PASSPHRASE>';
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', '<MY_PUSH_CERT>');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
// Connection to APNS server
$fp = stream_socket_client($url, $err, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
if (!$fp) {
exit("Failed to connect: $err $errstr" . PHP_EOL);
}
$result = fwrite($fp, $msg, strlen($msg));
if (!$result){
echo 'Message not delivered' . PHP_EOL;
}
else
{
//echo 'Message successfully delivered' . PHP_EOL;
return $result;
}
// Close the connection to the server
fclose($fp);