SendBird - iOS:无法接收相机照片,但可以接收存储的图像

问题描述 投票:0回答:1

我正在使用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的sourcetype为:UIImagePickerControllerSourceTypePhotoLibrary时,此代码很有效。

如果我发送带有imagePicker的图像,其源类型为:UIImagePickerControllerSourceTypeCamera

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

ios uiimagepickercontroller sendbird
1个回答
1
投票

据我所知,infoUIImagePickerControllerSourceTypeCamera字典没有UIImagePickerControllerReferenceURL的对象。因此,imagePathimageName必须是nil

sendFileMessageWithBinaryData:filename:type:size:data:completionHandler:需要不是filenamenil。因为你生成了jpeg数据,所以只需使用@"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) {
}];
© www.soinside.com 2019 - 2024. All rights reserved.