PHP GCM错误消息MismatchSenderId [英] PHP GCM error message MismatchSenderId

查看:99
本文介绍了PHP GCM错误消息MismatchSenderId的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正面临着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)
{
//设置POST变量
$ url ='https:// android .googleapis.com / GCM /发送';
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'
);

//打开连接
$ ch = curl_init();

//设置网址,POST变量的数量,POST数据
curl_setopt($ ch,CURLOPT_URL,$ url);
curl_setopt($ ch,CURLOPT_POST,true);
curl_setopt($ ch,CURLOPT_HTTPHEADER,$ headers);
curl_setopt($ ch,CURLOPT_RETURNTRANSFER,true);

//临时禁用SSL证书支持
curl_setopt($ ch,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ ch,CURLOPT_POSTFIELDS,json_encode($ fields));
$ b $ //执行后
$结果= curl_exec($ ch)
if($ result === FALSE){
die('Curl failed:'。 curl_error($ CH));
}

//关闭连接
curl_close($ ch);
echo $ result;


解决方案

MismatchSenderId



以下是可能导致此问题的情况。



案例1:发件人ID不匹配 - >
请检查您正在使用的项目编号。如果这是正确的。

案例2:错误的API密钥 - >
请确保您使用的是相同的API_Key与否。在大多数情况下,我们需要生成Server_Key而不是Android_Key。



案例3:错误的设备ID - >
大多数情况下,问题是由于设备ID错误(由GCM生成的注册ID)。



请确保每当您生成新的API密钥,设备的设备ID会发生变化。然后需要将近5分钟才能获得效果。

注意:
您的设备ID绑定了API KEY 。

所以....
$ b


- 创建了新密钥。

- 用于Android的GCM在Google Dev中启用了on。安慰。

- 后端注册的设备正常(Android项目正在完成其工作)。设备密钥在服务器上。

- 发送至设备。失败!每次都从GCM返回相同的消息。


重述。这不是Android Studio,Android操作系统或设备问题。 GCM服务器甚至没有尝试将消息发送到设备。我的服务器发送到GCM,它会返回消息...

  {multicast_id:6047824495557336291,success:0, 失败:1,canonical_ids:0,results:[{error:MismatchSenderId}]} 

到服务器。据我所知,这意味着设备的ID(在注册推送时返回到设备的设备ID),以及保存在后端(在控制面板中)的设备ID不匹配,或者与API无关发送消息时使用的密钥。



当然,发送会在我的服务器上启动,进入GCM,然后进入设备。



这是没有发生的事情,消息从我的服务器到GCM并返回到我的服务器 - 出现错误。



所有超级令人沮丧你可以想象 - 我们都曾经经历过这种梦魇般的事情: - )

$ b

参考: https://www.buzztouch.com/forum/thread.php?tid=C3CED924C86828C2172E924



希望它能解决您的问题。


I am facing the problem with GCM push notification. I am getting the following error.

{
  "multicast_id":4630467710672911593,
  "success":0,
  "failure":1,
  "canonical_ids":0,
  "results":[{
      "error":"MismatchSenderId"
  }]
}

Following is the code. Any help would be really appreciated. Thanks in Advance.

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;
}

解决方案

"MismatchSenderId" is the obvious problem that we are getting nowadays.

Here are the possible cases that cause this problem.

Case 1: Mismatching Sender ID -> Please check the Project number which you are using. If it's is correct or not.

Case 2: Wrong API Key -> Please be sure that you are using the same API_Key or not. And in most of the cases, we need to generate Server_Key instead of Android_Key.

Case 3: Wrong Device's ID -> Most of the time the problem is due to the wrong Device ID(Registration ID generated by GCM).

Please be ensure that that Whenever you generate new API key, the device id's of your device gets changed. Then it will take almost 5 five minutes to get an effect.

Note : Your device id is bound with the API KEY.

So....

--New Key created.

--GCM for Android Turned "on" in Google Dev. Console.

--Device registered with backend fine (Android Project is doing its job). Device key on the server.

--Send to device. Fail! The same message is returned from GCM everytime.

To Recap. This is NOT an Android Studio, Android OS, or Device issue. The GCM servers are not even trying to send the message to the device. My server sends to GCM, it returns the message...

{"multicast_id":6047824495557336291,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"MismatchSenderId"}]} 

to the server. As far as I can tell this means the Device's ID (the one returned to the device when it registered for a push, and the one saved on the backend (in the control panel) does not match, or is somehow not associated with the API Key used when sending the message.

Sending, of course, starts on my server, goes to GCM, then goes to the device.

This is what's not happening. The message goes from my server to GCM and back to my server - with the error.

Super frustrating as all of you can imagine - we've all been through this nightmarish stuff before :-)

Reference : https://www.buzztouch.com/forum/thread.php?tid=C3CED924C86828C2172E924

Hope it will solve your problem.

这篇关于PHP GCM错误消息MismatchSenderId的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