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 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
    • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序
    • ¥15 onvif+openssl,vs2022编译openssl64
    • ¥15 iOS 自定义输入法-第三方输入法
    • ¥15 很想要一个很好的答案或提示
    • ¥15 扫描项目中发现AndroidOS.Agent、Android/SmsThief.LI!tr
    • ¥15 怀疑手机被监控,请问怎么解决和防止
    • ¥15 Qt下使用tcp获取数据的详细操作
    • ¥15 idea右下角设置编码是灰色的
    • ¥15 全志H618ROM新增分区