如何在App中实现朋友圈功能之一朋友圈实现原理浅析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如何在App中实现朋友圈功能
之一
朋友圈实现原理浅析
微信朋友圈、新浪微博、知乎等知名朋友圈类型功能,大家有没有想过其实现的逻辑呢?
本文以微信朋友圈功能为例,解析实现逻辑。
朋友圈的结构:
朋友圈从总体上来说会分为6块结构,分别是墙、用户、图片、墙贴、评论与点赞。
墙:一块公共的墙,所有的墙贴都位于其上,如果APP只实现朋友圈功能,那么墙贴其实是可以不用的,但是如果APP要实现朋友圈、新闻圈等等其他各种墙贴类型消息的话,那么墙就显得很有必要了,这时候我们需要通过建立不同的墙来展示不同类型的墙贴。
用户:用户是发表墙贴、发表评论还有点赞必须的对象。少了它,就没办法往后开发朋友圈。
图片:发表朋友圈的时候,常常会带着一张或多张图片,而缩略图中原图的处理和展现是很重要的细节。
墙贴:朋友圈的核心对象,每一个用户发出来的墙贴都会展示在墙上,而一个墙贴带着一张或多张图片,用户之间可以看到其发表的墙贴内容,并对其进行评论和点赞。
评论和点赞:用户对墙贴进行的操作,其中评论又可以评论其他人之前留下的评论。
墙贴的实现:
1、首先我们需要创建一个已经存在的Wall向服务器发送一个请求(这里我们使用curl命令的方式
创建):
curl-F"name=FriendWall""/v2/walls/create.json?key=appKey"
创建好Wall后,我们会拿到一个wallId,这之后所有的用户发送朋友圈的时候,我们都需要传入wallId 这个参数。
2、发送朋友圈(这里以Android代码为例进行创建Post)
//创建朋友圈消息
Map
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中实现朋友圈功能系列文章:
之一朋友圈实现原理浅析
之二快速实现用户信息的自定义
之三快速实现双向好友功能
之四在朋友圈中添加发送图片功能
之五点赞、评论属性详细解析
之六快速实现下拉加载朋友圈功能之七快速实现上拉加载朋友圈功能之八页面加载功能的逻辑与实现