如何在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", "p_w_picpathIds": [], "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", "p_w_picpathIds": [], "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", "p_w_picpathIds": [], "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中實現朋友圈功能系列文章:
之一朋友圈實現原理淺析
之二快速實現用戶信息的自定義
之三快速實現雙向好友功能
之四在朋友圈中添加發送圖片功能
之五點贊、評論屬性詳細解析
之六快速實現下拉加載朋友圈功能
之七快速實現上拉加載朋友圈功能
之八頁面加載功能的邏輯與實現