今年一月初我开始思考,我是一个纯粹的android客户端程序员,但我想一个人开发出移动的小型bbs论坛应用,我没有服务器怎么办?没有数据库怎么办?服务端编程全部忘掉了怎么办?
于是我有了一个想法:利用百度推送向客户端推送指令和数据,客户端做出响应请求百度云盘!
经过一个多月的连续开发,最终结果证明,这个方案是完全可行的而且高效的,没有花一分钱,就开发出了高性能的小型bbs论坛应用《环球吐槽》,在我下面介绍具体开发步骤之前,先看一看最终效果图:下载体验 (ps:由于小论坛里政治内容太多,被除百度外所有市场拒绝收录,哭.....)
第一步:分析百度推送的原理
1.基本原理:一听推送很多朋友都可能想到的是烦人的notify通知提醒和每次只能发送可怜的几十个短消息,这肯定是不行的,好在百度推送没这么水,百度推送的富媒体推送很好的解决了推送容量的问题,富媒体的原理是这样的,你在推送网页上编辑一个Html的文档,点击发送,这个文档就发送到了安装了你应用的客户端上,客户点击就会打开一个网页。
2.我的改造:
①反编译百度推送的jar包,替换掉会使应用弹出通知栏的类,加入自己的class文件,使得推送不再有任何提醒或者打扰客户的行为
②把自己发布的长篇大论的帖子写入到html中,通过自己定义的一种数据组织结构,方便在客户端的排版,把它推送到客户端
③在客户端收到的是一个html,肯定不能让客户直接打开这个网页看,因为太丑,而且千篇一律,所以要把这个html中的自己定义过的特殊组织形式的数据的内容写入到xml中
④通过控制解析xml可以在客户端呈现出自己想要的文字排版效果,比如大家上面看到的,我的内容就是老外对话的样子。
⑤所以重点是大家要在html中写入原始数据时,数据组织的格式要容易在客户端解析。
第二步:利用百度云做出评论跟帖系统
1.基本原理:客户在手机看完你的文章要回帖,所以把回帖内容上传到百度云盘。
2.我的改造:每日发帖可能十几条,如何管理好所有的帖子以及数量更多的回帖,这里最方便的是充分利用百度富媒体推送时html文件的时间戳, 用户每次回复一条帖子,
就把回帖内容放入一个txt文档,利用云盘API,它可以携带一个文件夹名字,文件夹名字就是这个帖子的时间戳,这样,回帖txt都自动归档到各自的帖子时间戳的文件夹下了
,用户想看评论的时候,请求当前帖子时间戳的文件夹就可以把文件夹下所有的txt评论下载下来,在客户端控制一下,展示出来就可以了
总结:说的很少,其实做起来很麻烦,比如推送只是发了一个zip包的下载链接,所以我们还有下载解压解析,但是这样做出来的效果,客户绝对看不出来是用推送实现的
完全和c/s 模式的请求,响应的体验效果是一样的,也没有任何打扰客户的行为。
我说的挺好,可能大家不相信,那么你可以去百度应用下载下来,体验一下,看我说的是不是:
环球吐槽 移动bbs 下载地址:点击下载