请有人帮助我理解以下代码中的gcm_defaultSenderId是什么(在RegistrationIntentService.java中的onHandleIntent中找到):
InstanceID instanceID = InstanceID.getInstance(this);
String token = instanceID.getToken(getString(R.string.gcm_defaultSenderId),
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
// [END get_token]
Log.i(TAG, "GCM Registration Token: " + token);这是从谷歌示例应用程序实现GCM到您的应用程序,它甚至没有编译在他们的应用程序!我肯定这是每个应用程序特有的东西。我已经将GCM添加到我的应用程序中了,只是不知道这个字符串应该是什么!谢谢!
发布于 2015-06-07 15:36:13
引用THIS文档,您可以在其中找到有关该实现的详细信息:
String authorizedEntity = PROJECT_ID; // Project id from Google Developers Console
String scope = “GCM”; // e.g. communicating using GCM, but you can use any
// URL-safe characters up to a maximum of 1000, or
// you can also leave it blank.
String token = InstanceID.getInstance().getToken(authorizedEntity,scope);因此,正如您所看到的,您应该传递给getToken()的第一个参数是authorizedEntity,它应该是来自Google开发人员的项目id :)
即使GitHub中的项目有这个字符串,它也不会为您提供任何好的服务,因为这个authorizedEntity对于每个应用程序来说都是独一无二的。
发布于 2015-06-09 04:29:32
gcm_defaultSenderId是一个字符串,包含在google插件中。确保你有:
apply plugin: 'com.google.gms.google-services'在build.gradle文件中。
这个插件应该可以在最新版本的构建工具中使用。
正如Vesko所说,这是您的发件人ID,在本例中是开发控制台项目中的项目编号。谷歌服务插件从下载的项目配置文件中提取这一点。
发布于 2016-08-17 11:48:03
我讨厌那些fun的Gradle插件,试图让google服务插件在一个有多种口味的项目中运行也没有什么乐趣。
最后,我得到了发件人的名字:
InstanceID instanceID = InstanceID.getInstance(this);
String gcmDefaultSenderId = getString( getResources().getIdentifier("gcm_defaultSenderId", "string", this.getPackageName()) );
String token = instanceID.getToken( gcmDefaultSenderId, GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);https://stackoverflow.com/questions/30694817
复制相似问题