[英]GCM Phonegap PHP Push Notification Android
我正在使用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;?>
您需要具有一个数据库表,该表可以存储所有已注册用户的注册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
}
?>
有关更详细的描述,您可以看一下本教程 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.