php-尝试将数据发送到GCM时缺少MissingRegistraton错误
作者:互联网
我已经搜索了很多,但是找不到这个问题的任何解决方案.
我正在使用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控制台报告系统,请求甚至不会一直发送到服务器.
任何人都知道什么地方可能出问题了吗?
解决方法:
您的请求应如下所示:
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需要使用其他密钥,这将解释MissingRegistration错误).
顺便说一句,您收到MissingRegistraton错误的事实意味着该请求确实到达了GCM服务器. GCM请求未记录在Google API控制台报告系统中.
标签:push-notification,google-cloud-messaging,php,android 来源: https://codeday.me/bug/20191123/2066573.html