// // VideoManager+agora.m // SikeyComm // // Created by 刘振兴 on 2025/2/11. // Copyright © 2025 BaH Cy. All rights reserved. // #import "VideoManager+agora.h" #define APPKEY_AGORA @"92c4358b9f98419f9a10d345e59a77f1" #define CER_AGORA @"d4055ad6ce2a4c2faca9eed2acdab2dc" @interface VideoManager() @end @implementation VideoManager (agora) - (BOOL)initAgora { self.agoraKit = [AgoraRtcEngineKit sharedEngineWithAppId:APPKEY_AGORA delegate:self]; [self.agoraKit registerLocalUserAccount:[DataManager shared].loginModel.uid appId:APPKEY_AGORA]; [self.agoraKit enableVideo]; return YES; } - (void)joinChannel:(NSString*)token channelId:(NSString*)channelId uid:(NSUInteger)uid { AgoraRtcChannelMediaOptions *options = [[AgoraRtcChannelMediaOptions alloc] init]; // 自动订阅所有音频流 options.autoSubscribeAudio = YES; // 自动订阅所有视频流 options.autoSubscribeVideo = YES; // 发布摄像头采集的视频 options.publishCameraTrack = YES; // 发布麦克风采集的音频 options.publishMicrophoneTrack = YES; // 设置用户角色为主播;如果要将用户角色设置为观众,保持默认值即可 options.clientRoleType = AgoraClientRoleBroadcaster; // 使用临时 Token 加入频道,在这里传入你的项目的 Token 和频道名 // uid 为 0 表示由引擎内部随机生成; 成功后会触发 didJoinChannel 回调 int result = [self.agoraKit joinChannelByToken:token channelId:channelId uid:uid mediaOptions:options joinSuccess:nil]; } // 成功加入频道回调 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didJoinChannel:(NSString * _Nonnull)channel withUid:(NSUInteger)uid elapsed:(NSInteger)elapsed NS_SWIFT_NAME(rtcEngine(_:didJoinChannel:withUid:elapsed:)) { } // 当远端用户加入频道后,显示指定 uid 的远端视频流 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didJoinedOfUid:(NSUInteger)uid elapsed:(NSInteger)elapsed NS_SWIFT_NAME(rtcEngine(_:didJoinedOfUid:elapsed:)) { [[NSNotificationCenter defaultCenter] postNotificationName:NOTIFICATION_AGORA object:@(uid)]; } // 远端用户或主播离开当前频道回调 - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didOfflineOfUid:(NSUInteger)uid reason:(AgoraUserOfflineReason)reason NS_SWIFT_NAME(rtcEngine(_:didOfflineOfUid:reason:)) { [[NSNotificationCenter defaultCenter] postNotificationName:NOTIFICATION_AGORA object:@(-1)]; } - (void)termAgora { [self.agoraKit stopPreview]; [self.agoraKit leaveChannel:nil]; } - (void)clearAgora { [AgoraRtcEngineKit destroy]; } - (void)switchCameraAgora { [self.agoraKit switchCamera]; } @end