0

我正在使用 SendBird 向我的应用程序添加发送图片功能。

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info我执行此代码时

NSData *imageFileData = UIImageJPEGRepresentation(info[UIImagePickerControllerOriginalImage], 0.5);
NSURL* imagePath = [info objectForKey:@"UIImagePickerControllerReferenceURL"];
NSString* imageName = [imagePath lastPathComponent];

[self.currentChannel sendFileMessageWithBinaryData:imageFileData filename:imageName type:@"image/jpg" size:[imageFileData length] data:nil completionHandler:^(SBDFileMessage * _Nullable fileMessage, SBDError * _Nullable error) {}];

当 imagePicker 的源类型为:时,此代码运行良好UIImagePickerControllerSourceTypePhotoLibrary

如果我使用 imagePicker 发送图像,其 sourcetype 是:UIImagePickerControllerSourceTypeCamera然后

- (void)channel:(SBDBaseChannel *)sender didReceiveMessage:(SBDBaseMessage *)message永远不会触发。

4

1 回答 1

1

据我所知,info字典 fromUIImagePickerControllerSourceTypeCamera没有UIImagePickerControllerReferenceURL. 所以, theimagePath和 theimageName必须是nil

不是的sendFileMessageWithBinaryData:filename:type:size:data:completionHandler:需要。因为您生成 jpeg 数据,所以只需像这样使用:filenamenil@"image.jpg"filename

NSData *imageFileData = UIImageJPEGRepresentation(info[UIImagePickerControllerOriginalImage], 0.5);

[self.currentChannel sendFileMessageWithBinaryData:imageFileData filename:@"image.jpg" type:@"image/jpg" size:[imageFileData length] data:nil completionHandler:^(SBDFileMessage * _Nullable fileMessage, SBDError * _Nullable error) {
}];
于 2018-01-04T20:05:57.353 回答