如何在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