VideoManager+agora.m 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. //
  2. // VideoManager+agora.m
  3. // SikeyComm
  4. //
  5. // Created by 刘振兴 on 2025/2/11.
  6. // Copyright © 2025 BaH Cy. All rights reserved.
  7. //
  8. #import "VideoManager+agora.h"
  9. #define APPKEY_AGORA @"92c4358b9f98419f9a10d345e59a77f1"
  10. #define CER_AGORA @"d4055ad6ce2a4c2faca9eed2acdab2dc"
  11. @implementation VideoManager (agora)
  12. - (BOOL)initAgora {
  13. self.agoraKit = [AgoraRtcEngineKit sharedEngineWithAppId:APPKEY_AGORA delegate:self];
  14. [self.agoraKit enableVideo];
  15. return YES;
  16. }
  17. - (void)joinChannel:(NSString*)token channelId:(NSString*)channelId uid:(NSUInteger)uid {
  18. AgoraRtcChannelMediaOptions *options = [[AgoraRtcChannelMediaOptions alloc] init];
  19. // 自动订阅所有音频流
  20. options.autoSubscribeAudio = YES;
  21. // 自动订阅所有视频流
  22. options.autoSubscribeVideo = YES;
  23. // 发布摄像头采集的视频
  24. options.publishCameraTrack = YES;
  25. // 发布麦克风采集的音频
  26. options.publishMicrophoneTrack = YES;
  27. // 设置用户角色为主播;如果要将用户角色设置为观众,保持默认值即可
  28. options.clientRoleType = AgoraClientRoleBroadcaster;
  29. // 使用临时 Token 加入频道,在这里传入你的项目的 Token 和频道名
  30. // uid 为 0 表示由引擎内部随机生成; 成功后会触发 didJoinChannel 回调
  31. int result = [self.agoraKit joinChannelByToken:token channelId:channelId uid:uid mediaOptions:options joinSuccess:nil];
  32. }
  33. - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didJoinChannel:(NSString * _Nonnull)channel withUid:(NSUInteger)uid elapsed:(NSInteger)elapsed NS_SWIFT_NAME(rtcEngine(_:didJoinChannel:withUid:elapsed:)) {
  34. }
  35. - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didJoinedOfUid:(NSUInteger)uid elapsed:(NSInteger)elapsed NS_SWIFT_NAME(rtcEngine(_:didJoinedOfUid:elapsed:)) {
  36. }
  37. - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didOfflineOfUid:(NSUInteger)uid reason:(AgoraUserOfflineReason)reason NS_SWIFT_NAME(rtcEngine(_:didOfflineOfUid:reason:)) {
  38. }
  39. - (void)clearAgora {
  40. [self.agoraKit stopPreview];
  41. [self.agoraKit leaveChannel:nil];
  42. [AgoraRtcEngineKit destroy];
  43. }
  44. @end