我正在使用Cordova(Phonegap),Google Cloud Messaging开发我的个人应用程序,并使用PHP作为我的服务器。我希望将通知发送到许多设备,但我的问题是,我无法将PHP脚本的通知发送到其他设备。如果我在自己的设备上使用自己的注册ID,并且从终端运行我的PHP推送通知,则只有我的设备提示通知。我的问题是,如果我想查看来自$gcm_header
的所有注册ID并列在$registrationIds
,我是否需要注册到其他设备?因为,此时,我只是在我自己的设备上运行应用程序。以下是我的代码:
<?php
$gcm_header = 'GOOGLE-API';
$registrationIds = array($gcm_header);
//$registrationIds = array('my-regid-from-my-actual-device');
$msg = array('message' => 'Test message',
'title' => 'Test title',
'subtitle' => 'test subtitle',
'tickleText' => 'test tickleText',
'vibrate' => 1,
'sound' => 1);
$fields = array('registration_ids' => $registrationIds, 'data' => $msg);
$headers = array('Authorization: key='. $gcm_header, '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);
echo $result;?>
答案 0 :(得分:0)
您需要有一个数据库表,可以存储所有注册用户的注册ID。完成后,您的服务器将能够将推送通知发送到该表中唯一注册ID所注册的所有设备。您可以编写一个register.php
文件,该文件将包含用于注册用户并将其存储到数据库中的代码。
register.php
<?php
// response json
$json = array();
/**
* Registering a user device
* Store reg id in users table
*/
if (isset($_POST["name"]) && isset($_POST["email"]) && isset($_POST["regId"])) {
$name = $_POST["name"];
$email = $_POST["email"];
$gcm_regid = $_POST["regId"]; // GCM Registration ID
// Store user details in db
include_once './db_functions.php';
include_once './GCM.php';
$db = new DB_Functions();
$gcm = new GCM();
$res = $db->storeUser($name, $email, $gcm_regid);
$registatoin_ids = array($gcm_regid);
$message = array("product" => "shirt");
$result = $gcm->send_notification($registatoin_ids, $message);
echo $result;
} else {
// user details missing
}
?>
有关详细说明,请查看此tutorial。