3

对于那些只想切入正题并知道我在问什么的人。我的问题在下面的段落中用编号和粗体表示。

我有一段时间试图弄清楚1.) 如何为 Android 社​​交网络应用程序实施适当的通知系统?到目前为止,我收集到的只有 2 个选择,轮询与推送,推送比轮询更好,因为它可以节省电池,推荐的推送通知方式是通过 Google Cloud Messaging(GCM),但我没有得到的是 2 .)是什么让我的服务器推送?和/或3.) 当有新数据可用时,如何设置我的服务器端推送? 进一步的研究表明,Facebook 只能实现其近乎实时的通知系统,因为他们拥有某种称为 thrift 的服务器端 api/库/技术或类似的东西,可以检测谁在线和谁不在线(不确定为什么这很重要然而) 。4.) 是否有人对我尝试实施类似于 Facebook 的社交通知系统有一些建议?

其他重要信息:

  • 我目前使用 Codeigniter Rest 服务器作为 api(PHP)

  • 我更喜欢可以使用我现有的 API 实现的 php 解决方案,除非有另一种语言(Java、Ruby、Javascript)的解决方案可以独立实现(也就是说,我仍然可以将现有的 api 用于除通知之外的所有其他内容)

  • 我不是在找人来解释如何使用 GCM 或指导我学习教程。我已经完成了研究并获得了 GCM 推送通知的几个“示例”并运行,但到目前为止我发现的教程都没有告诉我如何让我的服务器自行推送。

  • 我需要向用户发出的通知类型包括新朋友请求、来自其他用户的新私人消息、对收到通知的用户发布的内容的新评论、对用户评论过的内容的新评论(类似于 fb notify 的方式)您是否将评论添加到已评论的状态中)

4

1 回答 1

5

对于您描述的任务(朋友请求、私人消息、通知等),GCM 绝对是要走的路。当事件发生时,您的服务器将发送 GCM 消息,并由 Google 管理消息的发送 - 您不必担心手机处于开机状态或类似情况。

听起来您已经接近将所有这些放在一起,但是缺少一个部分 - GCM 消息的实际发送。至少根据我的经验,没有自动推送的概念。每次推送都基于发生的某些操作,例如发送消息或新朋友请求。例如,如果您已经设置了代码来处理服务器上的好友请求并更新数据库,您只需要添加一些代码来查找被请求者的 GCM ID 并发送 GCM 消息告诉您的客户端已收到好友请求。在 Android 客户端,您将拥有一个扩展 GCMBaseIntentService 的类,该类将接收此消息并在收到好友请求时运行您想要运行的任何客户端代码(发布本地通知、更新 ui 等)

于 2013-02-19T03:38:24.687 回答