我正在使用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
永远不会被触发。
据我所知,info
的UIImagePickerControllerSourceTypeCamera
字典没有UIImagePickerControllerReferenceURL
的对象。因此,imagePath
和imageName
必须是nil
。
sendFileMessageWithBinaryData:filename:type:size:data:completionHandler:
需要不是filename
的nil
。因为你生成了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) {
}];