https://developers.google.com/cloud-messaging/android/client 我阅读了这篇文章,它说我需要下载并将配置文件添加到我的项目中。但他们没有解释为什么我要这样做?如果不添加配置文件,就不能使用吗?
https://developers.google.com/cloud-messaging/android/client 我阅读了这篇文章,它说我需要下载并将配置文件添加到我的项目中。但他们没有解释为什么我要这样做?如果不添加配置文件,就不能使用吗?
如果您没有生成并添加适当的配置文件到您的项目中,那么是的,您将无法使推送通知工作。
在 SDK 的早期版本中,您需要在代码中手动配置 senderID。
现在,通过 GCM 3,Google 统一了配置 Google 服务的方式。他们的门户网站现在让您配置您想要为您的应用程序启用的所有服务。完成后,它会生成一个包含移动设备所需参数的配置文件以使用该服务。
没有这些信息,特别是项目编号,Google 将无法生成 InstanceID,这允许使用您的 senderID 和 Server API 密钥接收推送通知。这是一种将 Android 上的客户端凭据与后端上的服务器凭据相匹配的方法,从而仅向您的 Android 应用程序发送推送通知。
google-services Gradle Android 插件使用配置文件来生成所需的配置资源。这意味着如果您的 build.gradle
文件中有以下内容,则表示您正在使用它:
apply plugin: 'com.google.gms.google-services'
然后,它将生成资源R.string.gcm_defaultSenderId
,这个资源可以在Google GCM示例代码中看到:
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服务参数集中在一起,更加清晰。
将您的应用程序链接到项目/ SenderID是必需的,但是如果您真的不喜欢拥有此JSON Google服务器配置文件的想法,您可以通过手动将所需值放在其他地方来解决此问题。
我也在从事多个GCM项目,但仍在使用Eclipse、Eclipse-ADT插件和旧的项目结构,并且没有将此config文件包含到我的项目中。一开始我也感到困惑,因此我尝试在一个使用Gradle的Android Studio项目中使用它,但是这个配置文件也不是必需的。
因此,Rémond的答案可能有道理,但对我来说一切都很好(包括生成InstanceID-Token和主题消息也能正常工作)。
所以实际上,即使不添加该文件,它也应该可以正常工作,而您也不需要这个文件。
https://developers.google.com/android/guides/setup
中仅包含 GCMcom.google.android.gms:play-services-gcm:8.1.0
。如果我这样做,那么在 Android Studio 中找不到gcm_defaultSenderId
。 - Zapnologicacom.google.android.gms:play-services:8.3.0
开始,我认为现在需要配置文件。我尝试在没有它的情况下构建我的项目,但是出现了以下错误:**执行任务 ':app:processDebugGoogleServices' 失败。 - Mateus Gondim