# WeCloudTRTC-SDK **Repository Path**: wecloud-framework/we-cloud-trtc-sdk ## Basic Information - **Project Name**: WeCloudTRTC-SDK - **Description**: 这是蔚可云IM的音视频sdk - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-05-07 - **Last Updated**: 2022-12-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 多人音视频 ios SDK接入文档 IOS 多人音视频采用纯Swift语言编写,采用SwiftPM(Swift Package Manager)形式引用。请您注意!!!! ### 一、开始 #### 1. 下载IM及导入WeCloudTRTC 1. 多人音视频是基于WeCloudIMSDK通信进行交互,请先下载[WeCloudIMSDK\(多人音视频专用版\)](blob:https://oss-console.wecloud.cn/7e0c1daf-77e9-415e-a745-89b786cd71bd),并添加至工程。 2. 请在Other Linker Flags 添加-ObjC、-all_load 3. 请在TARGETS里面的frameworks、Lib...选项卡中,设置Embed为 Do No Embed 4. 使用Swift PM 导入 WeCloudTRTC。添加新的 package and enter: https://gitee.com/wecloud-framework/we-cloud-trtc-sdk.git 5. 若您的工程是纯OC项目,请先配置桥接文件,XXX-Bridging-Header.h(XXX是您的工程名,具体配置方法请参考官方资料) 6. 创建一个新的Swift文件,用于桥接TRTC与IMSDK。 #### 2. 配置IM 在AppDelegate.h里面引入#import "WeCloudIMSDK/WeCloudIMSDK.h"并配置基础链接 ``` - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [[WeCloudIMClient sharedWeCloudIM] initServiceHttpUrl:@"服务器地址" wsUrl:@"音视频链接地址"]; if ([WeCloudIMClient sharedWeCloudIM].isLogin) { [[WeCloudIMClient sharedWeCloudIM] openWithCallback:^(BOOL isAutoOpen, NSDictionary * _Nonnull resultDic) { NSLog(@"登入成功"); }]; HomeViewController *home = [[HomeViewController alloc]init]; home.title = @"已登录成功"; UINavigationController *nav= [[UINavigationController alloc]initWithRootViewController:home]; self.window.rootViewController = nav; [self.window makeKeyAndVisible]; } else { LoginViewController *login = [[LoginViewController alloc]init]; self.window.rootViewController = login; [self.window makeKeyAndVisible]; } //本地数据,用于传递给TRTC显示 [[NSUserDefaults standardUserDefaults] setValue:@{@"nickname":@"11的号",@"userId":@"17700000011"} forKey:@"myUserInfo"]; return YES; } ``` #### 3. 登录IMSDK ``` [[WeCloudIMClient sharedWeCloudIM] login:strTime clientId:self.textField.text appKey:@"appKey" sign:sign callback:^(BOOL success, NSString * _Nonnull token, NSString * _Nonnull clientId, WeCloudException * _Nonnull apiResult) { if (success) { dispatch_async(dispatch_get_main_queue(), ^{ [[NSUserDefaults standardUserDefaults] setValue:self.textField.text forKey:@"userID"]; [[WeCloudIMClient sharedWeCloudIM] openWithCallback:^(BOOL isAutoOpen, NSDictionary * _Nonnull resultDic) { HomeViewController *home = [[HomeViewController alloc]init]; home.title = @"已登录成功"; UINavigationController *nav= [[UINavigationController alloc]initWithRootViewController:home]; UIWindow *window = [[UIApplication sharedApplication]delegate].window; window.rootViewController = nav; [window makeKeyAndVisible]; }]; }); }else{ if (apiResult.code == WeCloudExceptionUnauthorized) { NSLog(@"token失效,请重新获取"); // [MBProgressHUD showError:@"token失效,请重新获取"]; }else if (apiResult.code == WeCloudExceptionForbidden) { NSLog(@"没有访问权限"); // [MBProgressHUD showError:@"没有访问权限"]; } } }]; ``` #### 4. 配置CallViewController 配置拨打接听界面 #### 5. API调用 发起多人音视频 ``` /// 邀请用户 /// @param clientIds 用户列表 /// @param roomId 房间号 /// @param completeBlock 获取结果回调 + (void)inviteWithClientIds:(NSArray *)clientIds roomId:(NSString *)roomId callback:(void (^)(BOOL success, WeCloudException *apiResult))completeBlock; ``` 用户离开(主动离开或取消视频) ``` /// @param roomId + (void)leaveRoomId:(NSString *)roomId callback:(void (^)(BOOL success, WeCloudException *apiResult))completeBlock; ``` 拒绝接听 ``` /// 被邀请用户拒绝 /// @param roomId 房间ID + (void)refuseWithRoomId:(NSString *)roomId callback:(void (^)(BOOL success, WeCloudException *apiResult))completeBlock; ``` 同意接听 ``` /// 被邀请用户接听 /// @param roomId 房间ID /// @param completeBlock 获取结果回调 + (void)acceptWithRoomId:(NSString *)roomId callback:(void (^)(BOOL success, WeCloudException *apiResult))completeBlock; ``` 用户超时(超过60S 未接听) ``` /// 用户超时 可能是自己 也可能是对方 /// @param roomId client客户端id,需与生成sign时的值一致 + (void)timeOutRoomId:(NSString *)roomId callback:(void (^)(BOOL success, WeCloudException *apiResult))completeBlock; ``` #### 6. IM事件回调 **注册事件** ``` [WeCloudIMClient sharedWeCloudIM].delegate_trtc = self; ``` **收到邀请** ``` /*! 收到邀请 @param data --- 邀请信息 */ -(void)receiveTRTC:(NSDictionary *)data; ``` **用户进入** ``` /*! 用户进入 @param data --- 进入信息 */ -(void)joinTRTC:(NSDictionary *)data; ``` **用户拒绝** ``` /*! 用户拒绝 @param data --- 拒绝信息 */ -(void)refuseTRTC:(NSDictionary *)data; ``` **用户离开** ``` /*! 用户离开 @param data --- 离开信息 */ -(void)leaveTRTC:(NSDictionary *)data; ``` **用户占线** ``` /*! 用户占线 @param data --- 占线信息 */ -(void)busyTRTC:(NSDictionary *)data; ``` #### 7. 说明 更多使用方法请参考 **多人音视频Demo**。