1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- //
- // 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() <AgoraRtcEngineDelegate>
- @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
|