Intereting Posts
file_get_contents с пустым файлом не работает PHP PHP: Правильное регулярное выражение для того, чтобы каждая буква слева от первого нижнего регистра двоеточия Есть ли у PHP функция обнаружения ОС, на которой она работает? Получение ошибки в рабочей среде, работающая нормально в localhost Сброс одиночной кавычки в PHP при вставке в MySQL скрипт для перезаписи .htaccess файл работает на wamp, но не на общем хосте в сети Количество слов в тексте? Android-приложение отправляет строку для отображения на веб-странице Запрос API для проверки подлинности личных данных YQL PHP Неустранимая ошибка в mysqli_connect (); Как поставить другие элементы из двух массивов рядом с аналогичными в PHP Редактирование существующей PDF-страницы с несколькими файлами с использованием FPDF и FPDI Сохранить изображение с кодировкой base64 с запросом AJAX в PHP Как использовать Yahoo! API с библиотекой oauth-php? Безопасность сеанса PHP

Apple Push Notification Service с PHP Script

Я пытаюсь так отправить push уведомления тонна моего iPhone (APNS). Я прочитал этот пост и попытаюсь его реализовать. Так что все мои сертификаты хороши (нормальные).

Теперь у меня есть этот php-скрипт:

$device = '4f30e047 c8c05db9 3fa87e7d ca5325f7 738cb2c0 0b4a02d4 d4329a42 a7128173'; // My iphone deviceToken $payload['aps'] = array('alert' => 'This is the alert text', 'badge' => 1, 'sound' => 'default'); $payload['server'] = array('serverId' => $serverId, 'name' => $name); $output = json_encode($payload); $apnsCert = 'apple_push_notification_production.pem'; $streamContext = stream_context_create(); stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert); $apns = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $error, $errorString, 2, STREAM_CLIENT_CONNECT, $streamContext); $apnsMessage = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $device)) . chr(0) . chr(strlen($payload)) . $payload; fwrite($apns, $apnsMessage); //socket_close($apns); seems to be wrong here ... fclose($apns); 

Когда я запускаю этот скрипт, ничего не происходит. нет ошибки только пустой страницы, но мой iPhone не получает push-уведомление …

У вас есть идея?

Большое спасибо !

нет места в токенах устройства, полоса их

Для получения сертификата разработки необходим URL-адрес

  'SSL: //gateway.sandbox.push.apple.com: 2195' 

но для производства

  'SSL: //gateway.push.apple.com: 2195' 

Разделите пробелы с токена, и даже тогда это не работает.

 $apnsHost = 'gateway.sandbox.push.apple.com'; 

Удалите «песочницу» из этого URL-адреса и он будет работать.

Если у вас есть несколько устройств, и вы их просматриваете, я обнаружил, что вам нужно создать новый stream_context_create для каждого fwrite, чтобы предотвратить закрытие соединения Apple для плохого токена.

FYI

Чтобы успешно отправлять уведомления, вы должны сделать еще одну вещь.

Заменить $ output = json_encode ($ payload);

до $ payload = json_encode ($ полезная нагрузка);

Вам не хватает личного сертификата сертификата. Добавьте эту строку: stream_context_set_option ($ streamContext, 'ssl', 'passphrase', $ certificatePrivateKey);