0

我有一些依赖于服务器端的应用程序。从那里得到他们的数据。无论如何,服务器端都需要开发。服务器代码托管在我们这边完成。客户端-服务器通信,结构已经建立。在这种状态下,我们需要实现一个推送通知:如果服务器上有新数据,那么它应该以某种方式对用户可见。

现在推荐的“标准”方式是使用Google Cloud Messaging System

我对此有一些担忧:

  • 需要客户端和服务器端编码并在我们的代码中绑定它们的技术。这不是最大的:
  • 正在改变相对经常的技术:弃用,并且需要改变我们的代码。这是最大的。在此之前是另一回事,在此之前是另一回事。在 4-5 年内 3 次变化太多了。

我正在考虑这样实现:

当用户连接互联网时,我将编写一个广播接收器来监听。在 Internet 连接上,它将检查服务器以查看它是否有新内容。如果确实如此,它将显示一个通知并完成工作。如果用户单击通知,它将启动应用程序并下载播放负载。 我将使用警报计划,在 1 或 15 分钟或 4 小时后再次检查服务器,无论如何。它不会在后台运行任何服务,只有接收器!

注册 - 取消注册功能应该在 app.xml 中完成。

与服务器的通信加上:

  1. registerMyDevice(IMEI)-或用户名+密码
  2. 注销我的设备(IMEI)
  3. isSomethingNewData()

当客户端到达服务器时,它无论如何都会发送他的IMEI来识别,因此服务器会知道谁需要发送推送。

任何人都可以采用 Google 提出的解决方案并证明在这种情况下它比我们的内部解决方案更好吗?

4

1 回答 1

1

该解决方案的主要问题是您将再添加一个缩短电池寿命的后台进程。想象一下,如果许多应用程序开发人员选择实施您的解决方案会发生什么。安装多个此类应用程序的用户将很快耗尽电池电量。使用 GCM,与一台服务器保持一个连接,该连接服务于设备上的所有应用程序。

我相信与 GCM 的集成比自己开发推送解决方案更简单。API 更改总是伴随着改进(原始 GCM 允许多个发送者,而 C2DM 不允许;新 GCM 为您提供用户通知和设备到云消息传递),但即使您不选择使用它们,旧 API 仍然工作(即使它们已被弃用)。

于 2013-10-09T17:04:09.000 回答