我想在我的
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.
如果我这样做,一切正常!