0

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

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

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

4

2 回答 2

0

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

于 2013-03-07T01:16:27.983 回答
0

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

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

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

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

于 2013-03-07T03:42:25.567 回答