Skip to content

Commit 29a759c

Browse files
author
eagleychen
committed
添加跟随配置
1 parent 214728f commit 29a759c

File tree

5 files changed

+106
-24
lines changed

5 files changed

+106
-24
lines changed

Podfile.lock

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,13 @@ PODS:
3535
- TIoTLinkKit_SoundTouch (1.0.0)
3636
- TIoTLinkKit_TPNS (1.0.1)
3737
- TIoTLinkKit_WechatOpenSDK (1.0.1)
38-
- TIoTLinkKit_XP2P (2.4.53-beta.202501090851)
38+
- TIoTLinkKit_XP2P (2.4.53-beta.202501160208)
3939
- TIoTLinkVideo (1.0.0):
4040
- CocoaAsyncSocket (= 7.6.5)
4141
- TIoTLinkKit_FLV (= 2.2.3)
4242
- TIoTLinkKit_GVoiceSE (>= 1.0.9)
4343
- TIoTLinkKit_SoundTouch (= 1.0.0)
44-
- TIoTLinkKit_XP2P (= 2.4.53-beta.202501090851)
44+
- TIoTLinkKit_XP2P (= 2.4.53-beta.202501160208)
4545
- TPCircularBuffer (= 1.6.1)
4646
- TPCircularBuffer (1.6.1)
4747
- TrueTime (5.0.3)
@@ -133,8 +133,8 @@ SPEC CHECKSUMS:
133133
TIoTLinkKit_SoundTouch: cf79ae182b6c2349ff65bac7a338974bc538fa77
134134
TIoTLinkKit_TPNS: 7cea4fc1d20ef6c4c11c4f0b66bbb10ecf4ed968
135135
TIoTLinkKit_WechatOpenSDK: 7822d68cc5c46edf3f6020422202e7b65ea87614
136-
TIoTLinkKit_XP2P: 8deb9634d40c5d0f8017dfe194772df7ffdef91d
137-
TIoTLinkVideo: d54f51752e79671adb62a4392b603c57f86de5e0
136+
TIoTLinkKit_XP2P: 437662cf3a6020ac396a3048202b85254afaa930
137+
TIoTLinkVideo: a230c64dea6108cb1a7af207279fd6bb7543d381
138138
TPCircularBuffer: c13243556527551c4d320709c7b14a6d20cdc30a
139139
TrueTime: b49551ffafb28a9dee04e51b226f42a416010842
140140
TXLiteAVSDK_TRTC: e3383a81565e8bb2aaaaab4bd099ad5239cd5b2d

