我正在尝试为Android实现推送通知。我想从服务器向多个电话发送相同的消息。为此,我需要通过“获取”发送超过一个注册密钥“regId”。如果你看一下send_message.php的底部我有$regId = $_GET["regId"];
我只想传递一个以上的值。我该怎么做?
GCM.php
class GCM {
// constructor
function __construct() {
}
// Sending Push Notification
public function send_notification($registatoin_ids, $message) {
// include config
include_once './config.php';
// Set POST variables
$url = 'https://android.googleapis.com/gcm/send';
$fields = array(
'registration_ids' => $registatoin_ids,
'data' => $message,
);
$headers = array(
'Authorization: key=' . GOOGLE_API_KEY,
'Content-Type: application/json'
);
// Open connection
$ch = curl_init();
// Set the url, number of POST vars, POST data
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Disabling SSL Certificate support temporarly
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
// Execute post
$result = curl_exec($ch);
if ($result === FALSE) {
die('Curl failed: ' . curl_error($ch));
}
// Close connection
curl_close($ch);
echo $result;
}
}
?>
send_message.php
<?php
if (isset($_GET["regId"]) && isset($_GET["message"])) {
$regId = $_GET["regId"];
$message = $_GET["message"];
include_once './GCM.php';
$gcm = new GCM();
$registatoin_ids = array($regId);
$message = array("price" => $message);
$result = $gcm->send_notification($registatoin_ids, $message);
echo $result;
}
?>
我只是尝试测试演示应用程序,我必须看看我是否可以同时发送两个设备,其值为硬编码但仍然无法正常工作。我只是想在我正确地做之前先看看它是否有效。根据我读到的关于谷歌云消息的内容,如果您使用HTTP,它应该可以发送到多个设备。任何人都知道它失败的原因?它给了我“错误”:“InvalidRegistration”。我想php代码没有问题,而是GCM。这是我试过的:
<?php
if (isset($_GET["message"])) {
$regId = array("key1", "key2");
$message = $_GET["message"];
include_once './GCM.php';
$gcm = new GCM();
$registatoin_ids = array($regId);
$message = array("price" => $message);
$result = $gcm->send_notification($registatoin_ids, $message);
echo $result;
}
?>
答案 0 :(得分:2)
听起来您正在使用$_GET
传递注册ID。
这不是一个好主意,特别是对于多个ID。
我假设您想要从Android应用中发布数据
您应该使用$_POST
我建议你用JSON数组对它进行编码并将其发送到你的服务器
你可以在你的应用中创建它:
JSONArray regArray = new JSONArray();
regArray.put(regIds); //array of Ids
JSONObject json = new JSONObject();
json.put("message", message); //string
json.put("regIds", regArray);
这将创建以下JSON
{ "message":"some message here",
"regIds": [
"dsdfsfet366767547",
"63567356366reygh",
"sgdgtwetwetsdgsdg",
"sdgsdgsdgwet24t"
]
}