Я использую push-уведомления ios. Все сертификаты созданы правильно. Уведомления идут с использованием кода php сервера: -
$deviceTokens; // This is an array which has all tokens
$passphrase; // This is my passphrase
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'iOSPushNotificationCertificate.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
stream_context_set_option($ctx, 'ssl', 'cafile', 'entrust_2048_ca.cer');
$fp = stream_socket_client('ssl://gateway.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
$body; // This is my notification data body
$payload = json_encode($body);
for($i = 0; $i < sizeof($arr); $i++) {
$msg = chr(0) . pack('n', 32) . pack('H*', $arr[$i]) . pack('n', strlen($payload)) . $payload;
$result = fwrite($fp, $msg, strlen($msg));
echo $result;
}
fclose($fp);
Код echo $ result дает мне целочисленные значения для всех хороших или плохих токенов.
Когда все токены исправны, все устройства получают уведомления. Но проблема в том, что если один токен между ними устарел или устарел, или что-то в этом роде, то все уведомления после этого токена не отправляются. Цикл for выполняется для всех токенов, но уведомления идут только для токенов, которые находятся перед плохим токеном. Что можно сделать?