如何在App中实现朋友圈功能之五点赞、评论属性详细解析——箭扣科技Arrownock

如何在App中实现朋友圈功能

之五

点赞、评论属性详细解析

快速查看评论和点赞数量:

当我们创建一个墙贴后,这个墙贴会自动带有评论数量commentCount、赞数量likeCount、讨厌数量dislikeCount三个属性。

当有用户对这个墙贴进行了评论,该墙贴的commentCount属性会自动增长,无需开发者来手动操作实现。

如果用户建立的Like中like=true,那么likeCount会自动增长,反之,dislikeCount会自动增长。

如果用户把评论删除了,或者是把点赞撤销了,那么相应的commentCount、likeCount、dislikeCount也会自动减少。

拥有这些属性的对象共有7个,它们分别是:Comment、Event、 File、Location、Photo、Post、Wall。

快速查找所有楼主的回复:

当用户A对某个墙贴,创建一个评论时,如果这条墙贴是由用户B创建的,那么在A创建评论后,这条评论会自动拥有target_user_id的属性,这个属性的意思是目标Object的user_id值,在这个场景下,target_user_id的值是用户B的id。

这个属性给开发者提供了很大一个便利,对于查找楼主所有的回复这样类似的功能的繁琐查找操作不用再担心啦。不止Comment, Like也有这个属性哦。

设置评论权限:

朋友圈的评论是可以评论给所有人,也可以回复某人的评论。

对于第二种情况,只需要在创建Comment时,传入reply_user_id参数,那么在查询出该条Comment时,这个参数会自动转变为该user的信息对象。

如创建一条评论时,传入reply_user_id表示对某人进行的回复,传入user_id表示创建这条评论的用户,那么在查询时会得到一个这样的结果:

{
  "meta": {
    "code": 200,
    "status": "ok",
    "methodName": "createComment"
  },  
  "response": {
    "comment": {
      "id": "556acccfba82c60000000008",
      "parentId": "556accafba82c60000000007",
      "parentType": "Post",
      "content": "good job2",
      "commentCount": 0,
      "commentRate": 0,
      "likeCount": 0,
      "dislikeCount": 0,
      "created_at": "2015-05-31T08:56:47.059Z",
      "updated_at": "2015-05-31T08:56:47.066Z",
      "user":{
        "id": "556acc01ba82c60000000005",
        "username": "user1",
        "created_at": "2015-05-31T08:53:21.585Z",
        "updated_at": "2015-05-31T08:53:21.586Z"
      },
      "targetUser": {
        "id": "556acc01ba82c60000000005",
        "username": "user1",
        "created_at": "2015-05-31T08:53:21.585Z",
        "updated_at": "2015-05-31T08:53:21.586Z"
      },
      "replyUser": {
        "id": "556acc0cba82c60000000006",
        "username": "user2",
        "created_at": "2015-05-31T08:53:32.444Z",
        "updated_at": "2015-05-31T08:53:32.445Z"
      }
    }
  }
}

实现过程:

评论功能(以Android代码为例):

    //发送评论
    Map<String, Object> params = new HashMap<String, Object>();
    params.put("object_type", "Post"); //类型为Post
    params.put("object_id", postId);//对象id为postId
    params.put("user_id", userId);//发送评论的userId
    params.put("content", content);//评论内容
    try {
        anSocial.sendRequest("comments/create.json", AnSocialMethod.POST, params, 
                                                            new IAnSocialCallback() {
            @Override
            public void onSuccess(JSONObject response) {
            //数据存入本地数据库,刷新界面,发送通知给post的拥有者
            //handleSuccess();
            }
            @Override
            publicvoid onFailure(JSONObject response) {
            }
        });
    } catch (ArrownockException e) {
    }

点赞功能:

如果是点赞,则只需要将content参数改为like为true的参数,并且将comments/create.json改为likes/create.json即可。

检查是否被点赞:

1、先创建三个Post,分别叫做testPost1,testPost2,testPost3。

2、然后对testPost1增添like为true,对testPost2增添like为false。c.查询Post,结果如下:

