一次推送到达 - 但不是一次发送> 1消息

时间:2014-02-06 00:02:29

标签: ios apple-push-notifications apns-php

我遇到了问题,我只能一次发送一条消息。这段代码工作得很好:

$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 个答案:

没有答案