如何在App中实现朋友圈功能之一朋友圈实现原理浅析——箭扣科技Arrownock
2015-12-02 12:00
483 查看
如何在App中实现朋友圈功能
之一
朋友圈实现原理浅析
微信朋友圈、新浪微博、知乎等知名朋友圈类型功能,大家有没有想过其实现的逻辑呢?本文以微信朋友圈功能为例,解析实现逻辑。 朋友圈的结构:朋友圈从总体上来说会分为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” 博客,转载请与作者联系!
相关文章推荐
- javascript 中的call、apply、bind
- 一张图让你了解安卓事件处理流程的走向
- iOS 代码块在程序中只执行一次
- android事件分发、拦截、处理(未完)
- 《从零开始学Swift》学习笔记(Day43)——构造函数继承
- iOS证书说明和发布内购流程整理
- iOS 8 新特性总结
- iOS_导入libxml2.2框架后,找不到<libxml/tree.h>的解决办法
- 微信公众号开发---红包模块
- iOS开发多线程篇—GCD介绍
- android 程序防止被360或者系统终止
- Android Studio Unable to execute DX
- Android 自定义的Dialog
- [转] ServletContext 与application的异同
- Android笔记:获取url或uri字符串中的参数值
- android单元测试
- Android通过代码模拟物理、屏幕点击事件
- webview 上 postUrl 发送参数过程中数据丢失或错误 的问题
- iOSCocoaPods Updating local specs repositories
- IOS-35-NSAssert的使用