社交安卓应用程序的通知系统-推送与投票&;如何制作服务器“;按下”;


Notifications System for Social Android App - Push vs. Polling & How to make a server "Push"

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

我花了很多时间试图弄清楚1.)如何为Android社交网络应用程序实现一个合适的通知系统到目前为止,我只收集了两种选择,轮询和推送,推送比轮询更好,因为它节省了电池,推荐的推送通知的方式是通过谷歌云消息(GCM),但我没有得到的是2.)是什么让我的服务器推送和/或3.)如何设置我的服务器端,以便在有新数据可用时进行推送进一步的研究表明,Facebook只能实现其近乎实时的通知系统,因为他们有某种服务器端的api/库/技术,称为"节俭"或类似的技术,可以检测谁在网上,谁不在网上(还不确定为什么这很重要)4.)有没有人试图实现类似于Facebook的社交通知系统

其他重要信息:

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

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

  • 我不想找人来解释如何使用GCM或指导我学习教程。我已经做了一些研究,并获得了几个GCM推送通知的"示例",但到目前为止,我发现的教程都没有向我展示如何独立进行服务器推送。

  • 我需要向用户发出的通知类型包括:新朋友请求、来自其他用户的新私人消息、对被通知用户发布的内容的新评论、对用户评论的内容的评论(类似于fb在评论状态中添加评论时通知你的方式)

对于您所描述的任务(好友请求、私人消息、通知等),GCM绝对是一种选择。当事件发生时,你的服务器会发送GCM消息,谷歌会管理消息的发送——你不必担心手机开机或类似的事情。

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