// // RTCManager.h // YUMI // // Created by zu on 2021/10/19. // #import #import "RtcDelegate.h" NS_ASSUME_NONNULL_BEGIN typedef enum : NSUInteger { RtcEngineType_Agora = 1001, // 声网 RtcEngineType_Zego, // 即构 RtcEngineType_WJ, // 无界 RtcEngineType_AgoraFast, // 声网急速 RtcEngineType_TRTC, // 腾讯TRTC } RtcEngineType; typedef NS_ENUM(NSInteger, BackMusicPlayState) { ///停止 BackMusicPlayState_Stop = 1, ///暂停 BackMusicPlayState_Pause, ///重新播放 BackMusicPlayState_Resume }; /** 音频服务管理单例,对所有音频服务 SDK 的封装。 **Note:** - ✅ 外部调用者只需要调用 RtcManager 。 - ✅ RtcManager 对房间业务逻辑有封装。 - ❌ 业务逻辑不要侵入 RctImpl 。 */ @interface RtcManager : NSObject ///因为跨房pk结束后会闭麦,用这个限制不要关麦 @property(nonatomic,assign) BOOL isAnckorPk; /** * 是否静音(静别人) * YES:🔇虽然你们麦位上在说话,但是我就是不听。🙉 * NO:🔊我听,我听。🐵 */ @property(nonatomic,getter=isRemoteMuted) BOOL remoteMuted; /** * 是否闭麦(闭自己) * YES:🤐虽然我在麦位上,但是我就是不说话。🙊 * NO:😲我说,我说。🐵 */ @property(nonatomic,getter=isLocalMuted) BOOL localMuted; /** 初始化/重新初始化 RtcManager 实例,设置音频服务类型和 RtcDelegate。 **Note:** - 切换音频服务或者更换 delegate 必须先调用该方法。 - RtcManager 是单例,[RtcManager instance] 也可以获取到 RtcManager 实例。 @param type 使用的音频服务 RtcEngineType。 @param delegate RtcDelegate。 @return - RtcManager instance */ + (instancetype _Nonnull)initEngineWithType:(RtcEngineType)type delegate:(id _Nullable)delegate; /** 获取 RtcManager instance。 **Note:** - 务必先 [RtcManager initEngineWithType:delegate:] 设置 RtcEngineType 和 RtcDelegate,否则默认使用声网服务。 @return - RtcManager instance */ + (instancetype _Nonnull)instance; - (instancetype)init NS_UNAVAILABLE; + (instancetype)new NS_UNAVAILABLE; - (id)copy NS_UNAVAILABLE; - (id)mutableCopy NS_UNAVAILABLE; /** 加入频道(房间)。 **Note:** - 重复进房会直接 return YES。 @return - 进房结果。 */ - (BOOL)enterRoom:(NSString *)roomUid; /** 加入频道(房间),TRTC 进房需要动态签名。 **Note:** - 重复进房会直接 return YES。 @return - 进房结果。 */ - (BOOL)enterRoom:(NSString *)roomUid trtcSign:(NSString *)sign; /** * 上下麦(说话) */ - (void)broadcast:(BOOL)on; /** * 退出频道 */ - (void)exitRoom; ///发起跨房PK - (void)connectOtherRoom:(NSString *)roomUid userId:(NSString *)uid; ///退出跨房通话 - (void)disconnectOtherRoom; /// 静音某个人 /// @param userId 用户id - (void)muteOne:(BOOL)mute userId:(NSString *)userId; /// 播放背景音乐 /// @param filePath 音频文件的地址 /// @param musicId TRTC自己要的 - (BOOL)playBackMusic:(NSString *)filePath musicId:(int)musicId completion:(void (^)(NSString *))completion; /// 改变播放器的状态 /// @param state 播放状态 - (BOOL)changePlayState:(BackMusicPlayState)state; ///背景音乐的音量大小 - (void)updateMusicSound:(int)soundVol; ///背景人声的音量大小 - (void)updateUserSound:(int)soundVol; @property (nonatomic,assign) BOOL broadcast; @end NS_ASSUME_NONNULL_END