Я использую этот учебник для изучения push-уведомлений.
<?php
// Put your device token here (without spaces):
$deviceToken = '1675ba8bb005740bb514222227f861c30230a81e6eed6bb6b8f353c57831341d';
// Put your private key's passphrase here:
$passphrase = '111134';
// Put your alert message here:
$message = 'My first push notification!';
////////////////////////////////////////////////////////////////////////////////
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
// 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'
);
// Encode the payload as JSON
$payload = json_encode($body);
// Build the binary notification
$msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;
// Send it to the server
$result = fwrite($fp, $msg, strlen($msg));
echo 'result =' . $result. PHP_EOL;
if (!$result)
echo 'Message not delivered' . PHP_EOL;
else
echo 'Message successfully delivered' . PHP_EOL;
// Close the connection to the server
fclose($fp);
Я также настраиваю приложение для push-уведомлений. После настройки push я также воссоздаю профили инициализации, старую удалить один, устанавливаю новый профиль.
Я запускаю приложение, которое дает мне идентификатор устройства, а затем я подключаю как серверную изолированную программную среду, так и рабочую, чтобы отправлять push-уведомления с их относительными push-профилями, но я все еще не могу получать push-уведомления на моем устройстве.
Я также устанавливаю ipusher на свое устройство и проверяю push-уведомления. они приходят из этого приложения.
Одна странная вещь, которую я замечаю, это то, что я меняю идентификатор приложения и использую любой другой идентификатор приложения, тогда токен устройства остается неизменным
Теперь моя проблема в том, что я не получаю push-уведомление на моем устройстве.
Проблема не в моих профилях. Возможно, ошибка - это php-код, который я использую, потому что, когда я использую easy apns на удаленном сервере, он отправляет push-уведомления.
Время получения уведомлений составляло от 6 до 7 часов. Я думаю, что это связано с проблемой сети на моем устройстве.
Но теперь он работает нормально через 2 дня на производственном профиле. Теперь доставка уведомлений на моем устройстве не занимает много времени, но на некоторых устройствах это занимает от 30 секунд до 5 минут.
Может быть еще одна проблема, если вы не получаете push-уведомлений на ваше устройство и из других приложений, то вам следует проверить DNS-соединение на предмет соединения.