发送一个图片消息,以下是demo 代码, 图片文件上传后,再用 file.url 作为参数,创建图片消息 发送(https://ticket.leancloud.cn/tickets/66942)。前些天是好的,现在不行了,错误信息是:Error Domain=AVOS Cloud Error Domain Code=4 "The operation couldn’t be completed. (AVOS Cloud Error Domain error 4.)"

- (void)sendImage:(UIImage *)image {
NSData *imageData = UIImageJPEGRepresentation(image, 0.6);

AVFile *file = [AVFile fileWithData:imageData];
WEAKSELF
[file saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
    if (succeeded) {
        AVIMImageMessage *imageMessage = [AVIMImageMessage messageWithText:nil attachedFilePath:file.url attributes:nil];
        [weakSelf sendMsg:imageMessage originFilePath:nil];
    }
}];}

你可以更新一下我们的 SDK。图片消息发送的时候支持显示进度的问题,在 v3.1.2.1 中已经做进去了。

下面是我们最近的 changelog:

3.1.2.4 发布日期:2015-06-11
优化聊天消息缓存,减少数据流量
取消将标准 UTC 时间自动换换为本地时间

3.1.2.3 发布日期:2015-06-10
更好地支持 AVObject 子类化
修复 AVObject 在 iOS 8 中存在的问题
支持上传通过外部 URL 初始化的文件
支持 CocoaPods 的 use_frameworks! 集成方式
将服务端返回的标准 UTC 时间自动转换成本地时间
修复关闭 session 时的问题

3.1.2.2 发布日期:2015-06-03
修复关闭 session 时的错误

3.1.2.1 发布日期:2015-05-27
增加消息缓存功能
支持消息发送读取进度
支持语音短信

/*!
 往对话中发送消息。
 @param message - 消息对象
 @param progressBlock - 发送进度回调。仅对文件上传有效,发送文本消息时不进行回调。
 @param callback - 结果回调
 @return None.
 */
- (void)sendMessage:(AVIMMessage *)message
      progressBlock:(AVProgressBlock)progressBlock
           callback:(AVIMBooleanResultBlock)callback;

这样是可以解决问题, 可是通过本地url 发送图片视频等还是很麻烦,因为ios Image Picker 返回的就是一个Image 对象, 这时候,再去保存一次本地图片,总感觉有点画蛇添足。
还有对已有图片消息,视频消息 进行转发如何实现呢? 必须要保存到本地,然后再次上传嘛?

是,之前我也提过这个问题,应该增加从本地 URL 上传文件消息。