Одно нажатие приходит - но не при отправке>1 сообщения сразу

У меня проблема в том, что я могу отправить только одно сообщение одновременно. Этот код работает довольно хорошо:

$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 ."<br><br>";

    // Create the payload body
    $body['aps'] = array(
        'alert' => $message,
        'sound' => 'default',
        'badge' => 1
        );
    // Encode the payload as JSON
    $payload = json_encode($body);

    // Build the binary notification
    $msg = chr(0) . pack('n', 32) . pack('H*', $token[1]) . pack('n', strlen($payload)) . $payload;
$result = fwrite($fp, $msg, strlen($msg));
if (!$result)
    echo '<br><div style="color:red">Message not delivered' . PHP_EOL.'</div><br><br>';
else
    echo '<br><div style="color:green">Message successfully delivered' . PHP_EOL.'</div><br><br>';

Но когда я пытаюсь объединить сообщения (msg), я получаю только сообщение о том, что это сработало - но ничего не приходит..

$ait = new ArrayIterator($token);
$cit = new CachingIterator($ait);
$msg2 = "";
foreach ($cit as $deviceToken) {

    if($deviceToken != NULL && $message != NULL) {
        $body['aps'] = array(
        'alert' => $message,
        'sound' => 'default',
        'badge' => 1
        );
        $payload = json_encode($body);

        $msg2 .= chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;
    }
    else throw new Exception('SHOULD NOT BE NULL');
}
echo $msg2;
$result2 = fwrite($fp, $msg2, strlen($msg2));
fclose($fp);

Кто-нибудь может помочь?

РЕДАКТИРОВАТЬ: забыл добавить строку "$msg2 = "";" перед петлей foreach.

0 ответов

Другие вопросы по тегам