Files
yinmeng-ios/xplan-ios/Main/RTC/RtcManager.m

92 lines
2.0 KiB
Mathematica
Raw Normal View History

//
// RTCManager.m
// xplan-ios
//
// Created by zu on 2021/10/19.
//
#import "RtcManager.h"
#import "AgoraRtcImpl.h"
@interface RtcManager()
2021-10-20 14:21:57 +08:00
@property (nonatomic, strong) id<RtcInterface> engine;
2021-10-20 17:06:31 +08:00
@property (nonatomic,assign) id<RtcDelegate> engineDelegate;
@property (nonatomic, assign) RtcEngineType engineType;
2021-10-20 17:06:31 +08:00
@end
@implementation RtcManager
2021-10-20 17:06:31 +08:00
+ (instancetype)instance {
static dispatch_once_t onceToken;
static RtcManager *instance = nil;
dispatch_once(&onceToken,^{
instance = [[self alloc] init];
});
return instance;
}
2021-10-20 17:06:31 +08:00
+ (instancetype)initEngineWithType:(RtcEngineType)type delegate:(id<RtcDelegate> _Nullable)delegate{
RtcManager* rtcManager = [self instance];
[rtcManager setEngineType:type];
[rtcManager setEngineDelegate:delegate];
return rtcManager;
}
- (BOOL)joinChannel:(NSString *)channelId {
return [self.engine joinChannel:channelId];
2021-10-19 19:29:25 +08:00
}
2021-10-20 17:06:31 +08:00
- (void)broadcast:(BOOL)on {
[self.engine broadcast:on];
}
- (BOOL)joinChannel:(NSString *)channelId broadcast:(BOOL)on {
return [self.engine joinChannel:channelId broadcast:on];
}
- (void)exitChannel {
[self.engine exitChannel];
}
- (void)destory {
[self.engine destory];
}
- (void)setEngineType:(RtcEngineType)type {
if (_engine && type != _engineType) {
[_engine exitChannel];
[_engine destory];
_engine = nil;
}
_engineType = type;
}
2021-10-20 17:06:31 +08:00
- (void)setEngineDelegate:(id<RtcDelegate>)delegate {
_engineDelegate = delegate;
}
2021-10-20 14:21:57 +08:00
- (id<RtcInterface>)engine {
if (!_engine) {
switch (_engineType) {
2021-10-20 14:21:57 +08:00
case RtcEngineType_Agora:
2021-10-20 17:06:31 +08:00
{
_engine = [[AgoraRtcImpl alloc] init];
}
break;
2021-10-20 14:21:57 +08:00
default:
2021-10-20 17:06:31 +08:00
{
_engine = [[AgoraRtcImpl alloc] init];
}
break;
}
}
2021-10-20 17:06:31 +08:00
if ([_engine isKindOfClass:[BaseRtcImpl class]]) {
((BaseRtcImpl*)_engine).delegate = self.engineDelegate;
}
return _engine;
}
@end