Android GCM SENDER ID 与 API KEY 使用情况

Posted

技术标签:

【中文标题】Android GCM SENDER ID 与 API KEY 使用情况【英文标题】:Android GCM SENDER_ID vs API_KEY usage 【发布时间】:2016-02-01 06:33:54 【问题描述】:

我正在将 GCM 集成到我的应用程序中。 2 年前我做了一项研发,用户可以像这样发送主要活动的详细信息

GCMRegistrar.checkDevice(this);
        GCMRegistrar.checkManifest(this);
        String regId = GCMRegistrar.getRegistrationId(this);
        if (regId.equals("")) 
          GCMRegistrar.register(this, SENDER_ID);   
         else 
          Log.v(TAG, "Already registered");
        

在这里我们可以发送 SENDER_ID,它是 api 密钥(如果我没记错的话,比如 AIxxxxxxxxxxxxxp-xxxxx_xxxx_2xxxxxx2_De)。

但是我们如何使用示例应用发送它。生成的 SENDER_Id 与 API_KEY 和 SERVER_API_KEY 有什么区别。这是如何实施的? 我已经通过这个链接https://developers.google.com/cloud-messaging/registration。却一头雾水。任何机构都可以帮我解决这些问题

    SENDER_ID、API_KEY 和 SERVER_API_KEY。那些是什么?它们在何时何地使用? 在调试模式下使用 google-service.json 文件?已经通过链接What does google-services.json really do? 是需要手动填写json里面的entry,还是android api的填写?输入喜欢 “oauth_client”:[], "api_key": [], 在下一行取自 RegistrationIntentService.java。 R.string.gcm_sender_id 基本上是 SENDER_ID 或 API_KEY 字符串令牌 = instanceID.getToken(getString(R.string.gcm_sender_id), GoogleCloudMessaging.INSTANCE_ID_SCOPE,空);

还有基于最新的 GCM 集成实现的教程(除了 developer.android 提供的示例)

我们将不胜感激。

【问题讨论】:

【参考方案1】:

    SENDER_ID 是 13 位(当前)数字字符串,它是您在 Google Developer Console 中创建的 Google 项目的项目编号,用于在客户端注册应用程序并获取 device token(registration_id ),然后在您向 gcm 终端服务器发送通知时用作收件人。

    API_KEY,SERVER_API_KEY是同一个东西,都是以AIza开头的40个字符的String,它们被用作认证,所以GCM服务器知道谁在发送通知,这个人是否有权发送通知那些registration_id(最初是SENDER_ID,因为那是registration_id的来源)。

2&4。在调试模式下,文件的使用是传入SENDER_ID,这就是你问题4中R.string.gcm_sender_id的来源。

    不太明白这个问题,API_KEY是服务端使用的,Android客户端应该不需要处理。

【讨论】:

好的明白了。根据第 3 点,我的问题是,如果您打开 google-service,json,它有很多空值,就像我在问题中给出的那样。我们是否需要手动填写这些值,否则 GCM API 会处理这些。?

以上是关于Android GCM SENDER ID 与 API KEY 使用情况的主要内容,如果未能解决你的问题,请参考以下文章

多个站点 Web 推送是不是需要多个 gcm_sender_id?

(GCM - MISMATCH SENDER ID) 使用多个推送服务时

Android GCM 注册失败。为啥?

浏览器中的“代码:Messaging / Incorrect-GCM-sender-id”错误消息

GCM 注册时出现 INVALID_SENDER 错误

Node.js GCM 推送通知允许的 ID 数量?