什么是被授权实体?在自己的应用中找不到gcm_defaultSenderId
我正在尝试使用 Google Cloud Messaging 运行我的应用。我正在关注Google Cloud Messaging Quickstart App,该应用程序可以在github上找到。
在他们的快速入门应用中,我们会在某个时候向 Google Cloud 消息服务请求注册令牌,以便此应用实例可以与云通信。
我发现这行代码:
RegistrationIntentService.java::onHandleIntent(Intent intent):
InstanceID instanceID = InstanceID.getInstance(this);
String gcmRegistrationToken = instanceID.getToken(getString(R.string.gcm_defaultSenderId),
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
让我感到困惑的部分是这个值:它是在他们的快速入门应用中定义的,但它是自动生成的。R.string.gcm_defaultSenderId
我应该如何让我的应用产生这个价值?
我在这里查找实例ID.getToken的文档 getToken(java.lang.String, java.lang.String)
InstanceID.getoken
返回一个令牌,该令牌授权实体(例如:云服务)代表实例 ID 标识的应用程序执行操作。这类似于令牌,不同之处在于,它适用于应用程序实例而不是用户。OAuth2
函数头如下所示:
public String getToken (String authorizedEntity, String scope)
我看到想要的第一个参数是。那么,这个授权实体字符串应该是什么?
它清楚地标识了发出请求的应用程序的实例,但是我应该如何生成它?在快速入门应用中,我找不到在 中定义的它,我只能找到它在 R.java 和getToken
String authorizedEntity
res/value/strings.xml
app/build/generated/res/google-services/debug/values/values.xml
它看起来像这样:
<resources>
<string name="gcm_defaultSenderId">175643285</string>
</resources>
该文件中只有一个字符串,并且该文件深埋在项目结构中。我在代码中找不到以编程方式生成此内容的任何地方。gcm_defaultSenderId
我很困惑,因为,我怎么知道那根绳子在那里?我从未定义过该字符串,并且谷歌搜索“无法解析”没有给出任何结果。我正在尝试在我自己的应用程序中实现Google Cloud Messaging,因此当然我自己的应用程序不会自动知道生成该字符串。我应该如何制作那个ID号?gcm_DefaultSenderId
这就是为什么我认为了解Adicleid.getToken想要的这个授权实体字符串很重要的原因,这样我就可以正确地生成一个要提供给getToken的字符串。也许我的想法是完全错误的,也许我不应该生成gcm_defaultSenderId,但我知道我不应该改变R.java,并且文件也在“生成”文件夹下。values.xml
请帮忙吗?如果我在搜索中找到答案,我会很乐意发布答案。任何帮助非常感谢,注意:我的项目是从Eclipse导出到Gradle的,所以它仍然具有Eclipse项目/文件夹结构,这应该不会造成任何问题,但文件在不同的地方。values.xml