Мне удалось внедрить сервер push-уведомлений (PHP) для iPhone в прошлом году;Мне пришлось сменить сервер, и я подумал, что перемещения файлов достаточно ... Я был не прав, так как уведомления об изменениях больше не отправляются.Там нет ошибки, все кажется нормально, но уведомление не получено.
Ниже приведен код моего сервера;Кто-нибудь может придумать причину или способ найти проблему?(примечания: переменная $ deviceTokens верна, содержит токены устройства, и я успешно протестировал свой сертификат .pem с помощью команды openssl).
$payload['aps'] = array('alert' => 'notification!!', 'sound' => 'push.aif');
$payload = json_encode($payload);
$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', 'libraries/ck_prod.pem');
$apns = stream_socket_client('ssl://gateway.sandbox.push.apple.com:' . 2195, $error, $errorString, 2, STREAM_CLIENT_CONNECT, $streamContext);
if($error) {
log_message('error', $errorString);
return;
}
log_message('debug', 'sending push notification...');
if($apns) {
foreach($deviceTokens as $deviceToken) {
$apnsMessage = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $deviceToken)) . chr(0) . chr(strlen($payload)) . $payload;
fwrite($apns, $apnsMessage);
}
fclose($apns);
} else {
log_message('error', 'error while sending push notification');
}