iOS端im實時音視頻功能快速開發實操指導!


 

簡介

Y2W_RTC_SDK集成多種實時通訊能力:

  1. 實時音頻
  2. 實時視頻
  3. 屏幕共享
  4. 協作白板

開發流程

  1. 發起方使用Y2WRTCManager對象的createChannel方法創建Y2WRTCChannel對象
  2. 接收方使用Y2WRTCManager對象的getChannel方法獲取Y2WRTCChannel對象
  3. 給Y2WRTCChannel添加委托對象,並實現Y2WRTCChannelDelegate協議方法
  4. 然后調用join方法加入頻道
  5. 調用leave方法離開頻道
  6. 根據需求調用openAudio開啟音頻連接
  7. 根據需求調用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;

注意事項

  1. 獲取到channel對象后需要調用join方法加入頻道進行實時通訊
  2. 為確保接收到所有回調,設置委托對象應該在調用join方法之前
  3. SDK不會自動開啟音頻視頻屏幕共享和白板功能,開發時根據需求調用各功能:
    開啟音頻:[channel openAudio];
    開啟視頻:[channel openVideo];
  4. 屏幕共享功能在移動端暫時不能主動發起,接收只需實現Y2WRTCChannelDelegate中的協議方法

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM