Я внедрил Push-уведомления в свой проект в Codeigniter (php) несколько лет назад, и все работало нормально до 10 дней назад. Мой .pem
файл отлично работает на моем локальном сервере, а также в онлайн-инструментах уведомлений.
Ошибка: «stream_socket_client (): невозможно подключиться к ssl: //gateway.push.apple.com: 2195 (подключение
отказался) ".
Я использую следующую функцию:
public function applePushSend($deviceToken, $msg){
$mode ='prod';
$ctx = stream_context_create();
if($mode=='dev'){
$gateway = 'ssl://gateway.sandbox.push.apple.com:2195';
stream_context_set_option($ctx, 'ssl', 'local_cert', 'pushcert_dev.pem');
}else{
$gateway = 'ssl://gateway.push.apple.com:2195';
stream_context_set_option($ctx, 'ssl', 'local_cert', 'pushcert_prod.pem');
}
$fp = stream_socket_client('ssl://gateway.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
if (!$fp){
}else{
$alert = array();
$alert['title'] = "My Message";
$alert['body'] = $msg;
$body['aps']['alert'] = $alert;
$body['aps']['badge'] = 1;
$body['aps']['sound'] = 'default';
$body['notificationtypeid'] = 4;
$payload = json_encode($body);
$msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;
$pushresult = fwrite($fp, $msg, strlen($msg));
}
fclose($fp);
return($pushresult);
}