我试图通过电话向所有用户发送通知。我正在使用GCM和phonegap推送插件。我在一个数据库中保存了一个registrationId然后我写了这个2函数,我使用soap web服务。通知不会发送。 这是我的代码。功能:
function sendPush($registrationId, $title, $message) {
$registrationIds = array(
$registrationId
);
$msg = array(
'message' => $message,
'title' => $title,
'vibrate' => 1,
'sound' => 1
// you can also add images, additionalData
);
$fields = array(
'registration_ids' => $registrationIds,
'data' => $msg
);
$headers = array(
'Authorization: key='.
'AIzaSyD-sL8HiKyKRWdwxVMmTMYgkqOgVGOiNP8',
'Content-Type: application/json'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://android.googleapis.com/gcm/send');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
$result = curl_exec($ch);
if ($result === false) die('Curl failed '.curl_error());
curl_close($ch);
return $result;
}
function push() {
$db = new PDO('mysql:host=localhost;dbname=testf', 'root', '');
$sql = "select * from client";
$texte = '<table>';
// $texte=array();
foreach($db - > query($sql) as $data) {
$texte = $texte.
'#'.$data["regId"];
}
$texte = $texte;
return $texte;
}
电话是:
$client = new nusoap_client('http://localhost/fou/server.php');
$title = $_POST['title'];
$message = $_POST['message'];
$result = $client->call('push');
//echo $result;
$x = explode("#", $result);
$nb = count($x);
for ($i = 0; $i < $v; $i++) {
$resp = $client->call('sendPush', array('registrationId' => $x[$i], 'titre' => $title, 'message' => $message));
print_r($resp);
}
答案 0 :(得分:1)
试试这样:
PushNotification.php
<?php
$message = $_REQUEST['msg'];
$title = $_REQUEST['title'];
$user = "root";
$pass = "";
// Connect
$db = new PDO("mysql:host=localhost;dbname=pdo-me", $user, $pass);
define('API_ACCESS_KEY', 'AIzaSyD-sL8HiKyKRWdwxVMmTMYgkqOgVGOiNP8');
$msg = array(
'message' => $message,
'title' => $title,
'vibrate' => 1,
'sound' => 1
);
$query = "SELECT regId FROM client";
$stmt = $db->prepare($query);
$stmt->execute();
// set array
$registrationIds = array();
// look through query
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
// add each row returned into an array
$registrationIds[] = $row;
}
$fields = array(
'registration_ids' => $registrationIds,
'data' => $msg,
);
$headers = array(
'Authorization: key='.API_ACCESS_KEY,
'Content-Type: application/json'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://android.googleapis.com/gcm/send');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
$result = curl_exec($ch);
curl_close($ch);
print_r($result);
?>
从php
应用程序调用{{1}}文件,如:
cordova
因此,在这种情况下,它将从您的表中检索所有registrationId,它将向所有设备发送通知。
修改1:
在您的应用程序中使用此代码。
http://yoururl.com/PushNotification.php?msg=test&title=LoremIpsum