发送推送通知与PHP多个令牌(IOS) [英] Send Push Notification to multiple tokens with PHP (iOS)

查看:119
本文介绍了发送推送通知与PHP多个令牌(IOS)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我和所有的devicetokens的数据库。我开始拿起从数据库中标记,但我的剧本好好尝试一下再工作了(在推不发送)。

这是我的脚本:

 < PHP$ DB_USER =XXX; // Gebruiker VOOR的MySQL
$ DB_PASS =XXX; // Wachtwoord VOOR的MySQL
$ DB_HOST =localhost的; //主机VOOR MySQL的;标准报本地主机
$ db_db =XXX; //数据库//阿尔斯济人ergens安德斯·埃恩数据库connectie hebt gemaakt,
// maak丹凡·德volgende彧regels commentaar(// ervoor zetten排名)
mysql_connect($ DB_HOST,DB_USER $,$ DB_PASS);
mysql_select_db($ db_db);$查询=的mysql_query(SELECT * FROM iospush);                                而($行= mysql_fetch_array($查询)){
                                    $ deviceToken = $行[devicetoken];
                                    }如果($ _ POST ['消息']){// $ deviceToken ='XXX';    $消息=的stripslashes($ _ POST ['消息']);    $负载='{
                    APS:                        {提醒:'$消息。'
徽章:1
                        }
                };
    $ SSL ='xx.pem';    $ CTX = stream_context_create();
    stream_context_set_option($ CTX,SSL,的local_cert',​​$ SSL);
    stream_context_set_option($ CTX,'SSL','密​​码','XXX');
    $计划生育=在stream_socket_client('SSL://gateway.sandbox.push.apple.com:2195',$犯错,$ errstr,60,STREAM_CLIENT_CONNECT,$ CTX);
    如果(!$ FP){
        PRINT无法连接$犯错$ errstrn
        返回;
    }其他{
        打印通知发送!
    }    $ devArray =阵列();
    $ devArray [] = $ deviceToken;    的foreach($ devArray为$ deviceToken){
        $味精= CHR(0)。包(N,32)。包(H *',str_replace函数('','',$ deviceToken))。包(N的strlen($有效载荷))。 $有效载荷;
        打印发送消息。 $有效载荷。 N;        FWRITE($ FP,$味精);
    }
    FCLOSE($ FP);
}?>
<形式的行动=pushios.php方法=后>
    <输入类型=文本名称=消息MAXLENGTH =100>
    <输入类型=提交值=发送通知>
< /表及GT;

请帮我做这个工作!

谢谢方面!


解决方案

  $ deviceToken =阵列();
而($行= mysql_fetch_array($查询)){
  $ deviceToken [] = $行[devicetoken];
}

...

  //或使用($ devArray = $ deviceToken;)的foreach($ deviceToken为$令牌){
    $味精= CHR(0)。包(N,32)。包(H *',str_replace函数('','',$令牌))。包(N的strlen($有效载荷))。 $有效载荷;

I've a database with all the devicetokens. I proceed to pick up the tokens from the database, but my script doens't work then anymore (the pushes don't send).

This is my script:

<?PHP

$db_user = "xxx"; // Gebruiker voor MySQL
$db_pass = "xxx"; // Wachtwoord voor MySQL
$db_host = "localhost"; // Host voor MySQL; standaard localhost
$db_db = "xxx"; // Database

// Als je al ergens anders een database connectie hebt gemaakt,
// maak dan van de volgende twee regels commentaar (# of // ervoor zetten)
mysql_connect($db_host,$db_user,$db_pass);
mysql_select_db($db_db);

$query = mysql_query("SELECT * FROM iospush");

                                while ($row = mysql_fetch_array($query)) {
                                    $deviceToken = $row["devicetoken"];
                                    }

if($_POST['message']){

//  $deviceToken = 'xxx';

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

    $payload = '{
                    "aps" : 

                        { "alert" : "'.$message.'",
"badge" : 1
                        } 
                }';


    $ssl='xx.pem';

    $ctx = stream_context_create();
    stream_context_set_option($ctx, 'ssl', 'local_cert', $ssl);
    stream_context_set_option($ctx, 'ssl', 'passphrase', 'xxx');
    $fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);
    if(!$fp){
        print "Failed to connect $err $errstrn";
        return;
    } else {
        print "Notifications sent!";
    }

    $devArray = array();
    $devArray[] = $deviceToken;

    foreach($devArray as $deviceToken){
        $msg = chr(0) . pack("n",32) . pack('H*', str_replace(' ', '', $deviceToken)) . pack        ("n",strlen($payload)) . $payload;
        print "sending message :" . $payload . "n";

        fwrite($fp, $msg);
    }
    fclose($fp);
}

?>
<form action="pushios.php" method="post">
    <input type="text" name="message" maxlength="100">
    <input type="submit" value="Send Notification">
</form>

Please help me to make this working!

Thanks in regard!

解决方案

$deviceToken = ARRAY();
while ($row = mysql_fetch_array($query)) {
  $deviceToken[] = $row["devicetoken"];
}

...

// or use ($devArray = $deviceToken;)

foreach($deviceToken as $token){
    $msg = chr(0) . pack("n",32) . pack('H*', str_replace(' ', '', $token)) . pack        ("n",strlen($payload)) . $payload;

这篇关于发送推送通知与PHP多个令牌(IOS)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