{
  "meta": {
    "code": 200,
    "status": "ok",
    "methodName":"queryPosts",
    "page_size": 10,
    "page": 1,
    "total": 3
  },
  "response": {
    "posts": [
    {
      "id":"55607838dddfa58b21000008",
      "title":"testPost1",
      "imageIds": [],
      "commentCount": 0,
      "commentRate": 0,
      "likeCount": 1,
      "dislikeCount": 0,
      "created_at":"2015-05-23T12:53:12.863Z",
      "updated_at":"2015-05-23T12:53:12.863Z",
      "like": {
        "id":"55607865dddfa58b2100000b",
        "positive": true,
        "created_at":"2015-05-23T12:53:57.947Z",
        "updated_at":"2015-05-23T12:53:57.949Z"
        }
    },
    {
      "id":"55607840dddfa58b21000009",
      "title":"testPost2",
      "imageIds": [],
      "commentCount": 0,
      "commentRate": 0,
      "likeCount": 0,
      "dislikeCount": 1,
      "created_at":"2015-05-23T12:53:20.635Z",
      "updated_at":"2015-05-23T12:53:20.635Z",
      "like": {
        "id":"55607872dddfa58b2100000c",
        "positive": false,
        "created_at":"2015-05-23T12:54:10.665Z",
        "updated_at":"2015-05-23T12:54:10.666Z"
      }
    },
    {
      "id":"55607847dddfa58b2100000a",
      "title":"testPost3",
      "imageIds": [],
      "commentCount": 0,
      "commentRate": 0,
      "likeCount": 0,
      "dislikeCount": 0,
      "created_at":"2015-05-23T12:53:27.923Z",
      "updated_at":"2015-05-23T12:53:27.924Z"
    }]
  }
}

大家可以看到testPost1和testPost2返回了like属性,它们的like分别为true和false,这是由于创建like,传入的like分别为true和false而产生的结果,而testPost3则没有like属性。( PS:不光Post有这样的功能,Comment,Event, File, Location, Photo也有哦。)

邀请某人参与投票:

社交功能里常常可以看到投票这么一个功能,在anSocial中创建投票Vote时有这么两个参数分别是invite_user_ids和invite_circle_ids,如果要在App中提供好友间才能与的投票或是某些圈子内才能参与的投票即可用到这两个参数。

使用方式很简单,invite_user_ids即用户的id,多个id可以用”,”分割,invite_circle_ids即圈子id,同用户一样,当传入invite_circle_ids时,anSocial会自动寻找圈子内的用户,让开发提升了很多效率。

小提示:

以上是关于发送评论和点赞的通常情况的做法,那么对于有一种情况,回复评论里的某人,我们需要传入reply_user_id参数 params.put("reply_user_id", replyUserId);

在这种场景里我们在发送成功的回调函数中,除了要发送通知给Post的拥有者外,还需要发送通知给我们评论的用户。另外,在comment和like中,我们还提供了target_user_id的查询,即可以通过目标对象的创建者id,来直接查找与之相关的评论和点赞,而不用再通过用户id先找到Post,再通过Post来找到Comment和Like了。target_user_id是支持传入多个user_id的,用”,”分割即可。

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

之一朋友圈实现原理浅析

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

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

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

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

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

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

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

时间: 2024-10-08 21:17:04

如何在App中实现朋友圈功能之五点赞、评论属性详细解析——箭扣科技Arrownock的相关文章

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

如何在App中实现朋友圈功能 之一 朋友圈实现原理浅析 微信朋友圈.新浪微博.知乎等知名朋友圈类型功能,大家有没有想过其实现的逻辑呢? 本文以微信朋友圈功能为例,解析实现逻辑. 朋友圈的结构: 朋友圈从总体上来说会分为6块结构,分别是墙.用户.图片.墙贴.评论与点赞. 墙:一块公共的墙,所有的墙贴都位于其上,如果APP只实现朋友圈功能,那么墙贴其实是可以不用的,但是如果APP要实现朋友圈.新闻圈等等其他各种墙贴类型消息的话,那么墙就显得很有必要了,这时候我们需要通过建立不同的墙来展示不同类型的墙

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

如何在App中实现朋友圈功能 之二 快速实现用户信息的自定义 自我关联社交元素: anSocial中很多的社交元素API,如帖子(Post).相册(Album).文件(File)等,这些API的可选参数中允许传入其他社交元素的id. 当我们传了这些id时,服务器数据库里保存的是id,但是在返回结果里,会将这些id以对象的形式返回. 这样就大大提升了查询效率,原本需要查询两次的功能,现在可以一次实现,比如接下来要说的用户头像功能开发里可以利用的字段. 用户头像: 当我们在APP上创建用户,需要调用

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

