我搜索了很多,但找不到任何解决方案。
我正在使用PHP服务器并且正在尝试将PushNotifications发送到我的Android应用程序。但是,当我在浏览器中尝试我的代码时,我收到此错误:“Error = MissingRegistration”。
以下是我运行的代码:
registration_ids = array($regId);
$message = array(
'hangMessage' => $message,
'userId' => $user_id
);
$result = $gcm->send_notification($registration_ids, $message);
这就是我所说的代码:
$url = "https://android.googleapis.com/gcm/send";
$fields = array(
'registration_ids' => $regisration_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_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 psot
$result = curl_exec($ch);
if($result == false){
die('Curl failed: ' . Curl_error($ch));
}
//Close connection
curl_close($ch);
echo $result;
根据Google API控制台报告系统,请求甚至不会一直到服务器。
任何人都知道可能出现什么问题?
答案 0 :(得分:3)
您的请求应如下所示:
Content-Type:application/json
Authorization:key=AIzaSyB-1uEai2WiUapxCs2Q0GZYzPu7Udno5aA
{
"registration_ids" : ["APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx..."],
"data" : {
...
},
}
因此我认为错误可能出在这一行:
'Content-Type= application/json'
尝试将=
更改为:
。
由于内容类型标头无效,GCM服务器可能会假定内容类型的默认值(可能是application/x-www-form-urlencoded;charset=UTF-8
,在这种情况下,注册ID需要不同的密钥,这可以解释{{ 1}}错误)。
MissingRegistration
错误的事实意味着请求确实到达了GCM服务器。 GCM请求未记录在Google API控制台报告系统中。