如何在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() {@Overridepublic void onSuccess(JSONObject response) {//创建Post成功时,需要将该条Post的数据保存到本地数据库}@Overridepublic void onFailure(JSONObject response) {//创建失败}});

这里我们创建了Post,会拿到整个Post的数据,我们需要将它保存在本地,这之后,为了减少用户的流量消耗,只要用户一直用同一台设备使用朋友圈功能,我们都不应该再从服务器获取这条Post数据。

可能有朋友会问,那假如我们不考虑用户的流量消耗问题,是不是就可以不用保存这些数据到数据库,每次都去请求服务器了呢?答案是否定的。原因是即使我们不考虑流量的消耗问题,在一个App满天飞的时代,用户体验是极其重要的一个因素。想像一下这个场景:如果用户处在在一个网络不流畅的状态,打开了之前查看过的朋友圈内容,结果却是朋友圈内空白一片,一切都需要重新载入,什么都看不到,会有怎样的用户体验?所以,保存数据到本地是很重要的。

如何在App中实现朋友圈功能系列文章:

之一朋友圈实现原理浅析

之二快速实现用户信息的自定义

之三快速实现双向好友功能

之四在朋友圈中添加发送图片功能

之五点赞、评论属性详细解析

之六快速实现下拉加载朋友圈功能

之七快速实现上拉加载朋友圈功能

之八页面加载功能的逻辑与实现

转载于:https://blog.51cto.com/arrownock/1718785

如何在App中实现朋友圈功能之一朋友圈实现原理浅析——箭扣科技Arrownock相关推荐

  1. 如何在App中实现朋友圈功能之二快速实现用户信息的自定义——箭扣科技Arrownock...

    如何在App中实现朋友圈功能 之二 快速实现用户信息的自定义 自我关联社交元素: anSocial中很多的社交元素API,如帖子(Post).相册(Album).文件(File)等,这些API的可选参 ...

  2. 如何在App中实现朋友圈功能之三快速实现双向好友功能——箭扣科技Arrownock

    如何在App中实现朋友圈功能 之三 快速实现双向好友功能 在社交APP的使用中,用户相互添加好友是一个必要的场景,本期技术分享在这里给大家介绍如何利用AnSocial的Friend来实现微博粉丝和微信 ...

  3. 如何在App中实现朋友圈功能之六快速实现下拉加载朋友圈功能——箭扣科技Arrownock

    如何在App中实现朋友圈功能 之六 快速实现下拉加载朋友圈功能 实现逻辑: 根据上次下拉刷新的时间从数据库加载出limit(比如10)条post,判断总数据条数: a. 如果总数据大于limit条,清 ...

  4. 如何在App中实现朋友圈功能之四在朋友圈中添加发送图片功能——箭扣科技Arrownock

    如何在App中实现朋友圈功能 之四 在朋友圈中添加发送图片功能 实现概念: 当用户在界面点击发送按钮的时候,如果已经有选择好的图片,我们的做法是先上传图片到服务器,再将图片Id作为Post的属性上传. ...

  5. npm中node更新_如何在Node中管理NPM和功能时保持理智

    npm中node更新 by Ted Gross 泰德·格罗斯(Ted Gross) 如何在Node中管理NPM和功能时保持理智 (How to keep your sanity while manag ...

  6. APP中的第三方“支付”功能该如何测试

    经过最近几个项目的测试,APP中带有支付功能的产品有很多,那么APP中带有第三方支付功能的产品在这一模块该如何测试才尽可能的测试完整. 正常流程: 正常使用支付宝.微信.银行卡(目前使用最多的第三方支 ...

  7. 如何在 Lightroom 中使用去朦胧功能?

    欢迎观看 Lightroom Classic 教程,小编带大家学习 Lightroom Classic 的基本工具和使用技巧,了解如何在 Lightroom 中使用去朦胧功能减少照片中的雾度. 在 L ...

  8. App中 微信分享 代付功能 业务设计 与 代码实现

    先上图 场景 本例的代付场景是,开发一款APP应用,APP中具有支付能力,按照微信 支付对接要求已经完成APP支付的对接.现在要玩点新花样,找人代付订 单.用户在APP中下单后选择找人代付,将分享H5 ...

  9. 如何在APP中集成Google账户登录

    下图是用谷歌账户的登录流程图: 如果在APP中使用Google账户进行登录. 步骤一: <span style="font-size:18px;">GoogleSign ...

  10. 在app中提供用户充值功能,需要考虑的事情

    最近在一个项目中遇到用户充值需求,就是类似饿了吗,美团等app那种在余额管理中可以进行充值,退款也可以返回到这里,并且可以看到金额明细. 在这儿首先就是安全保障问题了.咨询之后发现一些其他问题,在这里 ...

最新文章

  1. 数据分析进阶 数据质量
  2. 把光盘转化成镜像文件
  3. 运营商部署4.5G热情高涨:将影响5G商用
  4. 记录,再次运行vue项目报错POST http://127.0.0.1:8888/api/private/v1/login/login
  5. python类基础知识注意点
  6. Android之网络请求提示Cleartext HTTP traffic to dev*******.com not permitted
  7. 深度学习目标检测之 YOLO v2
  8. java实现报表_修改带 JAVA 自定义类的报表还要重启应用,咋解决?
  9. for循环python爬虫_python爬虫 for循环只出来一条
  10. java中结构体入参_JNA中自定义结构体如何传参?
  11. 2015推荐的Android框架
  12. mac os 10.10下安装android studio问题:android studio was unable to find a valid jvm
  13. pylon保存图片_3.Pylon 以实时图像采集讲解PylonC SDK使用流程 | 学步园
  14. 年会抽奖小游戏java_抽奖小游戏
  15. 双目测距 BM算法 Python版
  16. IntelliJ IDEA 2017 提示“Unmapped Spring configuration files found.Please configure Spring facet.”解决办法
  17. python——平方根
  18. 谷歌Cartographer的论文研读(一)
  19. 实现简单的三D立方体自动旋转
  20. 红旗linux和其他版本区别,Ubuntu Linux与红旗Linux系列的差别

热门文章

  1. EF框架step by step(9)—Code First Fluent API
  2. DB2分区表删除和添加分区
  3. 浅析类的const成员函数,类的const对象
  4. [JZOJ4640] 【GDOI2017模拟7.15】妖怪
  5. linux——文件操作
  6. 标准代码页(codepage)列表
  7. 利用PyCharm进行Python远程调试
  8. Java-NIO(一):简介
  9. spring mvc ajax异步文件的上传和普通文件上传
  10. MVC学习笔记----缓存