以Google Cloud Messaging和Google App Engine作为后端的Android推送通知

时间:2015-08-27 21:56:42

标签: android google-app-engine google-cloud-messaging

我想将GAE后端的通知推送到Android应用程序。我已成功通过此链接实施了通信:https://github.com/GoogleCloudPlatform/gradle-appengine-templates/tree/master/GcmEndpoints

但是,我在这里对逻辑感到困惑。

  1. 在此示例中,我们已经通过AsyncTask对GCM执行了客户端注册。我想在一些代码完成GAE后端执行时通知用户,但不需要从Android调用一些AsyncTask。我需要的是当代码完成它的执行时从GAE接收消息。这可能吗?我只是不知道工作流程应该在这里。
  2. 此外,还需要在客户端进行哪些操作,以便能够聆听"对于新消息?一些总是在后台运行的服务任务?或者这已经使用此示例中的public class GcmIntentService extends IntentService完成了,我只需要识别消息类型?
  3. 如果有人可以向我解释这个工作流程,那么一些代码示例也会很好。

1 个答案:

答案 0 :(得分:1)

你应该真正完成GCM guide,让GCM运行并不难,但它需要一系列无法​​跳过的步骤。

  

在这个例子中,我们已经通过AsyncTask对GCM执行了客户端注册。我想在一些代码在GAE后端完成执行时通知用户,但不需要从Android调用一些AsyncTask

完整的GCM实施要求客户端注册到GCM服务器以获取其唯一ID,并且您的服务器要存储该ID以便直接联系该客户端,这就是为什么您需要至少一个连接来发送此数据到你的服务器。你可以通过使用一个名为topics的新功能来解决这个问题,这样一旦客户端注册它就可以生成一个主题,你的服务器也不需要知道任何特定的GCM密钥。你的客户。我不建议使用最后一种方法,因为它不具备可扩展性,并且会禁用与服务器的任何1对1通信。

  

此外,还需要在客户端进行哪些操作,以便能够"倾听"对于新消息?一些总是在后台运行的服务任务?或者这已经完成了公共类GcmIntentService从这个例子扩展了IntentService,我只需要识别消息类型?

你需要设置一个广播接收器来处理你的应用程序的传入消息(在指南中详细说明)从那里你得到原始消息,你可以随心所欲地做任何事情,包括通过意图服务运行它在接收器上直接处理或处理(不推荐)。是的,您可以区分消息类型并相应地执行逻辑。