我正面临GCM推送通知的问题。我收到以下错误。
{
"multicast_id":4630467710672911593,
"success":0,
"failure":1,
"canonical_ids":0,
"results":[{
"error":"MismatchSenderId"
}]
}
以下是代码。任何帮助将非常感激。在此先感谢。
public function gcmPush()
{
$regId = "APA91bHFcgOssQZEqtdUk3EC1ojwC5-LVG3NPV2bMqKyC9rPymR6StmAbz-N7Ss8fnvruZhWWNrR3lmBqpjQItlu00AKHPbltBclUJF-EfC5qG4CF2xiuYYC0NCf8u5rbiYFk8ARhIT4lY2AEPWzGpl1OtTvQEC0gA";
$registatoin_ids = array($regId);
$message = array("msg" => 12345);
$this->send_notification($registatoin_ids, $message);
}
public function send_notification($registatoin_ids, $message)
{
// Set POST variables
$url = 'https://android.googleapis.com/gcm/send';
define('GOOGLE_API_KEY', 'AIzaSyBavsIgQKo1Nf9wKZ5o_fGvE_6MI52LFR0');
$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;
}
答案 0 :(得分:8)
“MismatchSenderId”是我们现在遇到的明显问题。
以下是导致此问题的可能情况。
案例1:发件人ID不匹配 - > 请检查您正在使用的项目编号。如果它是正确的。
案例2:错误的API密钥 - > 请确保您使用的是相同的API_Key。在大多数情况下,我们需要生成Server_Key而不是Android_Key。
案例3:设备ID错误 - > 大多数情况下,问题是由于错误的设备ID(GCM生成的注册ID)。
请确保无论何时生成新的API密钥,设备的设备ID都会发生变化。然后需要将近五五分钟才能产生效果。
注意:您的设备ID与API KEY绑定。
所以......
- 创建了新密钥。
- 适用于Android的GCM在Google Dev中“打开”。安慰。
- 使用后端注册的设备(Android Project正在完成其工作)。服务器上的设备密钥。
- 发送至设备。失败!每次都会从GCM返回相同的消息。
回顾一下。这不是Android Studio,Android操作系统或设备问题。 GCM服务器甚至没有尝试将消息发送到设备。我的服务器发送到GCM,它返回消息...
{"multicast_id":6047824495557336291,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"MismatchSenderId"}]}
到服务器。据我所知,这意味着设备的ID(在注册推送时返回到设备的ID,而后端(在控制面板中)保存的设备ID不匹配,或者以某种方式与API无关发送消息时使用的密钥。
当然,发送在我的服务器上启动,转到GCM,然后转到设备。
这就是没有发生的事情。消息从我的服务器发送到GCM并返回到我的服务器 - 出错。
超级沮丧,因为你们所有人都可以想象 - 我们之前都经历过这种噩梦般的事情: - )
参考:https://www.buzztouch.com/forum/thread.php?tid=C3CED924C86828C2172E924
希望它能解决你的问题。