当前位置: 首页 > 知识库问答 >
问题:

Android谷歌云消息(GCM)和匹配的发送者ID

花俊雄
2023-03-14

我正在尝试在我的android应用程序中使用GCM服务。

为此,我使用Android留档从http://developer.android.com/guide/google/gcm/gcm.html

我用发送者id等创建了客户端注册过程,并在服务器端应用程序中使用注册id和发送者id发送消息。

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

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

MissmatchedSenderId

有人知道我为什么会得到这个。

我读过这些主题:

为什么我从GCM服务器端得到“不匹配的Senderid”?

当使用GCM发送消息时,我一直得到错误的响应

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

任何想法大多是好的。

共有2个答案

郗丰
2023-03-14

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

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

更新服务器API密钥后,我们能够解决此问题。@schurtertom的回答也很有帮助

贺光华
2023-03-14

事实上,我也有同样的问题,并且研究了10个多小时。

我终于发现了问题!与服务器API密钥或浏览器API密钥或SenderID无关。问题在于谷歌文档:

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

谷歌说,你必须调用getCORstrationId函数,只有当id是空的呼叫寄存器!这对我一点也不起作用...当我这样做的时候,我总是在发送到这个规则的时候得到MismatchSenderId。

我的解决办法是:总是打电话

GCMRegistrar.register(this, SENDER_ID);

当函数

protected void onRegistered( Context c, String regId )

在我的服务器数据库中保存regId。

如果我这样做,一切都很好!

 类似资料:
  • 我正在使用GCM向Android应用程序发送和接收推送通知。我是从这里给出的一个例子中创建这个应用程序的(Android的谷歌云消息GCM和推送通知) 这些是我正在使用的java文件 最终语境=此; shareRegidTask=new AsyncTask() AsyncTask()上出错 通知兼容。Builder mBuilder=new NotificationCompat。建造商( 这).

  • 更新:已弃用GCM,请使用FCM 如何将新的Google云消息集成到PHP后端?

  • 我正在尝试,为了实施新的GCM,我遵循Google get声明:http://developer.android.com/guide/google/gcm/gs.html 我被困在获取我的设备注册ID! 我的应用程序一直试图与谷歌服务器连接,这里我的错误日志: 这是我的活动代码,询问身份证: 这是我的服务代码 这是我的Android清单: 我遵循谷歌的指示,但我坚持这个服务不可用的错误, 我做错了

  • 上面写着“Google Cloud Messaging(GCM)是一个免费服务”,但是为了使它能够运行,我需要在Google Cloud平台中创建一个项目,这需要花钱…那怎么免费呢?还是我错过了什么?

  • 我正在开发android GCM,以便我的应用程序向用户发送推送通知。我正在学习这个教程 http://www.androidhive.info/2012/10/android-push-notifications-using-google-cloud-messaging-gcm-php-and-mysql/ 但是在本教程中,它表明我们可以向单个设备发送推送通知。但我想一次向所有用户发送推送通知。