Android谷歌云消息传递(GCM)和不匹配的发件人ID

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

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

我创build了客户端注册过程与发件人ID等服务器端应用程序,我使用注册ID和发件人ID发送消息。

当我通过Eclipse在手机中安装应用程序时,推送通知工作正常,所以发件人ID我是正确的。

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

MissmatchedSenderId 

任何人都有一个想法,为什么我得到这个。

我已经阅读了这些话题:

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

当使用GCM发送消息时,我始终得到响应'MismatchSenderId'

但在我的情况下,奇怪的是,一切正常工作正常之前导出应用程序apk然后我有这个问题。

任何想法大多是欢迎。

Solutions Collecting From Web of "Android谷歌云消息传递(GCM)和不匹配的发件人ID"

我其实也有同样的问题,正在研究10多个小时。

我终于find了问题! 没有任何与服务器API密钥或浏览器API密钥或SenderID相关的信息。 问题是Google文档:

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

谷歌说,你必须调用getRegistrationId函数,只有当id是空的调用注册! 这对我来说根本不起作用…当我这样做的时候,我发送到这个regId的时候总是找回MismatchSenderId。

我的解决scheme是:总是打电话

 GCMRegistrar.register(this, SENDER_ID); 

和什么时候的function

 protected void onRegistered( Context c, String regId ) 

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

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

由GCM提供的SenderID和API密钥的组合在每个应用程序中都是唯一的。

当我们在客户端更新我们的senderID但仍使用与旧的senderID相关的API密钥时,我们遇到了senderID不匹配问题。

在更新服务器API密钥后,我们能够解决问题。 另外@schurtertom的答案是非常有帮助的