微信朋友圈、新浪微博、知乎等知名朋友圈类型功能,大家有没有想过其实现的逻辑呢?
本文以微信朋友圈功能为例,解析实现逻辑。
朋友圈的结构:
朋友圈从总体上来说会分为6块结构,分别是墙、用户、图片、墙贴、评论与点赞。
墙:一块公共的墙,所有的墙贴都位于其上,如果APP只实现朋友圈功能,那么墙贴其实是可以不用的,但是如果APP要实现朋友圈、新闻圈等等其他各种墙贴类型消息的话,那么墙就显得很有必要了,这时候我们需要通过建立不同的墙来展示不同类型的墙贴。
用户:用户是发表墙贴、发表评论还有点赞必须的对象。少了它,就没办法往后开发朋友圈。
图片:发表朋友圈的时候,常常会带着一张或多张图片,而缩略图中原图的处理和展现是很重要的细节。
墙贴:朋友圈的核心对象,每一个用户发出来的墙贴都会展示在墙上,而一个墙贴带着一张或多张图片,用户之间可以看到其发表的墙贴内容,并对其进行评论和点赞。
评论和点赞:用户对墙贴进行的操作,其中评论又可以评论其他人之前留下的评论。
墙贴的实现:
1、 首先我们需要创建一个已经存在的Wall向服务器发送一个请求(这里我们使用curl命令的方式创建):
curl -F "name=FriendWall" "http://cloud.arrownock.com/v2/walls/create.json?key=appKey"
创建好Wall后,我们会拿到一个wallId,这之后所有的用户发送朋友圈的时候,我们都需要传入wallId这个参数。
2、 发送朋友圈(这里以Android代码为例进行创建Post)
//创建朋友圈消息 Map<String, Object> params = new HashMap<String, Object>(); params.put("title", title); params.put("wall_id", wallId); params.put("user_id", userId); params.put("content", content); anSocial.sendRequest("posts/create.json", AnSocialMethod.POST, params, new IAnSocialCallback() { @Override public void onSuccess(JSONObject response) { //创建Post成功时,需要将该条Post的数据保存到本地数据库 } @Override public void onFailure(JSONObject response) { //创建失败 } });
这里我们创建了Post,会拿到整个Post的数据,我们需要将它保存在本地,这之后,为了减少用户的流量消耗,只要用户一直用同一台设备使用朋友圈功能,我们都不应该再从服务器获取这条Post数据。
可能有朋友会问,那假如我们不考虑用户的流量消耗问题,是不是就可以不用保存这些数据到数据库,每次都去请求服务器了呢?答案是否定的。原因是即使我们不考虑流量的消耗问题,在一个App满天飞的时代,用户体验是极其重要的一个因素。想像一下这个场景:如果用户处在在一个网络不流畅的状态,打开了之前查看过的朋友圈内容,结果却是朋友圈内空白一片,一切都需要重新载入,什么都看不到,会有怎样的用户体验?所以,保存数据到本地是很重要的。
如何在App中实现朋友圈功能系列文章:
之一朋友圈实现原理浅析
之二快速实现用户信息的自定义
之三快速实现双向好友功能
之四在朋友圈中添加发送图片功能
之五点赞、评论属性详细解析
之六快速实现下拉加载朋友圈功能
之七快速实现上拉加载朋友圈功能
之八页面加载功能的逻辑与实现
本文出自 “箭扣科技Arrownock” 博客,转载请与作者联系!
如何在App中实现朋友圈功能之一朋友圈实现原理浅析——箭扣科技Arrownock
原文地址:http://arrownock.blog.51cto.com/10638334/1718785