为什么在应用程序更新时重新注册到gcm?

时间:2014-02-12 22:26:11

标签: android push-notification google-cloud-messaging api-key

我在我的应用程序中使用gcm。 在Google Developers Console页面中,我创建了一个项目并获得了项目ID:

Google Developers Console Project Number image

在我的应用程序中使用此项目ID,用户将注册到gcm服务器并获取注册ID。然后将其发送到我的第三方服务器进行存储。

当第三方服务器想要向用户发送消息时,它使用我在后期操作标题中的Google Developer Console页面中获得的apikey,并使用已为此特定用户存储的注册ID。我正在使用的api密钥来自:

Google Developers Console Page API key image

请注意,这是服务器应用程序的关键,我使用此信息的方式与我解释的一样。

一切正常,消息由正确的用户检索等等。我打算在谷歌播放中部署我的应用程序但是该部分写的内容:GCM advanced topics让我感到困惑。它说:

  

更新应用程序时,它应该使其现有的注册ID无效,因为它不能保证与新版本一起使用

以及Implementing GCM client sample code中示例代码的评论部分有以下评论:

// Check if app was updated; if so, it must clear the registration ID
// since the existing regID is not guaranteed to work with the new
// app version.

这两种解释是什么意思?我想,除非我按下再生键:

Google Developers Console Renegerate Key Image

我的api密钥不会改变。当我更新我的应用程序时,为什么它(或它真的)会改变?或者我得错了什么?

1 个答案:

答案 0 :(得分:4)

您正在混合使用两个不同的术语--API密钥和注册ID。在部署新版本时,您不必创建新的API密钥。

Google建议您执行的操作(在上面的引号中)是将每个安装新版本的设备重新注册到GCM(而不是依赖于之前获得的注册ID),因为现有的注册ID分配给了您的应用程序的设备不能保证适用于新版本的应用程序。