douli1306 2015-12-08 18:12
浏览 62

不要在PHP中向多个iOS发送通知

I can not send push messages to multiple iOS devices querying the database, it only sends it to the last record , I tried various solutions found in stackoverflow but it still fails in any , can anyone help me?

    <form action="" method="post">
        <label for="txtmensagem">Mensagem:</label>
        <input type="text" name="txtmensagem" size="30"/>
        <input type="submit"  value="Enviar"/>
    </form>

<?php
   //conect with database
    include_once('conexao.php');

    $message = stripslashes(ucfirst($_POST['txtmensagem']));

    // executa a query
    $dados = mysql_query("SELECT * FROM token_push WHERE so='ios'");

    $passphrase = 'XXXXX'; //pushchat

    $ctx = stream_context_create();
    stream_context_set_option($ctx, 'ssl', 'local_cert', 'xx.pem');//xx.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 conect to APNS
    //if (!$fp)
        //exit("Falha na conexão: $err $errstr" . PHP_EOL);

    //echo 'Connected to APNS' . PHP_EOL;

// Create the payload body
if (!empty($message)){

    $body['aps'] = array(
        'alert' => $message,
        'sound' => 'default',
        'conteudo' => $conteudo,
        'comando' => 'noticia',
        'badge' => +1,
        'idConteudo' => mysql_insert_id(),
    );

    // Encode the payload as JSON
    $payload = json_encode($body);

   //insert token in array
    while ($row = mysql_fetch_array($dados)) {
        $deviceToken = array();
        $deviceToken[] = $row['token'];
    }

        foreach($deviceToken as $device){

            // Build the binary notification
            $msg = chr(0) . pack('n', 32) . pack('H*', $device) . pack('n', strlen($payload)) . $payload;

            // Send it to the server
            $result = fwrite($fp, $msg, strlen($msg));
        }
}

    //return if send or not
    if (!$result)
        echo 'Ops!' . PHP_EOL;
    else
        echo 'Aehoooooo!' . PHP_EOL;

    // Close the connection to the server
    fclose($fp);
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
    • ¥20 Python安装cvxpy库出问题
    • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
    • ¥15 python天天向上类似问题,但没有清零
    • ¥30 3天&7天&&15天&销量如何统计同一行
    • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
    • ¥15 C#调用python代码(python带有库)
    • ¥15 活动选择题。最多可以参加几个项目?
    • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
    • ¥15 vs2019中数据导出问题