了解Google Cloud Messaging的各个方面 - 基本设置

时间:2014-07-23 20:21:48

标签: android push-notification google-cloud-messaging httpserver

我有一个Android应用程序,旨在通过GCM接收推送通知。当我最初设计应用程序时,我使用了一个“已弃用”的教程(仅仅因为它是我发现的最深入的教程之一)并且我的开发电话运行的是API 2.4,因此我能够在没有服务的情况下启动和运行很多问题。

现在,我的开发设备运行的是Android版本4.4.2,因此我的目标是“升级”我的应用程序以正确处理所有设备的GCM(现在,让我们忽略一个事实,我必须区分如何根据API级别处理推送通知。

我尝试按照Android开发人员教程为Google Cloud消息创建演示客户端应用程序,可在此处找到。 https://developer.android.com/google/gcm/client.html

虽然我讨厌听起来像我想忽略智能编码实践,但这个官方漫游在范围方面有点大(我的应用程序支持Phonegap,而我认为实现原生GCM比使用PushPlugin容易得多对于Phonegap,我不想处理超过我的Java代码中绝对必要的内容)

作为最后的努力,我只是从他们在这里提供的来源下载了演示gcm代码:https://code.google.com/p/gcm/source/browse/samples/?r=1ca8e646c517310e2d46a6a6eda74106b8084fc5

我尝试导入gcm-demo-client应用程序,虽然我知道我的SENDER_ID,但我对SERVER_URL一无所知。 Android开发者提供的文档非常普遍地讨论了HTTP与CCS,我正在努力把握这个服务器在哪些方面适用于Google Cloud Messaging的宏伟计划。

假设我下载了他们包含的gcm-demo-server项目目录(这似乎是某种Java项目),我该如何托管它?我以前弃用的GCM只使用了一个基本的Android应用程序,我将在其中提交一个包含设备注册ID的表单,以及一个带有标题和上下文的消息。不幸的是,我无法弄清楚如何将他们的演示服务器导入Eclipse(因为Eclipse认为它不包含任何项目文件),而且我似乎无法理解这个服务器如何以任何身份连接我的应用程序。

TL / DR问题摘要: 1.)我如何从上面的URL#2“托管”gcm-demo-server? 2.)如果我可以将注册ID从我的客户端应用程序复制到剪贴板,我可以使用我的“android服务器”应用程序发送我的消息吗? 3.)也许只是我,但我没有在gcm-demo-client项目目录中看到任何类似于Receiver类的内容,只有GcmIntentService。当应用程序甚至无法正确处理消息时,怎么会有意图?!

感谢您的耐心和帮助! (P.S. - 我不能提供任何代码 - 但是因为有问题的代码仅仅是提供的Android Developer GCM演示代码,所以希望这不会是一个大问题)

2 个答案:

答案 0 :(得分:0)

1)有许多公司提供服务器托管服务。你应该选择一个。

2)如果您手动复制注册ID,并在作为"服务器"的应用程序中对其进行硬编码,则您不需要托管真实服务器,但这只会在发展中工作。在生产中,假设您有多个用户安装了您的应用程序,您将需要一个真实的服务器来接收和存储所有这些应用程序的注册ID。

3)您所指的演示客户端项目是旧的,并且依赖于不推荐使用的库(gcm.jar),该库包含BroadcastReceiver的默认实现,它接收来自GCM服务器的消息并启动intent服务。如果您参考current demo app,您将找到BroadcastReceiver类。

答案 1 :(得分:0)

演示应用可能不起作用,因为它是一个gradle项目,您最好在Android Studio中打开它。这可能就是它根本无法将其视为Android项目的原因。

我最近开始自己实施GCM并不困难。我正在使用AppEngine来保存我的应用程序的后端部分。在Android工作室中,有一种非常快速简便的方法来生成android客户端和后端部分,包括云端点,甚至是用于发送消息的Web界面(尽管你不需要使用它)。

我遵循了本教程https://github.com/GoogleCloudPlatform/gradle-appengine-templates/tree/master/GcmEndpoints

也许这不是一个完全令人满意的答案,但我发现代码非常易读,我理解这些东西是如何工作的。