代码之家  ›  专栏  ›  技术社区  ›  Sam

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

  •  0
  • Sam  · 技术社区  · 7 年前

    我正在使用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发送图像,其源类型为: UIImagePickerControllerSourceTypeCamera 然后

    - (void)channel:(SBDBaseChannel *)sender didReceiveMessage:(SBDBaseMessage *)message 从未触发。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Jebeom Gyeong    7 年前

    据我所知 info 词典来源 UIImagePickerControllerSourceTypeCamera 没有对象 UIImagePickerControllerReferenceURL . 所以 imagePath 以及 imageName 必须是 nil .

    这个 sendFileMessageWithBinaryData:filename:type:size:data:completionHandler: 需要 filename 那不是 . 因为您生成jpeg数据,所以只需使用 @"image.jpg" 作为 文件名 这样地:

    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) {
    }];