1

PHPコードに少し問題があります。私が送信したメッセージがすべてのデバイスで受信されるため、それが機能しませんでした。魔女は私のデータベースに保存されます。

デバイスのプッシュアプ​​リは、MySQLデータベースにdeviceTokenを自動的に登録します。それはすべて正常に機能しています。

大きな問題は、データベースから最初のデバイスにのみプッシュメッセージを受け取ることです。他のデバイスはメッセージを受信しません。

ここに私のコード:

<?php

require_once('konfiguration.php');

$sql = "SELECT deviceToken FROM DeviceTokens";
$dbquery = mysql_query($sql);

// check checkboxes
$message = $_POST['alert'];
$badge = $_POST['badge'];
$sound = $_POST['sound'];
// Construct the notification payload
$body = array();
// anti-error variable
$nothing = true; 
// get user input
if ($message) { $alert=$_POST['message']; $nothing = false;
$body['aps']['alert'] = $alert; }
if ($badge) { $nothing = false;
if($_POST['number']) $number=(int)$_POST['number'];
else $number=1;
$body['aps']['badge'] = $number; }
if ($sound) { $nothing = false;
$body['aps']['sound'] = 'beep.wav'; }
// if input not correct, scream
if ($nothing || ($message && $alert=="")) { echo "Falscher Input!"; exit(); }
//make new stream context
$ctx = stream_context_create();
// set parameters
$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', 'w3workProd.pem');
//stream_context_set_option($streamContext, 'ssl', 'passphrase', 'nils');

$socketClient = stream_socket_client('ssl://gateway.push.apple.com:2195', $error,      
$errorString, 60, STREAM_CLIENT_CONNECT, $streamContext);

$payload = json_encode($body);

print "sending message :" . $payload . "\n";

while($row = mysql_fetch_array($dbquery)) {
$message = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $deviceToken))   
.chr(0) . chr(strlen($payload)) . $payload;
$deviceToken = str_replace(' ', '', $row['deviceToken']);
$message = pack('CnH*', 0, 32, $deviceToken);
$message = $message . pack('n', strlen($payload));
$message = $message . $payload;

fwrite($socketClient, $message);
echo ($row['deviceToken']);
}

fclose($socketClient);
exit();
?>

あなたが助けることができればいいでしょう。なぜそれは1つのデバイスで動作し、他のデバイスでは動作しないのですか...

4

1 に答える 1

0

やってみました

STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT

?

于 2012-06-13T15:45:44.793 に答える