Android 使用GCM传输真实数据还是仅仅触发事件?

Android 使用GCM传输真实数据还是仅仅触发事件?,android,synchronization,google-cloud-messaging,Android,Synchronization,Google Cloud Messaging,在消息传递应用程序中,如android的Gmail,您可以手动刷新收件箱(“检查电子邮件”),也可以通过“推送通知”接收电子邮件 问题: 如果我只使用GCM触发下载数据的事件,而不是发送数据,是否效率太低? 方法#1 服务器发送GCM消息 Android应用程序接收消息 Android应用程序现在知道应该检查消息,即: 调用服务器的api:http://myserver/api/DownloadNewMessages 进近#2 服务器发送包含所有数据的GCM消息(“电子邮件”) Android应

在消息传递应用程序中,如android的Gmail,您可以手动刷新收件箱(“检查电子邮件”),也可以通过“推送通知”接收电子邮件

问题:
如果我只使用GCM触发下载数据的事件,而不是发送数据,是否效率太低?

方法#1

  • 服务器发送GCM消息
  • Android应用程序接收消息
  • Android应用程序现在知道应该检查消息,即:
    调用服务器的api:
    http://myserver/api/DownloadNewMessages
  • 进近#2

  • 服务器发送包含所有数据的GCM消息(“电子邮件”)
  • Android应用程序接收消息 我发现方法2的问题是同步和代码重复。

    同步:手动下载新数据时,需要进行验证(真的是新数据吗?)
    代码重复:将有两种方式接收数据。。。(还有两种发送方式,在服务器中)

    我使用了方法1。它更有意义,而且不容易出错

    推送消息应该很小。 它向接收客户端提示,现在可能是检查新消息的好时机。我喜欢这样一个事实,即它不必在数据未准备好时强制接收客户端获取数据


    此外,当您将来更改数据格式时,从长远来看,它更容易维护,因为GCM消息仍然是简单的“嘿,可能有更新,如果您愿意,请检查”。

    如果您在客户端应用程序中检查数据是否真的是新数据,但在告诉用户数据是否真的是新数据之前,方法2不是问题。“将来更改数据格式时,从长远来看更容易维护”,这正是我对方法2的担忧。我想我会像你一样做。