Bra*_*don 26 notifications android google-cloud-messaging
有人可以帮我理解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);
Run Code Online (Sandbox Code Playgroud)
这是来自Google示例应用程序,用于将GCM实现到您的应用程序中,甚至无法在其应用程序中编译!我确定这是每个应用程序特有的东西.我已经将GCM API添加到我的应用程序中,只是不知道这个字符串应该是什么!谢谢!
Art*_*son 28
gcm_defaultSenderId是google-services gradle插件中包含的字符串.一定要有:
apply plugin: 'com.google.gms.google-services'
Run Code Online (Sandbox Code Playgroud)
在build.gradle文件中.
此插件应该在最新版本的构建工具中提供.
就像Vesko说这是你的发件人ID,在这种情况下是你的开发控制台项目中的项目编号.google-services插件会从您下载的项目配置文件中提取此内容.
引用此文档,您可以在其中找到有关该实现的详细信息:
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);
Run Code Online (Sandbox Code Playgroud)
所以你可以看到,你应该传递的第一个参数getToken()是authorizedEntity,它应该是你的Google Developers的项目ID :)
即使GitHub中的项目具有该字符串,它也不会为您提供任何好处,因为这authorizedEntity对每个应用程序来说都是独一无二的.
我讨厌那些有问题的Gradle插件,并试图让google-services插件在一个有多种口味的项目中运行也不好玩.
我最终得到了Sender Id的名字:
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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17013 次 |
| 最近记录: |