From 69d80d5736855d0b3026001bafa00e5614449cab Mon Sep 17 00:00:00 2001 From: eagleychen Date: Tue, 18 Feb 2025 11:14:30 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9B=86=E6=88=90=E5=8F=8C=E4=B8=AD=E8=BD=AC?= =?UTF-8?q?=E6=AD=A3=E5=BC=8F=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Podfile.lock | 8 +-- .../EquipmentPanel/Controller/TIoTPanelVC.m | 5 +- .../Controller/TIoTAreaNetworkPreviewVC.m | 2 +- .../Controller/TIoTDemoNVRSubDeviceVC.m | 3 +- .../Controller/PreviousPath/TIoTPlayListVC.m | 3 +- .../Controller/PreviousPath/TIoTPlayMovieVC.m | 3 +- .../P2P/Controller/TIoTDemoPreviewDeviceVC.m | 63 +++++++------------ .../P2P/Controller/TIoTDemoSameScreenVC.m | 3 +- .../P2P/Controller/TIoTDemoVideoCallVC.m | 5 +- .../P2P/Controller/TIoTDemoVideoPushVC.m | 5 +- .../Video/P2P/Mjpeg/TIoTDemoPreviewMJPEGVC.m | 5 +- .../Controller/TIoTDemoLocalRecordVC.m | 3 +- .../Video/PlayBack/TIoTDemoPlaybackVC.m | 6 +- Source/SDK/LinkVideo/TIoTCoreXP2PBridge.h | 7 +-- Source/SDK/LinkVideo/TIoTCoreXP2PBridge.mm | 37 ++--------- TIoTLinkVideo.podspec | 2 +- 16 files changed, 65 insertions(+), 95 deletions(-) diff --git a/Podfile.lock b/Podfile.lock index 066f4a7b..595898a2 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -35,13 +35,13 @@ PODS: - TIoTLinkKit_SoundTouch (1.0.0) - TIoTLinkKit_TPNS (1.0.1) - TIoTLinkKit_WechatOpenSDK (1.0.1) - - TIoTLinkKit_XP2P (2.4.53-beta.202501160957) + - TIoTLinkKit_XP2P (2.4.53) - TIoTLinkVideo (1.0.0): - CocoaAsyncSocket (= 7.6.5) - TIoTLinkKit_FLV (= 2.2.3) - TIoTLinkKit_GVoiceSE (>= 1.0.9) - TIoTLinkKit_SoundTouch (= 1.0.0) - - TIoTLinkKit_XP2P (= 2.4.53-beta.202501160957) + - TIoTLinkKit_XP2P (= 2.4.53) - TPCircularBuffer (= 1.6.1) - TPCircularBuffer (1.6.1) - TrueTime (5.0.3) @@ -133,8 +133,8 @@ SPEC CHECKSUMS: TIoTLinkKit_SoundTouch: cf79ae182b6c2349ff65bac7a338974bc538fa77 TIoTLinkKit_TPNS: 7cea4fc1d20ef6c4c11c4f0b66bbb10ecf4ed968 TIoTLinkKit_WechatOpenSDK: 7822d68cc5c46edf3f6020422202e7b65ea87614 - TIoTLinkKit_XP2P: a837af943efdecba6b31cffb89c8b1eb81c8e1d6 - TIoTLinkVideo: 49b40d4ea42bed540d7f6ebeb083bd31da729e5a + TIoTLinkKit_XP2P: 731eba7755f80c6a9a98ec872e78947ae5df1272 + TIoTLinkVideo: c5b7a6a397f4d724650ead8d4eed5922380feb6b TPCircularBuffer: c13243556527551c4d320709c7b14a6d20cdc30a TrueTime: b49551ffafb28a9dee04e51b226f42a416010842 TXLiteAVSDK_TRTC: e3383a81565e8bb2aaaaab4bd099ad5239cd5b2d diff --git a/Source/LinkApp/Classes/Module/EquipmentPanel/Controller/TIoTPanelVC.m b/Source/LinkApp/Classes/Module/EquipmentPanel/Controller/TIoTPanelVC.m index d229de58..6fa62a08 100644 --- a/Source/LinkApp/Classes/Module/EquipmentPanel/Controller/TIoTPanelVC.m +++ b/Source/LinkApp/Classes/Module/EquipmentPanel/Controller/TIoTPanelVC.m @@ -949,12 +949,13 @@ - (void)starP2PServer { config.appsecret = env.appSecret; //为explorer平台注册的应用信息(https://console.cloud.tencent.com/iotexplorer/v2/instance/app/detai) explorer控制台- 应用开发 - 选对应的应用下的 appkey/appsecret config.userid = [[TIoTCoreXP2PBridge sharedInstance] getAppUUID]; + config.xp2pinfo = xp2pValue; + config.autoConfigFromDevice = NO; config.type = XP2P_PROTOCOL_AUTO; config.crossStunTurn = NO; int errorcode = [[TIoTCoreXP2PBridge sharedInstance] startAppWith:self.productId dev_name:self.deviceName?:@"" appconfig:config]; - [[TIoTCoreXP2PBridge sharedInstance] setXp2pInfo:self.deviceName xp2pinfo:xp2pValue]; if (errorcode == XP2P_ERR_VERSION) { UIAlertController *alertC = [UIAlertController alertControllerWithTitle:@"APP SDK 版本与设备端 SDK 版本号不匹配,版本号需前两位保持一致" message:nil preferredStyle:(UIAlertControllerStyleAlert)]; @@ -4101,7 +4102,7 @@ - (void)refushXP2Pinfo { } NSLog(@"refushXP2Pinfo_sys_xp2p_info : %@",xp2pValue); - int errorcode = [[TIoTCoreXP2PBridge sharedInstance] setXp2pInfo:self.deviceName?:@"" xp2pinfo:xp2pValue]; +// int errorcode = [[TIoTCoreXP2PBridge sharedInstance] setXp2pInfo:self.deviceName?:@"" xp2pinfo:xp2pValue]; //重新拉流/推流 // [self refreshP2PPlayerAndStartCapture]; diff --git a/Source/LinkSDKDemo/Video/LocalAreaNetwork/Controller/TIoTAreaNetworkPreviewVC.m b/Source/LinkSDKDemo/Video/LocalAreaNetwork/Controller/TIoTAreaNetworkPreviewVC.m index 973b13bc..5a153d46 100644 --- a/Source/LinkSDKDemo/Video/LocalAreaNetwork/Controller/TIoTAreaNetworkPreviewVC.m +++ b/Source/LinkSDKDemo/Video/LocalAreaNetwork/Controller/TIoTAreaNetworkPreviewVC.m @@ -893,7 +893,7 @@ - (void)responseP2PdisConnect:(NSNotification *)notify { dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ TIoTCoreAppEnvironment *env = [TIoTCoreAppEnvironment shareEnvironment]; //TODO 重新拉取 p2pinfo 后,setxp2pinfo - [[TIoTCoreXP2PBridge sharedInstance] setXp2pInfo:DeviceName?:@"" xp2pinfo:@"请重新拉取xp2pinfo,填入此处"]; +// [[TIoTCoreXP2PBridge sharedInstance] setXp2pInfo:DeviceName?:@"" xp2pinfo:@"请重新拉取xp2pinfo,填入此处"]; [self setVieoPlayerStartPlayWith:self.qualityString]; }); diff --git a/Source/LinkSDKDemo/Video/NVRList/Controller/TIoTDemoNVRSubDeviceVC.m b/Source/LinkSDKDemo/Video/NVRList/Controller/TIoTDemoNVRSubDeviceVC.m index 2b3184d2..665687d7 100644 --- a/Source/LinkSDKDemo/Video/NVRList/Controller/TIoTDemoNVRSubDeviceVC.m +++ b/Source/LinkSDKDemo/Video/NVRList/Controller/TIoTDemoNVRSubDeviceVC.m @@ -191,12 +191,13 @@ - (void)resconnectXp2pWithDevicename:(NSString *)deviceName xp2pInfo:(NSString * config.appsecret = env.appSecret; //为explorer平台注册的应用信息(https://console.cloud.tencent.com/iotexplorer/v2/instance/app/detai) explorer控制台- 应用开发 - 选对应的应用下的 appkey/appsecret config.userid = [[TIoTCoreXP2PBridge sharedInstance] getAppUUID]; + config.xp2pinfo = xp2pInfoString; + config.autoConfigFromDevice = NO; config.type = XP2P_PROTOCOL_AUTO; config.crossStunTurn = NO; int errorcode = [[TIoTCoreXP2PBridge sharedInstance] startAppWith:env.cloudProductId dev_name:deviceName?:@"" appconfig:config]; - [[TIoTCoreXP2PBridge sharedInstance] setXp2pInfo:deviceName?:@"" xp2pinfo:xp2pInfoString?:@""]; } - (void)setupUIViews { diff --git a/Source/LinkSDKDemo/Video/P2P/Controller/PreviousPath/TIoTPlayListVC.m b/Source/LinkSDKDemo/Video/P2P/Controller/PreviousPath/TIoTPlayListVC.m index fe6d5270..5e508f68 100644 --- a/Source/LinkSDKDemo/Video/P2P/Controller/PreviousPath/TIoTPlayListVC.m +++ b/Source/LinkSDKDemo/Video/P2P/Controller/PreviousPath/TIoTPlayListVC.m @@ -109,12 +109,13 @@ - (void)requestXp2pInfoWithDeviceName:(NSString *)deviceName xp2pInfo:(NSString config.appsecret = env.appSecret; //为explorer平台注册的应用信息(https://console.cloud.tencent.com/iotexplorer/v2/instance/app/detai) explorer控制台- 应用开发 - 选对应的应用下的 appkey/appsecret config.userid = [[TIoTCoreXP2PBridge sharedInstance] getAppUUID]; + config.xp2pinfo = xp2pInfo; + config.autoConfigFromDevice = NO; config.type = XP2P_PROTOCOL_AUTO; config.crossStunTurn = NO; int errorcode = [[TIoTCoreXP2PBridge sharedInstance] startAppWith:env.cloudProductId dev_name:deviceName?:@"" appconfig:config]; - [[TIoTCoreXP2PBridge sharedInstance] setXp2pInfo:deviceName?:@"" xp2pinfo:xp2pInfo?:@""]; } /// video 设备列表 - (void)requestVideoList { diff --git a/Source/LinkSDKDemo/Video/P2P/Controller/PreviousPath/TIoTPlayMovieVC.m b/Source/LinkSDKDemo/Video/P2P/Controller/PreviousPath/TIoTPlayMovieVC.m index 746bcb2f..9dcfd6c7 100644 --- a/Source/LinkSDKDemo/Video/P2P/Controller/PreviousPath/TIoTPlayMovieVC.m +++ b/Source/LinkSDKDemo/Video/P2P/Controller/PreviousPath/TIoTPlayMovieVC.m @@ -215,12 +215,13 @@ - (void)resconnectXp2pWithDevicename:(NSString *)deviceName xp2pInfo:(NSString * config.appsecret = env.appSecret; //为explorer平台注册的应用信息(https://console.cloud.tencent.com/iotexplorer/v2/instance/app/detai) explorer控制台- 应用开发 - 选对应的应用下的 appkey/appsecret config.userid = [[TIoTCoreXP2PBridge sharedInstance] getAppUUID]; + config.xp2pinfo = xp2pInfoString; + config.autoConfigFromDevice = NO; config.type = XP2P_PROTOCOL_AUTO; config.crossStunTurn = NO; int errorcode = [[TIoTCoreXP2PBridge sharedInstance] startAppWith:env.cloudProductId dev_name:deviceName?:@"" appconfig:config]; - [[TIoTCoreXP2PBridge sharedInstance] setXp2pInfo:deviceName?:@"" xp2pinfo:xp2pInfoString?:@""]; } - (void)viewDidDisappear:(BOOL)animated { diff --git a/Source/LinkSDKDemo/Video/P2P/Controller/TIoTDemoPreviewDeviceVC.m b/Source/LinkSDKDemo/Video/P2P/Controller/TIoTDemoPreviewDeviceVC.m index 94f849a3..b7d9f790 100644 --- a/Source/LinkSDKDemo/Video/P2P/Controller/TIoTDemoPreviewDeviceVC.m +++ b/Source/LinkSDKDemo/Video/P2P/Controller/TIoTDemoPreviewDeviceVC.m @@ -126,25 +126,9 @@ - (void)viewDidLoad { [self setupPreViewViews]; + [self requestXp2pInfo]; TIoTCoreAppEnvironment *env = [TIoTCoreAppEnvironment shareEnvironment]; - TIoTP2PAPPConfig *config = [TIoTP2PAPPConfig new]; - config.appkey = env.appKey; //为explorer平台注册的应用信息(https://console.cloud.tencent.com/iotexplorer/v2/instance/app/detai) explorer控制台- 应用开发 - 选对应的应用下的 appkey/appsecret - config.appsecret = env.appSecret; //为explorer平台注册的应用信息(https://console.cloud.tencent.com/iotexplorer/v2/instance/app/detai) explorer控制台- 应用开发 - 选对应的应用下的 appkey/appsecret - config.userid = [[TIoTCoreXP2PBridge sharedInstance] getAppUUID]; - - config.autoConfigFromDevice = YES; - config.type = XP2P_PROTOCOL_AUTO; - config.crossStunTurn = NO; - - int errorcode = [[TIoTCoreXP2PBridge sharedInstance] startAppWith:env.cloudProductId dev_name:self.deviceName?:@"" appconfig:config]; - if (errorcode == XP2P_ERR_VERSION) { - UIAlertController *alertC = [UIAlertController alertControllerWithTitle:@"APP SDK 版本与设备端 SDK 版本号不匹配,版本号需前两位保持一致" message:nil preferredStyle:(UIAlertControllerStyleAlert)]; - UIAlertAction *alertA = [UIAlertAction actionWithTitle:@"确定" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction * _Nonnull action) { - }]; - [alertC addAction:alertA]; - [self presentViewController:alertC animated:YES completion:nil]; - } UIBarButtonItem *right = [[UIBarButtonItem alloc] initWithTitle:@"播放调试面板" style:UIBarButtonItemStylePlain target:self action:@selector(showHudView)]; self.navigationItem.rightBarButtonItem = right; } @@ -155,8 +139,27 @@ - (void)requestDiffDeviceDataWithXp2pInfo:(NSString *)xp2pInfo { [self requestCloudStoreVideoList]; TIoTCoreAppEnvironment *env = [TIoTCoreAppEnvironment shareEnvironment]; - [[TIoTCoreXP2PBridge sharedInstance] setXp2pInfo:self.deviceName?:@"" xp2pinfo:xp2pInfo?:@""]; - [self setVieoPlayerStartPlayWith:self.qualityString]; + + TIoTP2PAPPConfig *config = [TIoTP2PAPPConfig new]; + config.appkey = env.appKey; //为explorer平台注册的应用信息(https://console.cloud.tencent.com/iotexplorer/v2/instance/app/detai) explorer控制台- 应用开发 - 选对应的应用下的 appkey/appsecret + config.appsecret = env.appSecret; //为explorer平台注册的应用信息(https://console.cloud.tencent.com/iotexplorer/v2/instance/app/detai) explorer控制台- 应用开发 - 选对应的应用下的 appkey/appsecret + config.userid = [[TIoTCoreXP2PBridge sharedInstance] getAppUUID]; + + + config.xp2pinfo = xp2pInfo; + + config.autoConfigFromDevice = NO; + config.type = XP2P_PROTOCOL_AUTO; + config.crossStunTurn = NO; + + int errorcode = [[TIoTCoreXP2PBridge sharedInstance] startAppWith:env.cloudProductId dev_name:self.deviceName?:@"" appconfig:config]; + if (errorcode == XP2P_ERR_VERSION) { + UIAlertController *alertC = [UIAlertController alertControllerWithTitle:@"APP SDK 版本与设备端 SDK 版本号不匹配,版本号需前两位保持一致" message:nil preferredStyle:(UIAlertControllerStyleAlert)]; + UIAlertAction *alertA = [UIAlertAction actionWithTitle:@"确定" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction * _Nonnull action) { + }]; + [alertC addAction:alertA]; + [self presentViewController:alertC animated:YES completion:nil]; + } //计算IPC打洞开始时间 self.startIpcP2P = CACurrentMediaTime(); @@ -1186,28 +1189,10 @@ - (void)refushVideo:(NSNotification *)notify { [MBProgressHUD show:[NSString stringWithFormat:@"%@ 本地服务已ready,可发起拉流或推流",selectedName] icon:@"" view:self.view]; + [self setVieoPlayerStartPlayWith:self.qualityString]; //计算IPC打洞时间 self.endIpcP2P = CACurrentMediaTime(); - //NSString *appVersion = [TIoTCoreXP2PBridge getSDKVersion]; - // appVersion.floatValue < 2.1 旧设备直接播放,不用发送信令验证设备状态和添加参数 - /* - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - NSString *urlString = [[TIoTCoreXP2PBridge sharedInstance] getUrlForHttpFlv:self.deviceName]?:@""; - - self.videoUrl = [NSString stringWithFormat:@"%@ipc.flv?action=live",urlString]; - - [self configVideo]; - [self.player prepareToPlay]; - [self.player play]; - - self.startPlayer = CACurrentMediaTime(); - }); - */ - [self requestXp2pInfo]; -// [self setVieoPlayerStartPlayWith:self.qualityString]; - -// [self getDeviceStatusWithType:action_live qualityType:self.qualityString]; } } @@ -1255,7 +1240,7 @@ - (void)resconnectXp2pRequestInfo:(NSString *)DeviceName { - (void)resconnectXp2pWithDevicename:(NSString *)deviceName xp2pInfo:(NSString *)xp2pInfo { TIoTCoreAppEnvironment *env = [TIoTCoreAppEnvironment shareEnvironment]; - [[TIoTCoreXP2PBridge sharedInstance] setXp2pInfo:deviceName?:@"" xp2pinfo:xp2pInfo?:@""]; +// [[TIoTCoreXP2PBridge sharedInstance] setXp2pInfo:deviceName?:@"" xp2pinfo:xp2pInfo?:@""]; [self getDeviceStatusWithType:action_live qualityType:self.qualityString completion:^(BOOL finished) { if (finished) { diff --git a/Source/LinkSDKDemo/Video/P2P/Controller/TIoTDemoSameScreenVC.m b/Source/LinkSDKDemo/Video/P2P/Controller/TIoTDemoSameScreenVC.m index 63e9d617..e7904362 100644 --- a/Source/LinkSDKDemo/Video/P2P/Controller/TIoTDemoSameScreenVC.m +++ b/Source/LinkSDKDemo/Video/P2P/Controller/TIoTDemoSameScreenVC.m @@ -675,12 +675,13 @@ - (void)resconnectXp2pWithDevicename:(NSString *)deviceName xp2pInfo:(NSString * config.appsecret = env.appSecret; //为explorer平台注册的应用信息(https://console.cloud.tencent.com/iotexplorer/v2/instance/app/detai) explorer控制台- 应用开发 - 选对应的应用下的 appkey/appsecret config.userid = [[TIoTCoreXP2PBridge sharedInstance] getAppUUID]; + config.xp2pinfo = xp2pInfoString; + config.autoConfigFromDevice = NO; config.type = XP2P_PROTOCOL_AUTO; config.crossStunTurn = NO; int errorcode = [[TIoTCoreXP2PBridge sharedInstance] startAppWith:env.cloudProductId dev_name:deviceName?:@"" appconfig:config]; - [[TIoTCoreXP2PBridge sharedInstance] setXp2pInfo:deviceName?:@"" xp2pinfo:xp2pInfoString?:@""]; } #pragma mark -IJKPlayer diff --git a/Source/LinkSDKDemo/Video/P2P/Controller/TIoTDemoVideoCallVC.m b/Source/LinkSDKDemo/Video/P2P/Controller/TIoTDemoVideoCallVC.m index a180835d..3de46f71 100644 --- a/Source/LinkSDKDemo/Video/P2P/Controller/TIoTDemoVideoCallVC.m +++ b/Source/LinkSDKDemo/Video/P2P/Controller/TIoTDemoVideoCallVC.m @@ -116,12 +116,13 @@ - (void)requestDiffDeviceDataWithXp2pInfo:(NSString *)xp2pInfo { config.appsecret = env.appSecret; //为explorer平台注册的应用信息(https://console.cloud.tencent.com/iotexplorer/v2/instance/app/detai) explorer控制台- 应用开发 - 选对应的应用下的 appkey/appsecret config.userid = [[TIoTCoreXP2PBridge sharedInstance] getAppUUID]; + config.xp2pinfo = xp2pInfo; + config.autoConfigFromDevice = NO; config.type = XP2P_PROTOCOL_AUTO; config.crossStunTurn = NO; int errorcode = [[TIoTCoreXP2PBridge sharedInstance] startAppWith:env.cloudProductId dev_name:self.deviceName?:@"" appconfig:config]; - [[TIoTCoreXP2PBridge sharedInstance] setXp2pInfo:self.deviceName?:@"" xp2pinfo:xp2pInfo?:@""]; if (errorcode == XP2P_ERR_VERSION) { UIAlertController *alertC = [UIAlertController alertControllerWithTitle:@"APP SDK 版本与设备端 SDK 版本号不匹配,版本号需前两位保持一致" message:nil preferredStyle:(UIAlertControllerStyleAlert)]; @@ -558,7 +559,7 @@ - (void)resconnectXp2pRequestInfo:(NSString *)DeviceName { - (void)resconnectXp2pWithDevicename:(NSString *)deviceName xp2pInfo:(NSString *)xp2pInfo { TIoTCoreAppEnvironment *env = [TIoTCoreAppEnvironment shareEnvironment]; - [[TIoTCoreXP2PBridge sharedInstance] setXp2pInfo:deviceName?:@"" xp2pinfo:xp2pInfo?:@""]; +// [[TIoTCoreXP2PBridge sharedInstance] setXp2pInfo:deviceName?:@"" xp2pinfo:xp2pInfo?:@""]; [self getDeviceStatusWithType:action_live qualityType:self.qualityString completion:^(BOOL finished) { if (finished) { diff --git a/Source/LinkSDKDemo/Video/P2P/Controller/TIoTDemoVideoPushVC.m b/Source/LinkSDKDemo/Video/P2P/Controller/TIoTDemoVideoPushVC.m index cdc9a664..15a3aae2 100644 --- a/Source/LinkSDKDemo/Video/P2P/Controller/TIoTDemoVideoPushVC.m +++ b/Source/LinkSDKDemo/Video/P2P/Controller/TIoTDemoVideoPushVC.m @@ -175,12 +175,13 @@ - (void)requestDiffDeviceDataWithXp2pInfo:(NSString *)xp2pInfo { config.appsecret = env.appSecret; //为explorer平台注册的应用信息(https://console.cloud.tencent.com/iotexplorer/v2/instance/app/detai) explorer控制台- 应用开发 - 选对应的应用下的 appkey/appsecret config.userid = [[TIoTCoreXP2PBridge sharedInstance] getAppUUID]; + config.xp2pinfo = xp2pInfo; + config.autoConfigFromDevice = NO; config.type = XP2P_PROTOCOL_AUTO; config.crossStunTurn = NO; int errorcode = [[TIoTCoreXP2PBridge sharedInstance] startAppWith:env.cloudProductId dev_name:self.deviceName?:@"" appconfig:config]; - [[TIoTCoreXP2PBridge sharedInstance] setXp2pInfo:self.deviceName?:@"" xp2pinfo:xp2pInfo?:@""]; if (errorcode == XP2P_ERR_VERSION) { UIAlertController *alertC = [UIAlertController alertControllerWithTitle:@"APP SDK 版本与设备端 SDK 版本号不匹配,版本号需前两位保持一致" message:nil preferredStyle:(UIAlertControllerStyleAlert)]; @@ -525,7 +526,7 @@ - (void)resconnectXp2pRequestInfo:(NSString *)DeviceName { - (void)resconnectXp2pWithDevicename:(NSString *)deviceName xp2pInfo:(NSString *)xp2pInfo { TIoTCoreAppEnvironment *env = [TIoTCoreAppEnvironment shareEnvironment]; - [[TIoTCoreXP2PBridge sharedInstance] setXp2pInfo:deviceName?:@"" xp2pinfo:xp2pInfo?:@""]; +// [[TIoTCoreXP2PBridge sharedInstance] setXp2pInfo:deviceName?:@"" xp2pinfo:xp2pInfo?:@""]; [self getDeviceStatusWithType:action_live qualityType:self.qualityString completion:^(BOOL finished) { if (finished) { diff --git a/Source/LinkSDKDemo/Video/P2P/Mjpeg/TIoTDemoPreviewMJPEGVC.m b/Source/LinkSDKDemo/Video/P2P/Mjpeg/TIoTDemoPreviewMJPEGVC.m index 98a345ce..e7d9ac4d 100644 --- a/Source/LinkSDKDemo/Video/P2P/Mjpeg/TIoTDemoPreviewMJPEGVC.m +++ b/Source/LinkSDKDemo/Video/P2P/Mjpeg/TIoTDemoPreviewMJPEGVC.m @@ -149,12 +149,13 @@ - (void)requestDiffDeviceDataWithXp2pInfo:(NSString *)xp2pInfo { config.appsecret = env.appSecret; //为explorer平台注册的应用信息(https://console.cloud.tencent.com/iotexplorer/v2/instance/app/detai) explorer控制台- 应用开发 - 选对应的应用下的 appkey/appsecret config.userid = [[TIoTCoreXP2PBridge sharedInstance] getAppUUID]; + config.xp2pinfo = xp2pInfo; + config.autoConfigFromDevice = NO; config.type = XP2P_PROTOCOL_AUTO; config.crossStunTurn = NO; int errorcode = [[TIoTCoreXP2PBridge sharedInstance] startAppWith:env.cloudProductId dev_name:self.deviceName?:@"" appconfig:config]; - [[TIoTCoreXP2PBridge sharedInstance] setXp2pInfo:self.deviceName?:@"" xp2pinfo:xp2pInfo?:@""]; if (errorcode == XP2P_ERR_VERSION) { UIAlertController *alertC = [UIAlertController alertControllerWithTitle:@"APP SDK 版本与设备端 SDK 版本号不匹配,版本号需前两位保持一致" message:nil preferredStyle:(UIAlertControllerStyleAlert)]; @@ -1235,7 +1236,7 @@ - (void)resconnectXp2pRequestInfo:(NSString *)DeviceName { - (void)resconnectXp2pWithDevicename:(NSString *)deviceName xp2pInfo:(NSString *)xp2pInfo { TIoTCoreAppEnvironment *env = [TIoTCoreAppEnvironment shareEnvironment]; - [[TIoTCoreXP2PBridge sharedInstance] setXp2pInfo:deviceName?:@"" xp2pinfo:xp2pInfo?:@""]; +// [[TIoTCoreXP2PBridge sharedInstance] setXp2pInfo:deviceName?:@"" xp2pinfo:xp2pInfo?:@""]; [self getDeviceStatusWithType:action_live qualityType:self.qualityString completion:^(BOOL finished) { if (finished) { diff --git a/Source/LinkSDKDemo/Video/PlayBack/LocalPlayBack/Controller/TIoTDemoLocalRecordVC.m b/Source/LinkSDKDemo/Video/PlayBack/LocalPlayBack/Controller/TIoTDemoLocalRecordVC.m index 667d3d67..5cebcb91 100644 --- a/Source/LinkSDKDemo/Video/PlayBack/LocalPlayBack/Controller/TIoTDemoLocalRecordVC.m +++ b/Source/LinkSDKDemo/Video/PlayBack/LocalPlayBack/Controller/TIoTDemoLocalRecordVC.m @@ -1627,12 +1627,13 @@ - (void)resconnectXp2pWithDevicename:(NSString *)deviceName xp2pInfo:(NSString * config.appsecret = env.appSecret; //为explorer平台注册的应用信息(https://console.cloud.tencent.com/iotexplorer/v2/instance/app/detai) explorer控制台- 应用开发 - 选对应的应用下的 appkey/appsecret config.userid = [[TIoTCoreXP2PBridge sharedInstance] getAppUUID]; + config.xp2pinfo = xp2pInfoString; + config.autoConfigFromDevice = NO; config.type = XP2P_PROTOCOL_AUTO; config.crossStunTurn = NO; int errorcode = [[TIoTCoreXP2PBridge sharedInstance] startAppWith:env.cloudProductId dev_name:deviceName?:@"" appconfig:config]; - [[TIoTCoreXP2PBridge sharedInstance] setXp2pInfo:deviceName?:@"" xp2pinfo:xp2pInfoString?:@""]; } #pragma mark Remove Movie Notification Handlers diff --git a/Source/LinkSDKDemo/Video/PlayBack/TIoTDemoPlaybackVC.m b/Source/LinkSDKDemo/Video/PlayBack/TIoTDemoPlaybackVC.m index fb43c9f2..775f2279 100644 --- a/Source/LinkSDKDemo/Video/PlayBack/TIoTDemoPlaybackVC.m +++ b/Source/LinkSDKDemo/Video/PlayBack/TIoTDemoPlaybackVC.m @@ -98,12 +98,13 @@ - (void)requestDiffDeviceDataWithXp2pInfo:(NSString *)xp2pInfo { config.appsecret = env.appSecret; //为explorer平台注册的应用信息(https://console.cloud.tencent.com/iotexplorer/v2/instance/app/detai) explorer控制台- 应用开发 - 选对应的应用下的 appkey/appsecret config.userid = [[TIoTCoreXP2PBridge sharedInstance] getAppUUID]; + config.xp2pinfo = xp2pInfo; + config.autoConfigFromDevice = NO; config.type = XP2P_PROTOCOL_AUTO; config.crossStunTurn = NO; int errorcode = [[TIoTCoreXP2PBridge sharedInstance] startAppWith:env.cloudProductId dev_name:self.deviceName?:@"" appconfig:config]; - [[TIoTCoreXP2PBridge sharedInstance] setXp2pInfo:self.deviceName?:@"" xp2pinfo:xp2pInfo?:@""]; if (errorcode == XP2P_ERR_VERSION) { UIAlertController *alertC = [UIAlertController alertControllerWithTitle:@"APP SDK 版本与设备端 SDK 版本号不匹配,版本号需前两位保持一致" message:nil preferredStyle:(UIAlertControllerStyleAlert)]; @@ -300,12 +301,13 @@ - (void)resconnectXp2pWithDevicename:(NSString *)deviceName xp2pInfo:(NSString * config.appsecret = env.appSecret; //为explorer平台注册的应用信息(https://console.cloud.tencent.com/iotexplorer/v2/instance/app/detai) explorer控制台- 应用开发 - 选对应的应用下的 appkey/appsecret config.userid = [[TIoTCoreXP2PBridge sharedInstance] getAppUUID]; + config.xp2pinfo = xp2pInfoString; + config.autoConfigFromDevice = NO; config.type = XP2P_PROTOCOL_AUTO; config.crossStunTurn = NO; int errorcode = [[TIoTCoreXP2PBridge sharedInstance] startAppWith:env.cloudProductId dev_name:deviceName?:@"" appconfig:config]; - [[TIoTCoreXP2PBridge sharedInstance] setXp2pInfo:deviceName?:@"" xp2pinfo:xp2pInfoString?:@""]; } - (UIViewController *)getCurrentViewController diff --git a/Source/SDK/LinkVideo/TIoTCoreXP2PBridge.h b/Source/SDK/LinkVideo/TIoTCoreXP2PBridge.h index 7124843a..e0047c8b 100644 --- a/Source/SDK/LinkVideo/TIoTCoreXP2PBridge.h +++ b/Source/SDK/LinkVideo/TIoTCoreXP2PBridge.h @@ -23,6 +23,8 @@ extern NSNotificationName const TIoTCoreXP2PBridgeNotificationStreamEnd; @property (nonatomic, strong)NSString *appsecret; //为explorer平台注册的应用信息(https://console.cloud.tencent.com/iotexplorer/v2/instance/app/detai) @property (nonatomic, strong)NSString *userid; //用户纬度(每个手机区分开)使用用户自有的账号系统userid;若无请配置为[TIoTCoreXP2PBridge sharedInstance].getAppUUID; 查找日志是需提供此userid字段 +@property (nonatomic, strong)NSString *xp2pinfo; //被连接设备的p2p_info + @property (nonatomic, assign)BOOL autoConfigFromDevice; //是否跟随对应设备配置,YES 后下面的配置(cross、type等)不生效 @property (nonatomic, assign)BOOL crossStunTurn; //是否打开双中转开关,默认false @property (nonatomic, assign)XP2PProtocolType type; //通信协议,默认auto @@ -81,13 +83,10 @@ extern NSNotificationName const TIoTCoreXP2PBridgeNotificationStreamEnd; /* * 启动 sdk 服务,productid和devicename可以从video控制台创建得倒 * type: 默认auto模式,udp探测不通自动切换至tcp + * ready 回调之后,即可开始(拉流、发信令、对讲等) */ - (XP2PErrCode)startAppWith:(NSString *)pro_id dev_name:(NSString *)dev_name appconfig:(TIoTP2PAPPConfig *)appconfig; -/* - * 设置设备 xp2pinfo ,ready 回调之后,即可开始(拉流、发信令、对讲等) - */ -- (XP2PErrCode)setXp2pInfo:(NSString *)dev_name xp2pinfo:(NSString *)xp2pinfo; /* * 使用播放器播放时,需先等待 SDK 初始化完成,ready事件(xp2preconnect 通知)之后,即可获取到 http-url diff --git a/Source/SDK/LinkVideo/TIoTCoreXP2PBridge.mm b/Source/SDK/LinkVideo/TIoTCoreXP2PBridge.mm index 26c66909..0a6920ae 100644 --- a/Source/SDK/LinkVideo/TIoTCoreXP2PBridge.mm +++ b/Source/SDK/LinkVideo/TIoTCoreXP2PBridge.mm @@ -246,6 +246,10 @@ - (XP2PErrCode)startAppWith:(NSString *)pro_id dev_name:(NSString *)dev_name app NSLog(@"请输入正确的appconfig"); return XP2P_ERR_INIT_PRM; } + if (appconfig.xp2pinfo.length < 1) { + NSLog(@"请输入正确的xp2pInfo"); + return XP2P_ERR_INIT_PRM; + } [self appGetUserConfig:appconfig]; //get config NSString *bundleid = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleIdentifier"]?:@""; @@ -294,42 +298,12 @@ - (XP2PErrCode)startAppWith:(NSString *)pro_id dev_name:(NSString *)dev_name app setCrossStunTurn(true); } ret = startService(dev_name.UTF8String, pro_id.UTF8String, dev_name.UTF8String, config_); + setDeviceXp2pInfo(dev_name.UTF8String, appconfig.xp2pinfo.UTF8String); } return (XP2PErrCode)ret; } -/* -- (XP2PErrCode)setXp2pInfo:(NSString *)dev_name sec_id:(NSString *)sec_id sec_key:(NSString *)sec_key xp2pinfo:(NSString *)xp2pinfo { - - if (xp2pinfo == nil || [xp2pinfo isEqualToString:@""]) { - if ((sec_id == nil || [sec_id isEqualToString:@""]) || (sec_key == nil || [sec_key isEqualToString:@""])) { - NSLog(@"请输入正确的scretId和secretKey,或者xp2pInfo"); - return XP2P_ERR_INIT_PRM; - } - setQcloudApiCred([sec_id UTF8String], [sec_key UTF8String]); //正式版app发布时候不需要传入secretid和secretkey,避免泄露secretid和secretkey,此处仅为演示 - NSLog(@"⚠️⚠️⚠️ 请使用下面接口,本接口即将作废。 setXp2pInfo:(NSString *)dev_name xp2pinfo:(NSString *)xp2pinfo appconfig:(TIoTP2PAPPConfig *)appconfig"); - } - - TIoTP2PAPPConfig *config = [TIoTP2PAPPConfig new]; - config.appkey = @"appkey"; //为explorer平台注册的应用信息(https://console.cloud.tencent.com/iotexplorer/v2/instance/app/detai) explorer控制台- 应用开发 - 选对应的应用下的 appkey/appsecret - config.appsecret = @"appsecret"; //为explorer平台注册的应用信息(https://console.cloud.tencent.com/iotexplorer/v2/instance/app/detai) explorer控制台- 应用开发 - 选对应的应用下的 appkey/appsecret - config.userid = [self getAppUUID]; - [self setXp2pInfo:dev_name xp2pinfo:xp2pinfo appconfig:config]; - return XP2P_ERR_INIT_PRM; -} -*/ - -- (XP2PErrCode)setXp2pInfo:(NSString *)dev_name xp2pinfo:(NSString *)xp2pinfo { - if (xp2pinfo == nil || xp2pinfo.length < 1) { - NSLog(@"请输入正确的xp2pInfo"); - return XP2P_ERR_INIT_PRM; - } - - int ret = setDeviceXp2pInfo(dev_name.UTF8String, xp2pinfo.UTF8String); - return (XP2PErrCode)ret; -} - NSString *createSortedQueryString(NSMutableDictionary *params) { NSArray *sortedKeys = [[params allKeys] sortedArrayUsingSelector:@selector(compare:)]; NSMutableArray *keyValuePairs = [NSMutableArray array]; @@ -458,6 +432,7 @@ - (void)appGeDeviceConfig:(TIoTP2PAPPConfig *)appconfig { setCrossStunTurn(true); } startService(self.dev_name.UTF8String, self.pro_id.UTF8String, self.dev_name.UTF8String, config_); + setDeviceXp2pInfo(self.dev_name.UTF8String, appconfig.xp2pinfo.UTF8String); }]; [tasklog resume]; } diff --git a/TIoTLinkVideo.podspec b/TIoTLinkVideo.podspec index e02295e0..e0f20b43 100644 --- a/TIoTLinkVideo.podspec +++ b/TIoTLinkVideo.podspec @@ -19,7 +19,7 @@ Pod::Spec.new do |s| s.source_files = 'Source/SDK/LinkVideo/**/*.{h,m,c,mm}' s.resource = 'Source/SDK/LinkVideo/FLV/asset/GvoiceSE_v1_239-119-oneref-e.nn' - s.dependency 'TIoTLinkKit_XP2P', '2.4.53-beta.202501160957' + s.dependency 'TIoTLinkKit_XP2P', '2.4.53' s.dependency 'TIoTLinkKit_FLV', '2.2.3' s.dependency 'CocoaAsyncSocket', '7.6.5' s.dependency 'TIoTLinkKit_SoundTouch', '1.0.0'