GCM 直接从 Android 访问 API 和通过 Web 服务器访问 API 的区别
Posted
技术标签:
【中文标题】GCM 直接从 Android 访问 API 和通过 Web 服务器访问 API 的区别【英文标题】:Differences GCM Accessing APIs directly from Android and Accessing APIs via a web server 【发布时间】:2013-12-09 13:31:42 【问题描述】:我想知道Accessing APIs directly from android
和Accessing APIs via a web server
创建 GCM API 密钥的区别。我想知道两者的优缺点。
谢谢
【问题讨论】:
不清楚你在问什么。服务器和客户端的 API 有不同的用途。从服务器通过 HTTP 或 XMPP 协议访问 GCM 以将消息发送到您在 Android 设备上的应用程序。在客户端(Android 应用)中,您有 API(通过 GoogleCloudMessaging 类)将您的应用注册到 GCM 并将上游消息从您的应用发送到您的服务器。 @Eran - 我认为您不需要 Android 应用程序中的 API 密钥来注册 GCM。我的应用程序具有新的非弃用界面,已注册并且没有引用我的“AIz.........”API 密钥。该密钥仅存在于我的应用服务器的网页中。 @NickT 我从未在评论中提及 API 密钥。您是对的 - 注册不需要 API 密钥。 @Eran,是的,你是对的,对于任何混淆,我不记得必须提供 SHA 指纹来获取我的 API 密钥,这是一个相对较新的要求吗? 在控制台 -> 注册新应用程序。 android 有两个选项: 直接从 Android 访问 API 通过 Web 服务器访问 API 第一个选项需要包名称和 SHA1 指纹,第二个选项不需要。什么时候使用第一个或第二个选项? 【参考方案1】:我终于明白你在问什么了。根据GCM Docs,要获取API Key,应该选择Accessing APIs directly from Android
。
获取 API 密钥:
1. In the sidebar on the left, select APIs & auth > Registered apps. 2. Click Register app. 3. In the Name field, type your app's name. 4. Click Android > Accessing APIs directly from Android. 5. Under Android identification, type the package name for your app. 6. Enter an SHA1 fingerprint. To get this value, follow the instructions in the console help. 7. Click Register.
至于Accessing APIs directly from Android
和Accessing APIs via a web server
之间的一般区别是什么,我假设在后一种情况下,Android 设备不会直接访问 Google API。相反,您的 Web 服务器与 API 通信并将相关数据传递给 Android 应用程序。在 GCM 中,Android 设备必须直接与 API 通信,才能将设备注册到 GCM。
【讨论】:
谢谢,正是我所需要的【参考方案2】:我相信您指的是 GCM 允许的两种连接类型(即 HTTP 和 XMPP/CCS)的差异?可以在here找到差异。
总之……
HTTP 只能向下游推送消息到设备,而 XMPP/CCS 是双向的。 HTTP 是同步的,而 XMPP/CCS 是异步的。使用 XMPP/CCS(IMO 没有很好的文档记录)的一个警告是,您必须注册使用带有 XMPP here 的 GCM,并希望在使用 HTTP 的地方获得批准/接受,您可以简单地使用它.
【讨论】:
以上是关于GCM 直接从 Android 访问 API 和通过 Web 服务器访问 API 的区别的主要内容,如果未能解决你的问题,请参考以下文章