如何在App中实现朋友圈功能 之三 快速实现双向好友功能 在社交APP的使用中,用户相互添加好友是一个必要的场景,本期技术分享在这里给大家介绍如何利用AnSocial的Friend来实现微博粉丝和微信好友机制. 微博粉丝机制: 微博是一个单向的好友关系链,从单个用户出发,他拥有关注者和粉丝.利用Friend可以实现以下场景:用户A关注了B,用户C关注了A,即B拥有粉丝A,A拥有粉丝C. 具体实现方式: 用户A关注B,调用新建Friend(friends/add.json),参数中target_f

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

如何在App中实现朋友圈功能 之七 快速实现上拉加载朋友圈功能 逻辑分析: 取出缓存postList里的最后一条数据postList a. 如果lastPost存在,说明缓存里有数据,接着取出数据库中与lastPost时间最接近的一条latestPost,以它们的created_at作为关键查询条件,去服务器取limit条(比如10)数据: 1. 如果服务器返回的Post数量大于0,将Post存入数据库,之后需要做两个查询动作: 查询出新的Like和Comment:根据本地数据库里的最新一条Li

如何在App中实现IM功能之二快速实现离线消息模块——箭扣科技Arrownock

如何在App中实现IM功能 之二 快速实现离线消息模块 一个App在实际使用聊天功能的时候,并非是一直呆在一个界面的,在等待好友发消息来的同时,有可能已经跳转到其他界面,也有可能切换到其他App. 在当前的App进入后台.好友发来消息时,需要给设备推送一条消息.以安卓为例,收取离线消息通知需要绑定anPush,具体做法是调用anIM.bindAnPushService(anID, AppKey, anPushType). 在App进入后台时,调用anIM.disconnect():在App回到前

如何在App中实现IM功能之三快速实现离线消息推送模块——箭扣科技Arrownock

如何在App中实现IM功能 之三 快速实现离线消息推送模块 推送是社交功能里最常见的功能之一,许多使用IM++平台的开发者都会用到,本节我们将为大家带来如何使用IM++平台快速实现离线推送. 使用过Arrownock产品的开发者应该知道,如果要实现离线消息推送在Android设备上有4个步骤,iOS设备上有3个步骤. Android的步骤是: l anIM.connect,anPush.register,anPush.enable,anIM.bindAnPushService iOS的步骤是:

如何在App中实现IM功能之四创建稳健的消息发送模块——箭扣科技Arrownock

如何在App中实现IM功能 之四 创建稳健的消息发送模块 anIM聊天是以心跳的方式保持设备和服务器之间的在线连接,有时候会因为网络或其他原因导致连接中断,则在该设备登录的用户在服务器端会自动下线.那么此时发送消息的话,服务器会返回用户已经下线的异常,导致消息无法发送成功. 为了避免这个问题的发生,我们可以在代码中使用一些技巧来解决. 1. 设置变量 设置一个全局变量isFromSendMsg为false. private boolean isFromSendMsg = false; 2. 判断

如何在App中实现IM功能之五快速实现图片接收和发送——箭扣科技Arrownock

如何在App中实现IM功能 之五 快速实现图片接收和发送 社交App中,用户聊天发送或接收图片,是一个非常常见的场景,这里给大家介绍如何利用Arrownock的anSocial的Photo API与anIM结合,来实现发送和接收图片. 发送端详情 当发送方选择好图片点击发送时,为了不影响用户聊天过程中的体验,我们一般会将消息先插入到sqlite数据库中,刷新界面,给这条消息加上Loading动画,表示发送中.而这背后的操作为了能够节省流量的消耗,开发时因为图片往往比较大,所以并不是直接将图片的二

如何在App中实现IM功能之七快速实现聊天列表排序模块——箭扣科技Arrownock

如何在App中实现IM功能 之七 快速实现聊天列表排序模块 一台设备由于用户的使用习惯差异,可能导致设备的时间和实际收发消息的时间不同,这里与大家分享利用anIM收发消息时,如何根据数据中的msgId和timestamp来进行排序. 实现逻辑 发消息时,我们需要调用anIM的sendMessage方法(同类方法还有sendBinary, sendMessageToTopic等等),这个方法有一个返回数据为messageId,即当前这一条聊天消息的唯一标识,我们需要将这个messageId保存下来