Source/LinkSDKDemo/Video/P2P/Controller/TIoTDemoPreviewDeviceVC.m

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,16 @@ - (void)viewDidLoad {
128128

129129
TIoTCoreAppEnvironment *env = [TIoTCoreAppEnvironment shareEnvironment];
130130

131-
int errorcode = [[TIoTCoreXP2PBridge sharedInstance] startAppWith:env.cloudProductId dev_name:self.deviceName?:@""];
131+
TIoTP2PAPPConfig *config = [TIoTP2PAPPConfig new];
132+
config.appkey = env.appKey; //为explorer平台注册的应用信息(https://console.cloud.tencent.com/iotexplorer/v2/instance/app/detai) explorer控制台- 应用开发 - 选对应的应用下的 appkey/appsecret
133+
config.appsecret = env.appSecret; //为explorer平台注册的应用信息(https://console.cloud.tencent.com/iotexplorer/v2/instance/app/detai) explorer控制台- 应用开发 - 选对应的应用下的 appkey/appsecret
134+
config.userid = [[TIoTCoreXP2PBridge sharedInstance] getAppUUID];
135+
136+
config.autoConfigFromDevice = YES;
137+
config.type = XP2P_PROTOCOL_AUTO;
138+
config.crossStunTurn = NO;
139+
140+
int errorcode = [[TIoTCoreXP2PBridge sharedInstance] startAppWith:env.cloudProductId dev_name:self.deviceName?:@"" appconfig:config];
132141
if (errorcode == XP2P_ERR_VERSION) {
133142
UIAlertController *alertC = [UIAlertController alertControllerWithTitle:@"APP SDK 版本与设备端 SDK 版本号不匹配,版本号需前两位保持一致" message:nil preferredStyle:(UIAlertControllerStyleAlert)];
134143
UIAlertAction *alertA = [UIAlertAction actionWithTitle:@"确定" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction * _Nonnull action) {

Source/SDK/LinkVideo/TIoTCoreXP2PBridge.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ extern NSNotificationName const TIoTCoreXP2PBridgeNotificationStreamEnd;
2323
@property (nonatomic, strong)NSString *appsecret; //为explorer平台注册的应用信息(https://console.cloud.tencent.com/iotexplorer/v2/instance/app/detai)
2424
@property (nonatomic, strong)NSString *userid; //用户纬度(每个手机区分开)使用用户自有的账号系统userid;若无请配置为[TIoTCoreXP2PBridge sharedInstance].getAppUUID; 查找日志是需提供此userid字段
2525

26+
@property (nonatomic, assign)BOOL autoConfigFromDevice; //是否跟随对应设备配置,YES 后下面的配置(cross、type等)不生效
2627
@property (nonatomic, assign)BOOL crossStunTurn; //是否打开双中转开关,默认false
2728
@property (nonatomic, assign)XP2PProtocolType type; //通信协议,默认auto
2829
@end

Source/SDK/LinkVideo/TIoTCoreXP2PBridge.mm

Lines changed: 90 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -231,17 +231,6 @@ - (instancetype)init {
231231
return self;
232232
}
233233

234-
/*
235-
- (XP2PErrCode)startAppWith:(NSString *)sec_id sec_key:(NSString *)sec_key pro_id:(NSString *)pro_id dev_name:(NSString *)dev_name {
236-
return [self startAppWith:sec_id sec_key:sec_key pro_id:pro_id dev_name:dev_name xp2pinfo:@""];
237-
}
238-
- (XP2PErrCode)startAppWith:(NSString *)sec_id sec_key:(NSString *)sec_key pro_id:(NSString *)pro_id dev_name:(NSString *)dev_name xp2pinfo:(NSString *)xp2pinfo {
239-
setQcloudApiCred([sec_id UTF8String], [sec_key UTF8String]); //正式版app发布时候需要去掉,避免泄露secretid和secretkey,此处仅为演示
240-
int ret = [self startAppWith:pro_id dev_name:dev_name type:XP2P_PROTOCOL_AUTO];
241-
setDeviceXp2pInfo(dev_name.UTF8String, xp2pinfo.UTF8String);
242-
return (XP2PErrCode)ret;
243-
}
244-
*/
245234
- (const char *)dicConvertString:(NSDictionary *)dic {
246235
NSError *error;
247236
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:kNilOptions error:&error];
@@ -258,6 +247,7 @@ - (XP2PErrCode)startAppWith:(NSString *)pro_id dev_name:(NSString *)dev_name {
258247
config.appsecret = @"appsecret"; //为explorer平台注册的应用信息(https://console.cloud.tencent.com/iotexplorer/v2/instance/app/detai) explorer控制台- 应用开发 - 选对应的应用下的 appkey/appsecret
259248
config.userid = [self getAppUUID];
260249

250+
config.autoConfigFromDevice = NO;
261251
config.type = XP2P_PROTOCOL_AUTO;
262252
config.crossStunTurn = NO;
263253
return [self startAppWith:pro_id dev_name:dev_name appconfig:config];
@@ -293,14 +283,30 @@ - (XP2PErrCode)startAppWith:(NSString *)pro_id dev_name:(NSString *)dev_name app
293283

294284
// 配置是否启用双中转
295285
setCrossStunTurn(false);
296-
if (appconfig.crossStunTurn) {
297-
setCrossStunTurn(true);
298-
}
299286

300287
//1.配置IOT_P2P SDK
301288
self.pro_id = pro_id;
302289
self.dev_name = dev_name;
303-
int ret = startService(dev_name.UTF8String, pro_id.UTF8String, dev_name.UTF8String, appconfig.type);
290+
291+
int ret = XP2P_ERR_NONE;
292+
293+
if (appconfig.autoConfigFromDevice) {
294+
[self appGeDeviceConfig:appconfig]; //get config
295+
296+
}else {
297+
app_config_t config_ = {
298+
.server = "",
299+
.ip = "",
300+
.port = 20002,
301+
.type = appconfig.type
302+
};
303+
304+
if (appconfig.crossStunTurn) {
305+
setCrossStunTurn(true);
306+
}
307+
ret = startService(dev_name.UTF8String, pro_id.UTF8String, dev_name.UTF8String, config_);
308+
}
309+
304310
return (XP2PErrCode)ret;
305311
}
306312

@@ -398,6 +404,75 @@ - (void)appGetUserConfig:(TIoTP2PAPPConfig *)appconfig {
398404
[tasklog resume];
399405
}
400406

407+
- (void)appGeDeviceConfig:(TIoTP2PAPPConfig *)appconfig {
408+
NSMutableDictionary *accessParam = [NSMutableDictionary dictionary];
409+
[accessParam setValue:@"AppDescribeConfigureDeviceP2P" forKey:@"Action"];
410+
[accessParam setValue:@([[TIoTCoreXP2PBridge getNowTimeTimestampSec] integerValue]) forKey:@"Timestamp"];
411+
[accessParam setValue:@(arc4random()) forKey:@"Nonce"];
412+
[accessParam setValue:appconfig.appkey forKey:@"AppKey"];
413+
[accessParam setValue:self.pro_id forKey:@"ProductId"];
414+
[accessParam setValue:self.dev_name forKey:@"DeviceName"];
415+
[accessParam setValue:[[NSUUID UUID] UUIDString] forKey:@"RequestId"];
416+
417+
NSString *content = createSortedQueryString(accessParam);
418+
NSString *signature = [self signMessage:content withSecret:appconfig.appsecret];
419+
[accessParam setValue:signature forKey:@"Signature"];
420+
421+
422+
NSURL *url = [NSURL URLWithString:@"https://iot.cloud.tencent.com/api/exploreropen/appapi"];
423+
NSMutableURLRequest *reqlog = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:5];
424+
[reqlog setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
425+
reqlog.HTTPMethod = @"POST";
426+
reqlog.HTTPBody = [NSJSONSerialization dataWithJSONObject:accessParam options:NSJSONWritingFragmentsAllowed error:nil];;
427+
NSURLSessionDataTask *tasklog = [[NSURLSession sharedSession] dataTaskWithRequest:reqlog completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
428+
429+
app_config_t config_ = {
430+
.server = "",
431+
.ip = "",
432+
.port = 20002,
433+
.type = appconfig.type,
434+
.cross = false
435+
};
436+
437+
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
438+
if (httpResponse.statusCode == 200) {
439+
NSError *jsonerror = nil;
440+
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&jsonerror];
441+
// NSLog(@"log serverapi:content===>%@, param==>%@, data===>%@",content,accessParam,dic);
442+
NSDictionary *deviceconfig = [[dic objectForKey:@"data"] objectForKey:@"Config"];
443+
444+
bool enableCrossStunTurn = [[deviceconfig objectForKey:@"EnableCrossStunTurn"] boolValue];
445+
int stunPort = [[deviceconfig objectForKey:@"StunPort"] intValue];
446+
NSString *stunHost = [deviceconfig objectForKey:@"StunHost"];
447+
NSString *stunIP = [deviceconfig objectForKey:@"StunIP"];
448+
NSString *protocol = [deviceconfig objectForKey:@"Protocol"];
449+
450+
config_.cross = enableCrossStunTurn;
451+
if (stunPort) {
452+
config_.port = stunPort;
453+
}
454+
if (stunHost.length > 0) {
455+
config_.server = stunHost.UTF8String;
456+
}
457+
if (stunIP.length > 0) {
458+
config_.ip = stunIP.UTF8String;
459+
}
460+
if ([protocol isEqualToString:@"TCP"]) {
461+
config_.type = XP2P_PROTOCOL_TCP;
462+
}else {
463+
config_.type = XP2P_PROTOCOL_AUTO;
464+
}
465+
}
466+
467+
468+
if (config_.cross) {
469+
setCrossStunTurn(true);
470+
}
471+
startService(self.dev_name.UTF8String, self.pro_id.UTF8String, self.dev_name.UTF8String, config_);
472+
}];
473+
[tasklog resume];
474+
}
475+
401476
- (NSString *)getUrlForHttpFlv:(NSString *)dev_name {
402477
const char *httpflv = delegateHttpFlv(dev_name.UTF8String);
403478
NSLog(@"httpflv---%s",httpflv);
@@ -845,9 +920,6 @@ - (void)setAppConfig:(NSDictionary *)appconfig {
845920

846921
[self saveKeychainValue:tmp_p2p_log_enabled key:@"p2p_log_enabled"];
847922
[self saveKeychainValue:tmp_ops_report_enabled key:@"ops_report_enabled"];
848-
849-
p2p_log_enabled = tmp_p2p_log_enabled.boolValue;
850-
ops_report_enabled = tmp_ops_report_enabled.boolValue;
851923
}
852924

853925
+ (NSString *)getSDKVersion {

TIoTLinkVideo.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ Pod::Spec.new do |s|
1919
s.source_files = 'Source/SDK/LinkVideo/**/*.{h,m,c,mm}'
2020
s.resource = 'Source/SDK/LinkVideo/FLV/asset/GvoiceSE_v1_239-119-oneref-e.nn'
2121

22-
s.dependency 'TIoTLinkKit_XP2P', '2.4.53-beta.202501090851'
22+
s.dependency 'TIoTLinkKit_XP2P', '2.4.53-beta.202501160208'
2323
s.dependency 'TIoTLinkKit_FLV', '2.2.3'
2424
s.dependency 'CocoaAsyncSocket', '7.6.5'
2525
s.dependency 'TIoTLinkKit_SoundTouch', '1.0.0'

0 commit comments

Comments
 (0)