【问题标题】:Combine multiple GCM messages in AppEngine在 AppEngine 中合并多个 GCM 消息
【发布时间】:2013-02-22 00:50:33
【问题描述】:

我有一个使用 Google Cloud Endpoints 在设备之间同步数据的 Android 应用。目前在每个 api 调用中,都会向所有其他设备发送 GCM 消息。通常,一个设备不仅会进行一次 api 调用,而且会直接进行多次调用。在这种情况下,在每次调用中发送一条消息会变得非常低效,因为所有其他设备都会多次调用以获取新数据,而不是全部调用一次。

所以我的想法基本上是在 api 调用之后等待约 10 秒,然后发送 GCM 消息。每当有新来电并且计时器被重置时。

我的问题是我真的不知道如何在 AppEngine 中执行此操作。我的第一个想法是一个任务队列,它的任务以某种方式命名并有 10 秒的延迟。在 API 调用中,我检查任务是否在队列中,如果是,我将其删除并插入一个新任务。这是不可能的,因为即使任务不再存在,也无法再次使用任务名称。

【问题讨论】:

    标签: java google-app-engine google-cloud-messaging google-cloud-endpoints


    【解决方案1】:

    让设备明确指示何时发送 GCM 消息不是更容易吗?

    【讨论】:

      【解决方案2】:

      如果您的 Android 应用知道其端点调用之间的区别:知道哪个是“最终”调用,那么它可以告诉服务器是否通知其他设备。

      即使没有,你也可以在客户端做一些类似于你在服务器上做的事情:继续延迟,直到确定最后一次调用已经完成(例如,用户完成更新数据),然后执行“最终”服务器调用,从而发送通知。如果您担心应用会在最终调用之前被终止,则可以在服务中完成此操作。

      或者,您可以在客户端的接收代码中做同样的事情:当它接收到 GCM 通知时,它可能会延迟,然后再采取行动。

      无论哪种方式,我认为在客户端处理此问题并保持服务器事务处理确实更容易(也更便宜)。

      【讨论】:

      • 谢谢,我会让客户端告诉服务器最后一次调用。
      猜你喜欢
      • 1970-01-01
      • 2016-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多