如何在App中實現朋友圈功能
之四
在朋友圈中添加發送圖片功能
實現概念:
當用戶在界面點擊發送按鈕的時候,如果已經有選擇好的圖片,我們的做法是先上傳圖片到服務器,再將圖片Id作爲Post的屬性上傳。
這裏跳轉到用戶聊天發送接收圖片 + 鏈接 在技術分享關於用戶聊天發送接收圖片的時候,我們講解過Photo API的使用,這裏我們再簡單提一下如何使用。
發送圖片調用AnSocial的Photos/create.json,參數有user_id(用戶的id)、 AnSocialFile(圖片文件)、resolutions(需要縮略圖的尺寸,一般爲100x100或200x200)。
由於朋友圈允許複數圖片的展示,所以我們在調用Photos/create.json時,需要調用多次。這時候需要使用一個小技巧來判斷到最後一張圖片上傳完成時,才調用posts/create.json。
這個小技巧就是:設置一個全局變量數字類型的photoIndexCount,每上傳一張圖片,photoIndexCount++在上傳圖片回調方法中進行判斷,如果photoIndexCount等於用戶上傳圖片的總數,則調用posts/create.json.
上傳圖片是爲了拿到圖片id作爲後面創建Post的參數,所以我們還應該設置一個全局變量爲字符串類型的photo_ids,在上傳圖片成功的回調方法中,將得到的photo_id以”,”分隔的方式組裝到photo_ids裏。
實現步驟:
1、 上傳圖片 代碼參考(以iOS爲例):
//上傳圖片 [_anSocial sendRequest:@"photos/create.json" method:AnSocialMethodPOST params:params success:^(NSDictionary *response) { //上傳圖片成功後,圖片指數增長1 _photoIndexCount ++; //當圖片指數和圖片總數相等時,調用發送Post方法,增加photo_ids參數 if (_photoIndexCount == _photoTotalCount) { //將當前response中的id組裝到photo_ids裏 NSString *photoId = [[[response objectForKey(@"response")]objectForKey :@"photo"]objectForKey:@"id"]; _photo_ids =[_photo_idsstringByAppendingString:photoId]; sendPost(); } else { //將當前response中的id組裝到photo_ids裏 NSString *photoId = [[[response objectForKey:(@"response")] objectForKey:@"photo"] objectForKey:@"id"]; photoId = [photoIdstringByAppendingString:@","]; _photo_ids = [_photo_idsstringByAppendingString:photoId]; } } failure:^(NSDictionary *response) { //[selfhandleFailure:response]; }];
2、發送Post
if (nil != _photo_ids && 0 != _photo_ids.length){ [params setObject:_photo_ids forKey:@"photo_ids"]; }
提示:
在發送Post之前,其中還值得注意的一點是圖片是要展示在界面上的,多張圖片太大的時候很容易造成內存溢出App閃退,所以我們需要在展示圖片的時候將圖片進行壓縮,壓縮圖片基本上分爲兩個思路,壓縮像素點,壓縮尺寸,Android和iOS各有不同的做法。
如何在App中實現朋友圈功能系列文章:
之一朋友圈實現原理淺析
之二快速實現用戶信息的自定義
之三快速實現雙向好友功能
之四在朋友圈中添加發送圖片功能
之五點贊、評論屬性詳細解析
之六快速實現下拉加載朋友圈功能
之七快速實現上拉加載朋友圈功能
之八頁面加載功能的邏輯與實現