如何在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中实现朋友圈功能系列文章:
之一朋友圈实现原理浅析
之二快速实现用户信息的自定义
之三快速实现双向好友功能
之四在朋友圈中添加发送图片功能
之五点赞、评论属性详细解析
之六快速实现下拉加载朋友圈功能
之七快速实现上拉加载朋友圈功能
之八页面加载功能的逻辑与实现