Send Push Notification to multiple tokens with PHP (iOS)

10,896
$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;
Share:
10,896
Rick de Jong
Author by

Rick de Jong

Updated on June 13, 2022

Comments

  • Rick de Jong
    Rick de Jong almost 2 years

    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!