如何在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中实现朋友圈功能系列文章:

之一朋友圈实现原理浅析

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

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

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

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

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

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

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




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