为什么我需要将配置文件添加到我的项目才能正确设置gcm?

时间:2015-07-14 16:04:36

标签: android google-cloud-messaging

https://developers.google.com/cloud-messaging/android/client 我读过这篇文章。它说我需要下载配置文件并将其添加到我的项目中。但他们没有解释,我为什么要这样做呢?如果不添加配置文件,它会不会工作?

2 个答案:

答案 0 :(得分:17)

如果您没有为项目生成并添加正确的配置文件,那么是的,您将无法获得推送通知。

在以前版本的SDK中,您必须在代码中手动配置senderID。

现在,通过GCM 3,Google统一了配置Google服务的方式。他们的门户现在允许您配置要为您的应用启用的所有服务。完成后,它会生成一个配置文件,其中包含您需要从移动设备使用该服务的参数。

如果没有该信息,最明显的是项目编号,Google将无法生成允许使用您的senderID和Server API密钥接收推送的InstanceID。这是一种匹配Android上的客户端凭据的方法,后端的服务器凭据允许您仅向您的Android应用和应用发送推送通知。

它是如何运作的?

google-services Gradle Android插件使用配置文件生成所需的配置资源。如果您在build.gradle文件中有此内容,则表示您正在使用它:

apply plugin: 'com.google.gms.google-services'

然后,它会生成您在Google GCM示例代码中看到的资源R.string.gcm_defaultSenderId

InstanceID instanceID = InstanceID.getInstance(this);
String token = instanceID.getToken(getString(R.string.gcm_defaultSenderId),
        GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);

但是,如果您决定在代码中对SenderID进行硬编码并将其传递给instanceID.getToken方法,那么它确实会起作用。 拥有JSON配置文件是Google提供的便利。它更加清晰,因为它集中了您的所有Google服务参数。

您的应用程序与project / senderID的链接是必需的,但如果您真的不喜欢使用此JSON Google服务器配置文件,则可以通过手动将所需值放在其他位置来解决此问题。

答案 1 :(得分:6)

我也在研究多个GCM项目,但仍然使用Eclipse,Eclipse-ADT-plugin和旧的项目结构,我没有将这个配置文件包含到我的项目中。我在开始时也很困惑,因此在使用Gradle的Android-Studio项目中尝试了它,但配置文件也没有必要。

所以Rémond的答案可能有意义,但对我来说一切正常(包括生成InstanceID-Token以及Topic-Messaging正在运行)。

事实上,它应该可以在不添加文件的情​​况下工作,而且无论如何都不需要这个文件。