我尝试迁移到GCM,我有一个问题,与SENDER_ID我需要提供.我使用谷歌的演示项目.在这个项目中,如果我理解这一点,我需要SENDER_ID在CommonUtilities.java文件中为应用程序提供一个.
我提供的SENDER_ID是我在https://code.google.com/apis/console/上注册的API密钥,其格式为:( AIzaSyAxxxxxxx_xxxxxxxxxxxnoGZw共40个字符).
当SENDER_ID我在"BroadcastReceiver mHandleMessageReceiver"上使用此字符串时出现错误消息:来自GCM:错误(INVALID_SENDER)..
哪里出错了?我提供的字符串不是SENDER_ID?
谢谢.
我正在尝试使用Google Cloud Messaging运行我的应用.我正在关注可以在github上找到的Google Cloud Messaging快速入门应用程序.
在他们的快速入门应用程序中,我们会向Google Cloud Messaging服务部门申请注册令牌,以便我们的应用程序实例可以与云对话.
我发现这行代码:
RegistrationIntentService.java::onHandleIntent(Intent intent):
InstanceID instanceID = InstanceID.getInstance(this);
String gcmRegistrationToken = instanceID.getToken(getString(R.string.gcm_defaultSenderId),
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
Run Code Online (Sandbox Code Playgroud)
令我困惑的部分是这个值:R.string.gcm_defaultSenderId
它在他们的快速入门应用程序中定义,但它是自动生成的.
我怎么能让我的应用程序生成该值?
我在这里查找InstanceID.getToken的文档 getToken(java.lang.String, java.lang.String)
InstanceID.getoken返回授权实体(例如:云服务)的令牌,以代表由实例ID标识的应用程序执行操作.这与OAuth2令牌类似,但它适用于应用程序实例而不是用户.
函数标题如下所示:
public String getToken (String authorizedEntity, String scope)
Run Code Online (Sandbox Code Playgroud)
我看到第一个需要的arg getToken是String authorizedEntity.那么,这个authorizedEntity字符串应该是什么?
它清楚地标识了发出请求的应用程序的实例,但我应该如何生成它?在快速启动应用程序中,我找不到它定义res/value/strings.xml,我只能在R.java中找到它定义app/build/generated/res/google-services/debug/values/values.xml
看起来像:
<resources>
<string name="gcm_defaultSenderId">175643285</string>
</resources>
Run Code Online (Sandbox Code Playgroud)
该文件中只有一个字符串,该文件深埋在项目结构中.我无法在代码中找到以gcm_defaultSenderId编程方式生成的任何地方.
我很困惑,因为我怎么知道字符串在那里?我从来没有定义过这个字符串,并且谷歌搜索"无法解决gcm_DefaultSenderId"没有给出任何结果.我正在尝试在自己的应用中实施Google Cloud Messaging,因此我自己的应用程序当然不会自动知道生成该字符串.我该怎么做那个身份证号码?
这就是为什么我认为重要的是我理解InstanceID.getToken想要的这个authorizedEntity字符串是什么,以便我可以正确地生成一个给getToken.也许我的想法是完全错误的,也许我不应该生成gcm_defaultSenderId,但我知道我不应该改变R.java,并且该values.xml文件也在"生成"文件夹下.
请帮忙?如果我在搜索中找到答案,我会很乐意发布答案.非常感谢任何帮助,请注意:我的项目从Eclipse导出到Gradle,因此它仍然具有Eclipse项目/文件夹结构,不应该导致任何问题,但文件位于不同的位置.values.xml
我试图运行GCM本示例应用程序在这里在我的Eclipse.
我没有使用Android工作室gradle,我的日食中没有插件.
GCM在eclipse中导入客户端android应用程序后,我收到错误:
gcm_defaultSenderId无法解析或不是字段
我不想转移到Android工作室.
如何删除此错误并使我的应用运行?
如果我要安装gradle,我应该在Eclipse-MARS中使用哪个插件?
PS - 我之前从未使用过gradle.