为什么从GCM服务器端得到“MismatchSenderId”?

我正在尝试为我的Android应用创build一个推送服务,并且我遵循Google GCM的文档和示例来解决此问题:

我可以注册/取消注册我的Android应用程序。 从我的服务器端,我可以看到我有一个订阅注册,但是当我尝试从服务器发送消息到我的Android应用程序时,我总是得到以下错误:

发送消息到设备#0时出错:MismatchSenderId

对于我的Android应用程序,我使用SENDER_ID = 200000000001。

而对于我的服务器方面,谷歌说我使用API​​_KEY = AIzxxxxxxxxxxxxxxxxXxxXxxXxxxXXXXXxxxxs

我遵循这个文件:

http://developer.android.com/guide/google/gcm/demo.html

我也在我的Google API面板中启用了GCM,但是我会得到那个恼人的错误信息。

我该如何解决这个问题?

您的服务器是否使用GCM服务器返回给您的应用程序的新注册ID? 我有这个问题,如果试图发送一个消息到旧的C2DM服务器发出的注册ID。

还要仔细检查发件人ID和API_KEY,它们必须匹配,否则你将得到那个MismatchSenderId错误。 在Google API控制台中,查看您的项目的url:

https://code.google.com/apis/console/#project:xxxxxxxxxxx 

xxxxxxxxx是项目ID,它是发件人ID。

并确保API密钥属于“服务器应用程序的密钥(IPlocking)”

当您不使用数字ID时会发生不匹配。 项目ID不是发件人ID! 我花了9个小时才弄明白这一点。 对于谷歌创build的所有困惑,请检查以下链接以获取数字ID。

https://console.cloud.google.com

代替

https://console.developers.google.com

希望能帮助到你!!

更新: – 事情又改变了。 现在,发件人ID是与Firebase。

转到https://console.firebase.google.com并select您的项目。; 在设置 – >云消息传递下,您可以find发件人ID。

它的工作原理!

请在terminal中运行脚本

 curl -X POST \ -H "Authorization: key= write here api_key" \ -H "Content-Type: application/json" \ -d '{ "registration_ids": [ "write here reg_id generated by gcm" ], "data": { "message": "Manual push notification from Rajkumar" }, "priority": "high" }' \ https://android.googleapis.com/gcm/send 

如果成功或失败,它会给出消息

最近我遇到了同样的问题,我根据项目ID为“gcm_sender_id”尝试了不同的值。 但是,“gcm_sender_id”值必须设置为“项目编号”。

您可以在菜单> IAM和pipe理>设置下find该值。

查看截图: GCM项目编号

 InstanceID.getInstance(getApplicationContext()).getToken(authorizedEntity,scope) 

authorizedEntity是服务器的项目编号

您的Android应用程序需要更正12位数的编号(又名GCM项目编号)。 如果这个12位数字不正确,那么你也会得到这个错误。

这个12位数字可以在您的Google Play控制台中的特定应用“服务和API” – >“LINKED SENDER IDS”中find

使用此处生成的发件人ID和API密钥: http : //developers.google.com (首先浏览Google Cloud Messaging并按照说明进行操作)。

如果用于原生Android,请检查您的AndroidMaifest.xml文件:

 <meta-data android:name="onesignal_google_project_number" android:value="str:1234567890" /> <!-- its is correct. --> 

代替

  <meta-data android:name="onesignal_google_project_number" android:value="@string/google_project_number" /> 

希望能帮助到你!!