VideoManager+agora.m 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. @interface VideoManager() <AgoraRtcEngineDelegate>
  12. @end
  13. @implementation VideoManager (agora)
  14. - (BOOL)initAgora {
  15. self.agoraKit = [AgoraRtcEngineKit sharedEngineWithAppId:APPKEY_AGORA delegate:self];
  16. [self.agoraKit registerLocalUserAccount:[DataManager shared].loginModel.uid appId:APPKEY_AGORA];
  17. [self.agoraKit enableVideo];
  18. return YES;
  19. }
  20. - (void)joinChannel:(NSString*)token channelId:(NSString*)channelId uid:(NSUInteger)uid {
  21. AgoraRtcChannelMediaOptions *options = [[AgoraRtcChannelMediaOptions alloc] init];
  22. // 自动订阅所有音频流
  23. options.autoSubscribeAudio = YES;
  24. // 自动订阅所有视频流
  25. options.autoSubscribeVideo = YES;
  26. // 发布摄像头采集的视频
  27. options.publishCameraTrack = YES;
  28. // 发布麦克风采集的音频
  29. options.publishMicrophoneTrack = YES;
  30. // 设置用户角色为主播;如果要将用户角色设置为观众,保持默认值即可
  31. options.clientRoleType = AgoraClientRoleBroadcaster;
  32. // 使用临时 Token 加入频道,在这里传入你的项目的 Token 和频道名
  33. // uid 为 0 表示由引擎内部随机生成; 成功后会触发 didJoinChannel 回调
  34. int result = [self.agoraKit joinChannelByToken:token channelId:channelId uid:uid mediaOptions:options joinSuccess:nil];
  35. }
  36. // 成功加入频道回调
  37. - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didJoinChannel:(NSString * _Nonnull)channel withUid:(NSUInteger)uid elapsed:(NSInteger)elapsed NS_SWIFT_NAME(rtcEngine(_:didJoinChannel:withUid:elapsed:)) {
  38. }
  39. // 当远端用户加入频道后,显示指定 uid 的远端视频流
  40. - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didJoinedOfUid:(NSUInteger)uid elapsed:(NSInteger)elapsed NS_SWIFT_NAME(rtcEngine(_:didJoinedOfUid:elapsed:)) {
  41. [[NSNotificationCenter defaultCenter] postNotificationName:NOTIFICATION_AGORA object:@(uid)];
  42. }
  43. // 远端用户或主播离开当前频道回调
  44. - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didOfflineOfUid:(NSUInteger)uid reason:(AgoraUserOfflineReason)reason NS_SWIFT_NAME(rtcEngine(_:didOfflineOfUid:reason:)) {
  45. [[NSNotificationCenter defaultCenter] postNotificationName:NOTIFICATION_AGORA object:@(-1)];
  46. }
  47. - (void)termAgora {
  48. [self.agoraKit stopPreview];
  49. [self.agoraKit leaveChannel:nil];
  50. }
  51. - (void)clearAgora {
  52. [AgoraRtcEngineKit destroy];
  53. }
  54. - (void)switchCameraAgora {
  55. [self.agoraKit switchCamera];
  56. }
  57. @end