iOS 端小视频开发与使用说明

iOS 端小视频开发与使用说明

一、常规使用,在会话页面底部扩展面板:

参考官网文档:http://www.rongcloud.cn/docs/sight.html#ios

小视频 SDK 导入参考文档:https://doc.rongcloud.cn/im/IOS/5.X/ui/import#%E7%8E%AF%E5%A2%83%E8%A6%81%E6%B1%82

二、自定义发送入口:

如果不想在会话页面底部扩展面板进入小视频录制发送页面,而是想在其他地方进入小视频录制发送页面,实现步骤:

  1. 设置权限:在 info.plist 中设置相机和麦克风的权限。

  2. 进入默认的消息录制和发送页面

  3. 导入头文件并添加代理协议:

     #import <RongSight/RongSight.h>
     @interface ViewController ()<RCSightViewControllerDelegate>
    
  4. 创建小视频录制页面对象、设置代理并进入录制页面:

     RCSightViewController *svc = [[RCSightViewController alloc] init];
     svc.delegate = self;
     [self presentViewController:svc animated:YES completion:nil];
    

三、自定义小视频录制和发送页面,实现下面两个代理函数(需要 SDK 版本 > 2.9.2):

  1. 当用户选择发送拍摄的静态图片时,会调用该方法,在方法中使用回调的参数构造图片消息,并发送。

    - (void)sightViewController:(RCSightViewController *)sightVC didFinishCapturingStillImage:(UIImage *)image {
        RCImageMessage *imageMessage = [RCImageMessage messageWithImage:image];
        [[RCIM sharedRCIM] sendMessage:ConversationType_PRIVATE targetId:@"user1" content:imageMessage pushContent:nil pushData:nil success:^(long messageId) {
            //TODO: 消息发送成功回调        
        } error:^(RCErrorCode nErrorCode, long messageId) {
            //TODO: 消息发送失败回调 
        }];
    }
    
  2. 当用户选择发送录制的小视频时,会调用该方法,在方法中使用回调的参数构造小视频消息,并发送。

    /**
     当用户选择发送录制的小视频时,调用该方法。
    
     @param sightVC 视频预览视图控制器实例。
     @param url 当前小视频存储地址。
     @param thumnail 小视频的第一帧图像的图片对象。
     @param duration 小视频的时长,单位是秒。
    */
    - (void)sightViewController:(RCSightViewController *)sightVC
             didWriteSightAtURL:(NSURL *)url
                      thumbnail:(UIImage *)thumnail
                       duration:(NSUInteger)duration {
        // 将录制好的视频,打到 RCSightMessage 中,并发送。
        // RCSightMessage 在 2.9.2 版本才正式开放出来,请使用最新的 SDK 版本。
        RCSightMessage *sightMessage = [RCSightMessage messageWithLocalPath:url.path thumbnail:thumnail duration:duration];
        NSTimeInterval interval = [[NSDate date] timeIntervalSince1970];
        long long totalMilliseconds = interval * 1000;
        NSString *name = [NSString stringWithFormat:@"video_%lld.mp4", totalMilliseconds];
        long long size = [[[NSFileManager defaultManager] attributesOfItemAtPath:url.path error:nil] fileSize];
        [sightMessage setValue:name forKey:@"name"];
        [sightMessage setValue:@(size) forKey:@"size"];
        NSString *pushContent = @"小视频消息";
        // 构造好消息后,调用 RCIM 类中 sendMediaMessage 的方法发送小视频消息,传入会话类型、会话 ID、小视频消息对象、推送时候显示的内容即可,如果需要接收回调,可以自行处理。(如果使用 IMLib 开发,调用 RCIMClient 类中 sendMediaMessage 的方法发送)
        [[RCIM sharedRCIM] sendMediaMessage:ConversationType_PRIVATE
                                   targetId:@"会话ID"
                                    content:sightMessage
                                pushContent:pushContent
                                   pushData:nil
                                   progress:nil
                                    success:nil                                  
                                      error:nil                                 
                                     cancel:nil];
        // 在发送后,需要自己实现退出录制界面。
    
    }
    

四、小视频上传到自己的媒体服务器(待定):

SDK 默认上传到融云的服务器,有效存储期为 6 个月,暂时不支持将小视频上传到自己的服务器。