所需工具yun2win实时音视频IOS端sdk
下载sdk地址:https://github.com/yun2win/yun2win-sdk-iOS/tree/master/Y2W_IM_SDK
yun2win官网:www.yun2win.com
简介
Y2W_RTC_SDK集成多种实时通讯能力:
- 实时音频
 - 实时视频
 - 屏幕共享
 - 协作白板
 
开发流程
- 发起方使用Y2WRTCManager对象的createChannel方法创建Y2WRTCChannel对象
 - 接收方使用Y2WRTCManager对象的getChannel方法获取Y2WRTCChannel对象
 - 给Y2WRTCChannel添加委托对象,并实现Y2WRTCChannelDelegate协议方法
 - 然后调用join方法加入频道
 - 调用leave方法离开频道
 - 根据需求调用openAudio开启音频连接
 - 根据需求调用openVideo开启视频连接
 
代码示例
- 创建及获取频道 
   复制调用以下代码创建频道对象:
Y2WRTCManager *manager = [[Y2WRTCManager alloc] init]; manager.token = token; manager.memberId = uid; manager.memberName = name; manager.memberAvatarUrl = avatarUrl; [manager createChannel:^(NSError *error, Y2WRTCChannel *channel) { // 获取到频道对象,根据业务需求直接使用或跳转页面使用 }];复制调用以下代码获取频道对象:Y2WRTCManager *manager = [[Y2WRTCManager alloc] init]; manager.channelId = channelID; manager.token = token; manager.memberId = uid; manager.memberName = name; manager.memberAvatarUrl = avatarUrl; [manager getChannel:^(NSError *error, Y2WRTCChannel *channel) { // 获取到频道对象,根据业务需求直接使用或跳转页面使用 }];提醒
发起方创建频道后,需要在上层业务自行转发channelID,以便加入同一频道。
 - 添加回调和进入频道 
   复制
channel.delegate = self; [channel join]; - 开启语音功能 
   复制
/** * 开启音频连接 */ [channel openAudio]; /** * 开启扬声器 */ [channel setSpeaker:YES]; - 开启视频功能 
   复制
/** * 开启视频连接 */ [channel openVideo]; /** * 切换到后置摄像头 */ [channel useBackCamera:YES]; - 开启屏幕共享 
   复制
/** * 暂不支持移动端发起,接收时会进行回调 */ - (void)channel:(Y2WRTCChannel *)channel didOpenScreenOfMember:(Y2WRTCMember *)member; 
Y2WRTCManager
用于发起或加入频道
属性
 
  复制 
 
 
  @property (nonatomic, copy) NSString *channelId; // 频道ID,发起方会自动获取,加入时需要填入发起方获取的ID @property (nonatomic, copy) NSString *memberId; // 频道连接中的成员ID @property (nonatomic, copy) NSString *token; // 用户token 
 方法
 
  复制 
 
 
  /** * 创建并加入频道 * * @param block 发起失败会返回错误对象,成功返回频道对象,使用此对象进行操作和监听回调 */ - (void)createChannel:(void(^)(NSError *error, Y2WRTCChannel *channel))block; /** * 加入频道 * * @param block 加入失败会返回错误对象,成功返回频道对象,使用此对象进行操作和监听回调 */ - (void)getChannel:(void(^)(NSError *error, Y2WRTCChannel *channel))block; 
 Y2WRTCChannel
用于管理频道
属性
 
  复制 
 
 
  @property (nonatomic, copy) NSString *channelId; // 频道ID @property (nonatomic, weak) Y2WRTCMember *currentMember; // 当前成员 @property (nonatomic, weak) id<Y2WRTCChannelDelegate> delegate; // 委托对象 
 方法
- 基础功能 
   复制
/** * 获取频道内的当前成员 * * @return 成员数组 */ - (NSArray<Y2WRTCMember *> *)getMembers; /** * 加入频道 */ - (void)join; /** * 离开频道 */ - (void)leave;提醒
调用join方法时也会触发- (void)channel:(Y2WRTCChannel *)channel didJoinMember:(Y2WRTCMember *)member回调。
 - 音频功能 
   复制
/** * 开启音频连接 */ - (void)openAudio; /** * 关闭音频功能(关闭后无法发送和接受音频) */ - (void)closeAudio; /** * 是否开启扬声器 * * @param speaker bool */ - (void)setSpeaker:(BOOL)speaker; /** * 当前是否使用的扬声器 * * @return bool */ - (BOOL)speakerEnabled; /** * 是否设置麦克风静音 * * @param mute bool */ - (void)setMicMute:(BOOL)mute; /** * 麦克风是否静音状态 * * @return bool */ - (BOOL)micMuteEnabled; - 视频功能 
   复制
/** * 开启视频功能 */ - (void)openVideo; /** * 关闭视频功能(关闭后无法发送和接受视频) */ - (void)closeVideo; /** * 切换前后摄像头 * * @param use YES为使用后置摄像头 */ - (void)useBackCamera:(BOOL)use; /** * 当前是否使用的后置摄像头 * * @return YES为后置摄像头,NO为前置摄像头 */ - (BOOL)isUseBackCamera; 
Y2WRTCChannelDelegate
Y2WRTCChannel的委托对象需要实现的协议方法,用于频道内事件的回调
方法
 
  复制 
 
 
  /** * 有成员加入此频道 * * @param channel 频道对象 * @param member 成员对象 */ - (void)channel:(Y2WRTCChannel *)channel didJoinMember:(Y2WRTCMember *)member; /** * 有成员离开此频道 * * @param channel 频道对象 * @param member 成员对象 */ - (void)channel:(Y2WRTCChannel *)channel didLeaveMember:(Y2WRTCMember *)member; /** * 有成员开启了音频 * * @param channel 频道对象 * @param member 成员对象 */ - (void)channel:(Y2WRTCChannel *)channel didOpenAudioOfMember:(Y2WRTCMember *)member; /** * 有成员关闭了音频 * * @param channel 频道对象 * @param member 成员对象 */ - (void)channel:(Y2WRTCChannel *)channel didCloseAudioOfMember:(Y2WRTCMember *)member; /** * 有成员关闭或开启了麦克风 * * @param channel 频道对象 * @param member 成员对象 */ - (void)channel:(Y2WRTCChannel *)channel didSwitchMuteAudioOfMember:(Y2WRTCMember *)member; /** * 音频连接出现错误 * * @param channel 频道对象 * @param error 错误对象 */ - (void)channel:(Y2WRTCChannel *)channel onAudioError:(NSError *)error; /** * 有成员开启了视频 * * @param channel 频道对象 * @param member 成员对象 */ - (void)channel:(Y2WRTCChannel *)channel didOpenVideoOfMember:(Y2WRTCMember *)member; /** * 有成员关闭了视频 * * @param channel 频道对象 * @param member 成员对象 */ - (void)channel:(Y2WRTCChannel *)channel didCloseVideoOfMember:(Y2WRTCMember *)member; /** * 有成员关闭或开启了摄像头 * * @param channel 频道对象 * @param member 成员对象 */ - (void)channel:(Y2WRTCChannel *)channel didChangeVideoMuteFromMember:(Y2WRTCMember *)member; /** * 视频连接出现错误 * * @param channel 频道对象 * @param error 错误对象 */ - (void)channel:(Y2WRTCChannel *)channel onVideoError:(NSError *)error; /** * 有成员开启了屏幕共享 * * @param channel 频道对象 * @param member 成员对象 */ - (void)channel:(Y2WRTCChannel *)channel didOpenScreenOfMember:(Y2WRTCMember *)member; /** * 有成员关闭了屏幕共享 * * @param channel 频道对象 * @param member 成员对象 */ - (void)channel:(Y2WRTCChannel *)channel didCloseScreenOfMember:(Y2WRTCMember *)member; /** * 屏幕共享连接出现错误 * * @param channel 频道对象 * @param error 错误对象 */ - (void)channel:(Y2WRTCChannel *)channel onScreenError:(NSError *)error; 
 Y2WRTCMember
成员对象,管理成员的状态并提供视频数据
属性
 
  复制 
 
 
  @property (nonatomic, copy, readonly) NSString *uid; // 用户ID @property (nonatomic, retain, readonly) Y2WRTCVideoTrack *videoTrack; // 视频数据流 @property (nonatomic, retain, readonly) Y2WRTCVideoTrack *screenTrack; // 屏幕数据流 @property (nonatomic, assign, readonly) BOOL audioOpened; // 是否开启了音频连接 @property (nonatomic, assign, readonly) BOOL audioMuted; // 是否开启了静音(关闭麦克风) @property (nonatomic, assign, readonly) BOOL videoOpened; // 是否开启了视频连接 @property (nonatomic, assign, readonly) BOOL screenOpened; // 是否开启了屏幕共享连接 
 Y2WRTCVideoTrack
管理视频流数据,直接给渲染器的videoTrack属性赋值即可。
Y2WRTCVideoView
渲染器,用于渲染视频,直接给videoTrack属性赋值即可。
属性
 
  复制 
 
 
  /** * 当前使用的视频流管理器 */ @property (nonatomic, weak) Y2WRTCVideoTrack *videoTrack; /** * 委托对象 */ @property (nonatomic, weak) id<Y2WRTCVideoViewDelegate> delegate; /** * 视频内容的填充模式 * * 默认 Y2WRTCVideoViewFillModeScaleAspectFill */ @property (nonatomic, assign) Y2WRTCVideoViewFillMode fillMode; /** * 截图 */ @property (nonatomic, weak) UIImage *snapshot; 
 Y2WRTCVideoViewDelegate协议方法
 
  复制 
 
 
  /** * 视频内容分辨率发生变化,返回最新大小 * * @param videoView 触发此回调的渲染器对象 * @param size 尺寸 */ - (void)videoView:(Y2WRTCVideoView *)videoView didChangeVideoSize:(CGSize)size; 
 注意事项
- 获取到channel对象后需要调用join方法加入频道进行实时通讯
 - 为确保接收到所有回调,设置委托对象应该在调用join方法之前
 - SDK不会自动开启音频视频屏幕共享和白板功能,开发时根据需求调用各功能:
开启音频:[channel openAudio];
开启视频:[channel openVideo]; - 屏幕共享功能在移动端暂时不能主动发起,接收只需实现Y2WRTCChannelDelegate中的协议方法
 
