Android Google Cloud Messaging(GCM)和不匹配的发件人ID

我想在我的 Android应用程序中使用GCM服务.

为此,我使用了http://developer.android.com/guide/google/gcm/gcm.html的android文档

我创建了客户端注册过程与发件人ID等和服务器端应用程序,我使用注册ID和发件人ID发送邮件.

当我通过Eclipse在我的手机中安装应用程序时,推送通知工作正常,因此我拥有的发件人ID是正确的.

然后,当我用Eclipse导出apk文件并将其安装在我的手机中时,我收到SenderId错误错误消息

MissmatchedSenderId

任何人都知道为什么我会得到这个.

我读过这些话题:

Why do I get “MismatchSenderId” from GCM server side?

When sending messages using GCM,I keep getting the response ‘MismatchSenderId’

但在我的情况下奇怪的是,在将应用程序导出为apk之前一切正常,然后我遇到了这个问题.

任何想法都是最好的.

解决方法

我实际上遇到了同样的问题,并且正在研究超过10个小时.

我终于找到了问题!
与服务器API密钥或浏览器API密钥或SenderID无关.
问题是Google文档:

final String regId = GCMRegistrar.getRegistrationId(this);
if (regId.equals("")) {
  GCMRegistrar.register(this,SENDER_ID);
} else {
  Log.v(TAG,"Already registered");
}

Google表示你必须调用getRegistrationId函数并且只有当id为空时才调用register!
这对我来说根本不起作用……当我这样做时,我总是在发送到这个regId时找回MismatchSenderId.

我的解决方案是:
总是打电话

GCMRegistrar.register(this,SENDER_ID);

而当功能

protected void onRegistered( Context c,String regId )

被称为在我的服务器数据库中保存regId.

如果我这样做,一切正常!

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...