RtcManager 语音引擎模块统一管理
This commit is contained in:
3
Podfile
3
Podfile
@@ -34,6 +34,9 @@ target 'xplan-ios' do
|
|||||||
#文字自动滚动
|
#文字自动滚动
|
||||||
pod 'MarqueeLabel-ObjC'
|
pod 'MarqueeLabel-ObjC'
|
||||||
|
|
||||||
|
#声网
|
||||||
|
pod 'AgoraRtcEngine_iOS', '~> 3.0.1'
|
||||||
|
|
||||||
#登录的
|
#登录的
|
||||||
pod 'mob_sharesdk'
|
pod 'mob_sharesdk'
|
||||||
pod 'mob_sharesdk/ShareSDKPlatforms/QQ'
|
pod 'mob_sharesdk/ShareSDKPlatforms/QQ'
|
||||||
|
@@ -14,6 +14,7 @@ PODS:
|
|||||||
- AFNetworking/Serialization (4.0.1)
|
- AFNetworking/Serialization (4.0.1)
|
||||||
- AFNetworking/UIKit (4.0.1):
|
- AFNetworking/UIKit (4.0.1):
|
||||||
- AFNetworking/NSURLSession
|
- AFNetworking/NSURLSession
|
||||||
|
- AgoraRtcEngine_iOS (3.0.1.1)
|
||||||
- BaiduMobStatCodeless (5.3.5)
|
- BaiduMobStatCodeless (5.3.5)
|
||||||
- Base64 (1.1.2)
|
- Base64 (1.1.2)
|
||||||
- FFPopup (1.1.5)
|
- FFPopup (1.1.5)
|
||||||
@@ -54,6 +55,7 @@ PODS:
|
|||||||
|
|
||||||
DEPENDENCIES:
|
DEPENDENCIES:
|
||||||
- AFNetworking
|
- AFNetworking
|
||||||
|
- AgoraRtcEngine_iOS (~> 3.0.1)
|
||||||
- BaiduMobStatCodeless (~> 5.3.5)
|
- BaiduMobStatCodeless (~> 5.3.5)
|
||||||
- Base64
|
- Base64
|
||||||
- FFPopup
|
- FFPopup
|
||||||
@@ -79,6 +81,7 @@ DEPENDENCIES:
|
|||||||
SPEC REPOS:
|
SPEC REPOS:
|
||||||
trunk:
|
trunk:
|
||||||
- AFNetworking
|
- AFNetworking
|
||||||
|
- AgoraRtcEngine_iOS
|
||||||
- BaiduMobStatCodeless
|
- BaiduMobStatCodeless
|
||||||
- Base64
|
- Base64
|
||||||
- FFPopup
|
- FFPopup
|
||||||
@@ -102,6 +105,7 @@ SPEC REPOS:
|
|||||||
|
|
||||||
SPEC CHECKSUMS:
|
SPEC CHECKSUMS:
|
||||||
AFNetworking: 7864c38297c79aaca1500c33288e429c3451fdce
|
AFNetworking: 7864c38297c79aaca1500c33288e429c3451fdce
|
||||||
|
AgoraRtcEngine_iOS: 8ccceaaecff2e80ab28fcd33f3dfd2b417eb5365
|
||||||
BaiduMobStatCodeless: b3c73335cc1a5d464540111ff08857fc33cae656
|
BaiduMobStatCodeless: b3c73335cc1a5d464540111ff08857fc33cae656
|
||||||
Base64: cecfb41a004124895a7bcee567a89bae5a89d49b
|
Base64: cecfb41a004124895a7bcee567a89bae5a89d49b
|
||||||
FFPopup: a208dcee8db3e54ec4a88fcd6481f6f5d85b7a83
|
FFPopup: a208dcee8db3e54ec4a88fcd6481f6f5d85b7a83
|
||||||
@@ -123,6 +127,6 @@ SPEC CHECKSUMS:
|
|||||||
SZTextView: 094dc6acc9beec537685c545d6e3e0d4975174e1
|
SZTextView: 094dc6acc9beec537685c545d6e3e0d4975174e1
|
||||||
YYText: 5c461d709e24d55a182d1441c41dc639a18a4849
|
YYText: 5c461d709e24d55a182d1441c41dc639a18a4849
|
||||||
|
|
||||||
PODFILE CHECKSUM: 359c488aca65b2f81870e252d1da6f7da7b45dd5
|
PODFILE CHECKSUM: 10f014ae106af90b11a01aa549879c0e566b93e3
|
||||||
|
|
||||||
COCOAPODS: 1.10.1
|
COCOAPODS: 1.10.1
|
||||||
|
@@ -7,6 +7,9 @@
|
|||||||
objects = {
|
objects = {
|
||||||
|
|
||||||
/* Begin PBXBuildFile section */
|
/* Begin PBXBuildFile section */
|
||||||
|
18486213271EA9DA005FC5DC /* RtcManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 18486212271EA9DA005FC5DC /* RtcManager.m */; };
|
||||||
|
18486217271EAB8C005FC5DC /* BaseRtcImpl.m in Sources */ = {isa = PBXBuildFile; fileRef = 18486216271EAB8C005FC5DC /* BaseRtcImpl.m */; };
|
||||||
|
18486235271EB794005FC5DC /* AgoraRtcImpl.m in Sources */ = {isa = PBXBuildFile; fileRef = 18486234271EB794005FC5DC /* AgoraRtcImpl.m */; };
|
||||||
186A52E026FC559200D67B2C /* SecurityGuardSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 186A52DA26FC559200D67B2C /* SecurityGuardSDK.framework */; };
|
186A52E026FC559200D67B2C /* SecurityGuardSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 186A52DA26FC559200D67B2C /* SecurityGuardSDK.framework */; };
|
||||||
186A52E126FC559200D67B2C /* SGSecurityBody.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 186A52DB26FC559200D67B2C /* SGSecurityBody.framework */; };
|
186A52E126FC559200D67B2C /* SGSecurityBody.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 186A52DB26FC559200D67B2C /* SGSecurityBody.framework */; };
|
||||||
186A52E226FC559200D67B2C /* RPSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 186A52DC26FC559200D67B2C /* RPSDK.framework */; };
|
186A52E226FC559200D67B2C /* RPSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 186A52DC26FC559200D67B2C /* RPSDK.framework */; };
|
||||||
@@ -248,6 +251,13 @@
|
|||||||
/* End PBXCopyFilesBuildPhase section */
|
/* End PBXCopyFilesBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
|
18486211271EA9DA005FC5DC /* RtcManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RtcManager.h; sourceTree = "<group>"; };
|
||||||
|
18486212271EA9DA005FC5DC /* RtcManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RtcManager.m; sourceTree = "<group>"; };
|
||||||
|
18486214271EAA03005FC5DC /* RtcDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RtcDelegate.h; sourceTree = "<group>"; };
|
||||||
|
18486215271EAB8C005FC5DC /* BaseRtcImpl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BaseRtcImpl.h; sourceTree = "<group>"; };
|
||||||
|
18486216271EAB8C005FC5DC /* BaseRtcImpl.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BaseRtcImpl.m; sourceTree = "<group>"; };
|
||||||
|
18486233271EB794005FC5DC /* AgoraRtcImpl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AgoraRtcImpl.h; sourceTree = "<group>"; };
|
||||||
|
18486234271EB794005FC5DC /* AgoraRtcImpl.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AgoraRtcImpl.m; sourceTree = "<group>"; };
|
||||||
186A52DA26FC559200D67B2C /* SecurityGuardSDK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = SecurityGuardSDK.framework; sourceTree = "<group>"; };
|
186A52DA26FC559200D67B2C /* SecurityGuardSDK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = SecurityGuardSDK.framework; sourceTree = "<group>"; };
|
||||||
186A52DB26FC559200D67B2C /* SGSecurityBody.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = SGSecurityBody.framework; sourceTree = "<group>"; };
|
186A52DB26FC559200D67B2C /* SGSecurityBody.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = SGSecurityBody.framework; sourceTree = "<group>"; };
|
||||||
186A52DC26FC559200D67B2C /* RPSDK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = RPSDK.framework; sourceTree = "<group>"; };
|
186A52DC26FC559200D67B2C /* RPSDK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = RPSDK.framework; sourceTree = "<group>"; };
|
||||||
@@ -674,6 +684,20 @@
|
|||||||
/* End PBXFrameworksBuildPhase section */
|
/* End PBXFrameworksBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXGroup section */
|
/* Begin PBXGroup section */
|
||||||
|
18486210271EA9A5005FC5DC /* RTC */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
18486211271EA9DA005FC5DC /* RtcManager.h */,
|
||||||
|
18486212271EA9DA005FC5DC /* RtcManager.m */,
|
||||||
|
18486214271EAA03005FC5DC /* RtcDelegate.h */,
|
||||||
|
18486215271EAB8C005FC5DC /* BaseRtcImpl.h */,
|
||||||
|
18486216271EAB8C005FC5DC /* BaseRtcImpl.m */,
|
||||||
|
18486233271EB794005FC5DC /* AgoraRtcImpl.h */,
|
||||||
|
18486234271EB794005FC5DC /* AgoraRtcImpl.m */,
|
||||||
|
);
|
||||||
|
path = RTC;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
186A52D826FC551700D67B2C /* Library */ = {
|
186A52D826FC551700D67B2C /* Library */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@@ -906,6 +930,7 @@
|
|||||||
189DD56126DE45F800AB55B1 /* Main */ = {
|
189DD56126DE45F800AB55B1 /* Main */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
18486210271EA9A5005FC5DC /* RTC */,
|
||||||
E8AEAED3271412D00017FCE0 /* Room */,
|
E8AEAED3271412D00017FCE0 /* Room */,
|
||||||
E8E70D6E26F2EB1200F03460 /* Mine */,
|
E8E70D6E26F2EB1200F03460 /* Mine */,
|
||||||
18E7B1B426E8B2960064BC9B /* Tabbar */,
|
18E7B1B426E8B2960064BC9B /* Tabbar */,
|
||||||
@@ -1984,6 +2009,7 @@
|
|||||||
189DD73F26E21C3F00AB55B1 /* YYUtility+Carrier.m in Sources */,
|
189DD73F26E21C3F00AB55B1 /* YYUtility+Carrier.m in Sources */,
|
||||||
18E7B26926E8D5D60064BC9B /* XCCurrentVCStackManager.m in Sources */,
|
18E7B26926E8D5D60064BC9B /* XCCurrentVCStackManager.m in Sources */,
|
||||||
E824544326F58FCE00BE8163 /* XPMinePayPwdInputView.m in Sources */,
|
E824544326F58FCE00BE8163 /* XPMinePayPwdInputView.m in Sources */,
|
||||||
|
18486235271EB794005FC5DC /* AgoraRtcImpl.m in Sources */,
|
||||||
9B0E1C5926E77022005D4442 /* BaseNavigationController.m in Sources */,
|
9B0E1C5926E77022005D4442 /* BaseNavigationController.m in Sources */,
|
||||||
E8EEB8F426FC2050007C6EBA /* SDBrowserImageView.m in Sources */,
|
E8EEB8F426FC2050007C6EBA /* SDBrowserImageView.m in Sources */,
|
||||||
E824544626F5934700BE8163 /* XPMinePayPwdPresenter.m in Sources */,
|
E824544626F5934700BE8163 /* XPMinePayPwdPresenter.m in Sources */,
|
||||||
@@ -2020,6 +2046,7 @@
|
|||||||
E8AEAEF327141C7C0017FCE0 /* XPRoomMessageContainerView.m in Sources */,
|
E8AEAEF327141C7C0017FCE0 /* XPRoomMessageContainerView.m in Sources */,
|
||||||
E8AE427327153A3500BEEBB2 /* XPRoomActivityContainerView.m in Sources */,
|
E8AE427327153A3500BEEBB2 /* XPRoomActivityContainerView.m in Sources */,
|
||||||
E86596432701611A00846EBD /* UIImage+ImageEffects.m in Sources */,
|
E86596432701611A00846EBD /* UIImage+ImageEffects.m in Sources */,
|
||||||
|
18486217271EAB8C005FC5DC /* BaseRtcImpl.m in Sources */,
|
||||||
E8CEA03D26EA3DE500644B44 /* LoginPasswordPresent.m in Sources */,
|
E8CEA03D26EA3DE500644B44 /* LoginPasswordPresent.m in Sources */,
|
||||||
E8E70D7726F2F15100F03460 /* XPMineViewController.m in Sources */,
|
E8E70D7726F2F15100F03460 /* XPMineViewController.m in Sources */,
|
||||||
E8AC722C26F49580007D6E91 /* XPMineNotificaViewController.m in Sources */,
|
E8AC722C26F49580007D6E91 /* XPMineNotificaViewController.m in Sources */,
|
||||||
@@ -2047,6 +2074,7 @@
|
|||||||
E8EEB90926FC579A007C6EBA /* XPMineUserInfoEditTableViewCell.m in Sources */,
|
E8EEB90926FC579A007C6EBA /* XPMineUserInfoEditTableViewCell.m in Sources */,
|
||||||
18C17A5D26F338F300C48E11 /* XplanFBFlutterViewContainer.m in Sources */,
|
18C17A5D26F338F300C48E11 /* XplanFBFlutterViewContainer.m in Sources */,
|
||||||
E89DA67527009ACD008483C1 /* XPMineRechargeNavView.m in Sources */,
|
E89DA67527009ACD008483C1 /* XPMineRechargeNavView.m in Sources */,
|
||||||
|
18486213271EA9DA005FC5DC /* RtcManager.m in Sources */,
|
||||||
186A536926FC6F2E00D67B2C /* XCShareView.m in Sources */,
|
186A536926FC6F2E00D67B2C /* XCShareView.m in Sources */,
|
||||||
186A534C26FC6ED900D67B2C /* TTAlertView.m in Sources */,
|
186A534C26FC6ED900D67B2C /* TTAlertView.m in Sources */,
|
||||||
E868070A271959DB0024F48F /* XPRoomPositionView.m in Sources */,
|
E868070A271959DB0024F48F /* XPRoomPositionView.m in Sources */,
|
||||||
|
@@ -22,6 +22,7 @@ typedef NS_ENUM(NSUInteger, KeyType) {
|
|||||||
KeyType_QQSecret, ///QQ 的 secret
|
KeyType_QQSecret, ///QQ 的 secret
|
||||||
KeyType_WechatAppid,///微信的 appid
|
KeyType_WechatAppid,///微信的 appid
|
||||||
KeyType_WechatSecret,///微信的 secret
|
KeyType_WechatSecret,///微信的 secret
|
||||||
|
KeyType_Agora,///声网 key
|
||||||
};
|
};
|
||||||
|
|
||||||
/// 获取当前项目中所用到的 type 所对应的 value 的值 type 类型
|
/// 获取当前项目中所用到的 type 所对应的 value 的值 type 类型
|
||||||
|
@@ -25,6 +25,7 @@ NSString * const KeyWithType(KeyType type) {
|
|||||||
@(KeyType_QQSecret) : @"458ed9d671ba4b177799189db5fbc434",
|
@(KeyType_QQSecret) : @"458ed9d671ba4b177799189db5fbc434",
|
||||||
@(KeyType_WechatAppid) : @"wx3f0462eb7eccd64f",
|
@(KeyType_WechatAppid) : @"wx3f0462eb7eccd64f",
|
||||||
@(KeyType_WechatSecret) : @"1c07949e3f53433f1c6038bfcdd54c40",
|
@(KeyType_WechatSecret) : @"1c07949e3f53433f1c6038bfcdd54c40",
|
||||||
|
@(KeyType_Agora) : @"7ae1a8dabe7a44a9a67c829faa409e70",
|
||||||
},
|
},
|
||||||
///测试环境
|
///测试环境
|
||||||
@(NO):@{
|
@(NO):@{
|
||||||
@@ -34,6 +35,7 @@ NSString * const KeyWithType(KeyType type) {
|
|||||||
@(KeyType_QQSecret) : @"458ed9d671ba4b177799189db5fbc434",
|
@(KeyType_QQSecret) : @"458ed9d671ba4b177799189db5fbc434",
|
||||||
@(KeyType_WechatAppid) : @"wx3f0462eb7eccd64f",
|
@(KeyType_WechatAppid) : @"wx3f0462eb7eccd64f",
|
||||||
@(KeyType_WechatSecret) : @"1c07949e3f53433f1c6038bfcdd54c40",
|
@(KeyType_WechatSecret) : @"1c07949e3f53433f1c6038bfcdd54c40",
|
||||||
|
@(KeyType_Agora) : @"7ae1a8dabe7a44a9a67c829faa409e70",
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
NSDictionary * enviroDic = [dic objectForKey:@(isRelease)];
|
NSDictionary * enviroDic = [dic objectForKey:@(isRelease)];
|
||||||
|
16
xplan-ios/Main/RTC/AgoraRtcImpl.h
Normal file
16
xplan-ios/Main/RTC/AgoraRtcImpl.h
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
//
|
||||||
|
// AgoraRtcImpl.h
|
||||||
|
// xplan-ios
|
||||||
|
//
|
||||||
|
// Created by zu on 2021/10/19.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "BaseRtcImpl.h"
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@interface AgoraRtcImpl : BaseRtcImpl
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
66
xplan-ios/Main/RTC/AgoraRtcImpl.m
Normal file
66
xplan-ios/Main/RTC/AgoraRtcImpl.m
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
//
|
||||||
|
// AgoraRtcImpl.m
|
||||||
|
// xplan-ios
|
||||||
|
//
|
||||||
|
// Created by zu on 2021/10/19.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "AgoraRtcImpl.h"
|
||||||
|
#import "XPConstant.h"
|
||||||
|
#import <AgoraRtcKit/AgoraRtcEngineKit.h>
|
||||||
|
|
||||||
|
@interface AgoraRtcImpl()<AgoraRtcEngineDelegate>
|
||||||
|
|
||||||
|
@property(nonatomic, strong) AgoraRtcEngineKit *engine;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation AgoraRtcImpl
|
||||||
|
|
||||||
|
- (instancetype)init
|
||||||
|
{
|
||||||
|
self = [super init];
|
||||||
|
if (self) {
|
||||||
|
_engine = [AgoraRtcEngineKit sharedEngineWithAppId:KeyWithType(KeyType_Agora) delegate:self];
|
||||||
|
[_engine setChannelProfile:AgoraChannelProfileLiveBroadcasting];
|
||||||
|
[_engine enableLastmileTest];
|
||||||
|
[_engine setParameters:@"{\"che.audio.keep.audiosession\":true}"];
|
||||||
|
[_engine enableAudio];
|
||||||
|
[_engine disableVideo];
|
||||||
|
[_engine enableAudioVolumeIndication:900 smooth:3 report_vad:YES];
|
||||||
|
[_engine setAudioProfile:AgoraAudioProfileMusicStandard scenario:AgoraAudioScenarioChatRoomEntertainment];
|
||||||
|
#ifdef DEBUG
|
||||||
|
[_engine setLogFilter:AgoraLogFilterInfo];
|
||||||
|
#else
|
||||||
|
[_engine setLogFilter:0];
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - RtcDelegate impl
|
||||||
|
- (void)joinChannel:(nonnull NSString *)channelId {
|
||||||
|
[self.engine setClientRole:AgoraClientRoleAudience];
|
||||||
|
int code = [self.engine joinChannelByToken:nil channelId:channelId info:nil uid:[[[AccountInfoStorage instance] getUid] integerValue] joinSuccess:^(NSString * _Nonnull channel, NSUInteger uid, NSInteger elapsed) {
|
||||||
|
// TODO: success
|
||||||
|
}];
|
||||||
|
if (code != 0) {
|
||||||
|
// TODO: fail
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)broadcast:(BOOL)on {
|
||||||
|
[self.engine setClientRole:on ? AgoraClientRoleBroadcaster : AgoraClientRoleAudience];
|
||||||
|
[self.engine muteLocalAudioStream:!on];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)exitChannel {
|
||||||
|
[self.engine leaveChannel:nil];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)destory {
|
||||||
|
[AgoraRtcEngineKit destroy];
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
18
xplan-ios/Main/RTC/BaseRtcImpl.h
Normal file
18
xplan-ios/Main/RTC/BaseRtcImpl.h
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
//
|
||||||
|
// RTCBaseImpl.h
|
||||||
|
// xplan-ios
|
||||||
|
//
|
||||||
|
// Created by zu on 2021/10/19.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <Foundation/Foundation.h>
|
||||||
|
#import "RtcDelegate.h"
|
||||||
|
#import "AccountInfoStorage.h"
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@interface BaseRtcImpl : NSObject <RtcDelegate>
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
17
xplan-ios/Main/RTC/BaseRtcImpl.m
Normal file
17
xplan-ios/Main/RTC/BaseRtcImpl.m
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
//
|
||||||
|
// RTCBaseImpl.m
|
||||||
|
// xplan-ios
|
||||||
|
//
|
||||||
|
// Created by zu on 2021/10/19.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "BaseRtcImpl.h"
|
||||||
|
|
||||||
|
@implementation BaseRtcImpl
|
||||||
|
|
||||||
|
- (void)joinChannel:(NSString *)channelId broadcast:(BOOL)on {
|
||||||
|
[self joinChannel:channelId];
|
||||||
|
[self broadcast:on];
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
37
xplan-ios/Main/RTC/RtcDelegate.h
Normal file
37
xplan-ios/Main/RTC/RtcDelegate.h
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
//
|
||||||
|
// RTCDelegate.h
|
||||||
|
// xplan-ios
|
||||||
|
//
|
||||||
|
// Created by zu on 2021/10/19.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <Foundation/Foundation.h>
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@protocol RtcDelegate <NSObject>
|
||||||
|
|
||||||
|
/**
|
||||||
|
加入频道(房间)
|
||||||
|
*/
|
||||||
|
- (void)joinChannel:(NSString *)channelId;
|
||||||
|
/**
|
||||||
|
上下麦(说话)
|
||||||
|
*/
|
||||||
|
- (void)broadcast:(BOOL)on;
|
||||||
|
/**
|
||||||
|
加入频道同时上麦
|
||||||
|
*/
|
||||||
|
- (void)joinChannel:(NSString *)channelId broadcast:(BOOL)on;
|
||||||
|
/**
|
||||||
|
退出频道
|
||||||
|
*/
|
||||||
|
- (void)exitChannel;
|
||||||
|
/**
|
||||||
|
销毁引擎
|
||||||
|
*/
|
||||||
|
- (void)destory;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
32
xplan-ios/Main/RTC/RtcManager.h
Normal file
32
xplan-ios/Main/RTC/RtcManager.h
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
//
|
||||||
|
// RTCManager.h
|
||||||
|
// xplan-ios
|
||||||
|
//
|
||||||
|
// Created by zu on 2021/10/19.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <Foundation/Foundation.h>
|
||||||
|
#import "RtcDelegate.h"
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
typedef enum : NSUInteger {
|
||||||
|
RtcEngineType_Zego,//即构
|
||||||
|
RtcEngineType_Agora,//声网
|
||||||
|
RtcEngineType_WJ,//无界
|
||||||
|
RtcEngineType_AgoraFast,//声网急速
|
||||||
|
} RtcEngineType;
|
||||||
|
|
||||||
|
@interface RtcManager : NSObject
|
||||||
|
|
||||||
|
@property (nonatomic, strong, readonly) id<RtcDelegate> engine;
|
||||||
|
|
||||||
|
+ (instancetype _Nonnull)sharedEngineWithType:(RtcEngineType)type;
|
||||||
|
- (instancetype)init NS_UNAVAILABLE;
|
||||||
|
+ (instancetype)new NS_UNAVAILABLE;
|
||||||
|
- (id)copy NS_UNAVAILABLE;
|
||||||
|
- (id)mutableCopy NS_UNAVAILABLE;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
56
xplan-ios/Main/RTC/RtcManager.m
Normal file
56
xplan-ios/Main/RTC/RtcManager.m
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
//
|
||||||
|
// RTCManager.m
|
||||||
|
// xplan-ios
|
||||||
|
//
|
||||||
|
// Created by zu on 2021/10/19.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "RtcManager.h"
|
||||||
|
#import "AgoraRtcImpl.h"
|
||||||
|
|
||||||
|
@interface RtcManager()
|
||||||
|
|
||||||
|
@property (nonatomic, strong, readwrite) id<RtcDelegate> engine;
|
||||||
|
@property (nonatomic, assign) RtcEngineType engineType;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation RtcManager
|
||||||
|
|
||||||
|
+ (instancetype)sharedEngineWithType:(RtcEngineType)type {
|
||||||
|
static dispatch_once_t onceToken;
|
||||||
|
static RtcManager *instance = nil;
|
||||||
|
dispatch_once(&onceToken,^{
|
||||||
|
instance = [[self alloc] init];
|
||||||
|
});
|
||||||
|
[instance setEngineType:type];
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void) setEngineType:(RtcEngineType)type {
|
||||||
|
if (_engine && type != _engineType) {
|
||||||
|
[_engine exitChannel];
|
||||||
|
[_engine destory];
|
||||||
|
_engine = nil;
|
||||||
|
}
|
||||||
|
_engineType = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (id<RtcDelegate>)engine {
|
||||||
|
if (!_engine) {
|
||||||
|
switch (_engineType) {
|
||||||
|
case RtcEngineType_Agora: {
|
||||||
|
_engine = [[AgoraRtcImpl alloc] init];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default: {
|
||||||
|
_engine = [[AgoraRtcImpl alloc] init];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return _engine;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
Reference in New Issue
Block a user