2

すべてのデバイストークンを含むデータベースがあります。データベースからトークンを取得し始めましたが、スクリプトが機能しなくなりました (プッシュが送信されません)。

これは私のスクリプトです:

<?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>

これを機能させるために私を助けてください!

よろしくお願いします!

4

3 に答える 3

7
$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;
于 2013-04-11T22:46:24.017 に答える
-1

@djot回答ありがとうございますが、=の前にドットを追加するのを忘れました

$deviceToken = ARRAY();

$deviceToken = explode( ',' , @$_POST['devicesToken'] );

.........

foreach($deviceToken as $token){
$msg.= chr(0) . pack("n",32) . pack('H*', str_replace(' ', '', $token)) . pack        ("n",strlen($payload)) . $payload;
于 2013-09-03T13:51:10.767 に答える