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
二、自定义发送入口:
如果不想在会话页面底部扩展面板进入小视频录制发送页面,而是想在其他地方进入小视频录制发送页面,实现步骤:
-
设置权限:在 info.plist 中设置相机和麦克风的权限。
-
进入默认的消息录制和发送页面
-
导入头文件并添加代理协议:
#import <RongSight/RongSight.h> @interface ViewController ()<RCSightViewControllerDelegate>
-
创建小视频录制页面对象、设置代理并进入录制页面:
RCSightViewController *svc = [[RCSightViewController alloc] init]; svc.delegate = self; [self presentViewController:svc animated:YES completion:nil];
三、自定义小视频录制和发送页面,实现下面两个代理函数(需要 SDK 版本 > 2.9.2):
-
当用户选择发送拍摄的静态图片时,会调用该方法,在方法中使用回调的参数构造图片消息,并发送。
- (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: 消息发送失败回调 }]; }
-
当用户选择发送录制的小视频时,会调用该方法,在方法中使用回调的参数构造小视频消息,并发送。
/** 当用户选择发送录制的小视频时,调用该方法。 @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 个月,暂时不支持将小视频上传到自己的服务器。