IM 即时通讯 (439)
Android (207)
- 初始化&链接 (8)
- 事件&监听处理 (7)
- 用户信息 (13)
- 会话列表 (15)
- 聊天会话 (26)
- 消息处理 (35)
- 自定义消息 (6)
- 音视频 (2)
- 推送&通知 (33)
- 扩展功能 (4)
- 第三方地图 (3)
- 依赖&配置 (9)
- 升级说明 (3)
- 其他 (43)
iOS (167)
- SDK 导入 (9)
- 连接 (8)
- 事件处理 (2)
- 用户信息 (3)
- 会话列表 (14)
- 聊天会话 (44)
- 消息处理 (25)
- 自定义消息 (8)
- 推送&通知 (19)
- 扩展功能 (5)
- 国际化 (3)
- 音视频 (4)
- 其他 (23)
Web (36)
Server (29)
iOS 端小视频开发与使用说明
iOS 端小视频如何使用及自定义发送?
发布时间: 2018-07-02 13:45
回答:
iOS 端小视频开发与使用说明
一、常规使用,在会话页面底部扩展面板:
参考官网文档:http://www.rongcloud.cn/docs/sight.html#ios
二、自定义发送入口:
如果不想在会话页面底部扩展面板进入小视频录制发送页面,而是想在其他地方进入小视频录制发送页面,实现步骤:
设置权限,可以参考 知识库 设置相机和麦克风的权限。
进入默认的消息录制和发送页面
导入头文件并添加代理协议:
#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 个月,暂时不支持将小视频上传到自己的服务器。