openlockPPP 12 小时之前
父节点
当前提交
3344ffbf55
共有 100 个文件被更改,包括 6390 次插入6012 次删除
  1. 1 1
      Podfile
  2. 78 80
      Podfile.lock
  3. 5 5
      Pods/ADSuyiKit/ADSuyiKit/Classes/ADSuyiKit.xcframework/Info.plist
  4. 5 5
      Pods/ADSuyiSDK/ADSuyiSDK/Classes/core/ADSuyiSDK.xcframework/Info.plist
  5. 5 5
      Pods/Ads-CN/SDK/BUAdSDK.xcframework/Info.plist
  6. 二进制
      Pods/Ads-CN/SDK/CSJAdSDK.bundle/Info.plist
  7. 0 0
      Pods/Ads-CN/SDK/CSJAdSDK.bundle/bu_dynamic_default.json
  8. 1 1
      Pods/Ads-CN/SDK/CSJAdSDK.bundle/version.txt
  9. 二进制
      Pods/BMKLocationKit/BMKLocationKit/BMKLocationKit.framework/BMKLocationKit
  10. 2 2
      Pods/BMKLocationKit/BMKLocationKit/BMKLocationKit.framework/Headers/BMKLocationKitVersion.h
  11. 9 1
      Pods/GKPhotoBrowser/README.md
  12. 二进制
      Pods/GTCommonSDK/GTCommonSDK.xcframework/ios-arm64_x86_64-maccatalyst/GTCommonSDK.framework/GTCommonSDK
  13. 1 1
      Pods/GTCommonSDK/GTCommonSDK.xcframework/ios-arm64_x86_64-maccatalyst/GTCommonSDK.framework/Headers/GTCommonSDK.h
  14. 7 7
      Pods/GTSDK/GTSDK.xcframework/Info.plist
  15. 二进制
      Pods/GTSDK/GTSDK.xcframework/ios-arm64_x86_64-maccatalyst/GTSDK.framework/GTSDK
  16. 6 1
      Pods/GTSDK/GTSDK.xcframework/ios-arm64_x86_64-maccatalyst/GTSDK.framework/Headers/GeTuiSdk.h
  17. 3 0
      Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_armv7/KSAdSDK.framework/Headers/KSAdDeviceInfoEnum.h
  18. 18 1
      Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_armv7/KSAdSDK.framework/Headers/KSAdExposureReportParam.h
  19. 2 0
      Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_armv7/KSAdSDK.framework/Headers/KSAdNativeAdExtraDataModel.h
  20. 2 0
      Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_armv7/KSAdSDK.framework/Headers/KSAdNativeStyleControl.h
  21. 2 0
      Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_armv7/KSAdSDK.framework/Headers/KSMaterialMeta.h
  22. 0 2
      Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_armv7/KSAdSDK.framework/Headers/KSNativeAd.h
  23. 6 0
      Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_armv7/KSAdSDK.framework/Headers/KSNativeAdRelatedView.h
  24. 7 0
      Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_armv7/KSAdSDK.framework/Headers/KSSplashAdView.h
  25. 7 0
      Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_armv7/KSAdSDK.framework/Headers/KSVideoAdView.h
  26. 二进制
      Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_armv7/KSAdSDK.framework/Info.plist
  27. 二进制
      Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_armv7/KSAdSDK.framework/KSAdSDK
  28. 二进制
      Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_armv7/KSAdSDK.framework/KSUAdDebugToolResource.bundle/Info.plist
  29. 3 0
      Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_x86_64-simulator/KSAdSDK.framework/Headers/KSAdDeviceInfoEnum.h
  30. 18 1
      Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_x86_64-simulator/KSAdSDK.framework/Headers/KSAdExposureReportParam.h
  31. 2 0
      Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_x86_64-simulator/KSAdSDK.framework/Headers/KSAdNativeAdExtraDataModel.h
  32. 2 0
      Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_x86_64-simulator/KSAdSDK.framework/Headers/KSAdNativeStyleControl.h
  33. 2 0
      Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_x86_64-simulator/KSAdSDK.framework/Headers/KSMaterialMeta.h
  34. 0 2
      Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_x86_64-simulator/KSAdSDK.framework/Headers/KSNativeAd.h
  35. 6 0
      Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_x86_64-simulator/KSAdSDK.framework/Headers/KSNativeAdRelatedView.h
  36. 7 0
      Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_x86_64-simulator/KSAdSDK.framework/Headers/KSSplashAdView.h
  37. 7 0
      Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_x86_64-simulator/KSAdSDK.framework/Headers/KSVideoAdView.h
  38. 二进制
      Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_x86_64-simulator/KSAdSDK.framework/Info.plist
  39. 二进制
      Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_x86_64-simulator/KSAdSDK.framework/KSAdSDK
  40. 二进制
      Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_x86_64-simulator/KSAdSDK.framework/KSUAdDebugToolResource.bundle/Info.plist
  41. 1 1
      Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_x86_64-simulator/KSAdSDK.framework/_CodeSignature/CodeResources
  42. 2 0
      Pods/KTVHTTPCache/KTVHTTPCache/Classes/KTVHCCommon/KTVHCLog.h
  43. 1 0
      Pods/KTVHTTPCache/KTVHTTPCache/Classes/KTVHCCommon/KTVHCRange.h
  44. 5 0
      Pods/KTVHTTPCache/KTVHTTPCache/Classes/KTVHCCommon/KTVHCRange.m
  45. 7 0
      Pods/KTVHTTPCache/KTVHTTPCache/Classes/KTVHCDataStorage/KTVHCData+Internal.h
  46. 2 2
      Pods/KTVHTTPCache/KTVHTTPCache/Classes/KTVHCDataStorage/KTVHCDataNetworkSource.m
  47. 0 2
      Pods/KTVHTTPCache/KTVHTTPCache/Classes/KTVHCDataStorage/KTVHCDataResponse.h
  48. 17 2
      Pods/KTVHTTPCache/KTVHTTPCache/Classes/KTVHCDataStorage/KTVHCDataResponse.m
  49. 6 0
      Pods/KTVHTTPCache/KTVHTTPCache/Classes/KTVHCDataStorage/KTVHCDataStorage.h
  50. 10 0
      Pods/KTVHTTPCache/KTVHTTPCache/Classes/KTVHCDataStorage/KTVHCDataStorage.m
  51. 6 7
      Pods/KTVHTTPCache/KTVHTTPCache/Classes/KTVHCHTTPServer/KTVHCHTTPConnection.m
  52. 1 1
      Pods/KTVHTTPCache/KTVHTTPCache/Classes/KTVHCHTTPServer/KTVHCHTTPResponse.m
  53. 2 0
      Pods/KTVHTTPCache/KTVHTTPCache/Classes/KTVHCHTTPServer/KTVHCHTTPServer.h
  54. 26 0
      Pods/KTVHTTPCache/KTVHTTPCache/Classes/KTVHCHTTPServer/KTVHCHTTPServer.m
  55. 59 0
      Pods/KTVHTTPCache/KTVHTTPCache/KTVHTTPCache.h
  56. 24 1
      Pods/KTVHTTPCache/KTVHTTPCache/KTVHTTPCache.m
  57. 8 0
      Pods/KTVHTTPCache/README.md
  58. 78 80
      Pods/Manifest.lock
  59. 5715 5725
      Pods/Pods.xcodeproj/project.pbxproj
  60. 2 3
      Pods/QMBaseLib/QMBaseLib.framework/Headers/QMNetworkManager.h
  61. 二进制
      Pods/QMBaseLib/QMBaseLib.framework/Info.plist
  62. 1 1
      Pods/QMBaseLib/QMBaseLib.framework/Modules/module.modulemap
  63. 二进制
      Pods/QMBaseLib/QMBaseLib.framework/QMBaseLib
  64. 1 1
      Pods/QMBaseLib/README.md
  65. 1 1
      Pods/SDWebImage/SDWebImage/Core/SDAnimatedImage.h
  66. 2 2
      Pods/SDWebImage/SDWebImage/Core/SDAnimatedImage.m
  67. 1 0
      Pods/SDWebImage/SDWebImage/Core/SDImageCoder.h
  68. 1 1
      Pods/SDWebImage/SDWebImage/Core/SDImageLoader.h
  69. 1 0
      Pods/SDWebImage/SDWebImage/Core/SDWebImageDefine.h
  70. 2 2
      Pods/SDWebImage/SDWebImage/Core/SDWebImageManager.h
  71. 2 0
      Pods/SDWebImage/SDWebImage/Core/UIImage+Transform.m
  72. 17 4
      Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZAssetCell.m
  73. 14 6
      Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZGifPhotoPreviewController.m
  74. 1 1
      Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImageManager.m
  75. 2 1
      Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.h
  76. 15 1
      Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.m
  77. 28 8
      Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPickerController.m
  78. 5 1
      Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPreviewCell.m
  79. 33 11
      Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPreviewController.m
  80. 19 5
      Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZVideoCropController.m
  81. 8 1
      Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZVideoEditedPreviewController.m
  82. 12 3
      Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZVideoPlayerController.m
  83. 1 3
      Pods/Target Support Files/ADSuyiSDK/ADSuyiSDK.debug.xcconfig
  84. 1 3
      Pods/Target Support Files/ADSuyiSDK/ADSuyiSDK.release.xcconfig
  85. 3 1
      Pods/Target Support Files/GDTMobSDK/GDTMobSDK.debug.xcconfig
  86. 3 1
      Pods/Target Support Files/GDTMobSDK/GDTMobSDK.release.xcconfig
  87. 4 0
      Pods/Target Support Files/Pods-jiaPei/Pods-jiaPei-frameworks.sh
  88. 2 0
      Pods/Target Support Files/Pods-jiaPei/Pods-jiaPei.debug.xcconfig
  89. 2 0
      Pods/Target Support Files/Pods-jiaPei/Pods-jiaPei.release.xcconfig
  90. 5 5
      Pods/TianmuSDK/TianmuSDK/Classes/TianmuSDK.xcframework/Info.plist
  91. 8 4
      jiaPei.xcodeproj/project.pbxproj
  92. 二进制
      jiaPei.xcworkspace/xcuserdata/mimasigeling.xcuserdatad/UserInterfaceState.xcuserstate
  93. 0 2
      jiaPei/Images.xcassets/Modules/CommonModule/adPlaceHolder.imageset/Contents.json
  94. 二进制
      jiaPei/Images.xcassets/Modules/CommonModule/adPlaceHolder.imageset/adPlaceHolder.png
  95. 二进制
      jiaPei/Images.xcassets/Modules/CommonModule/adPlaceHolder.imageset/adPlaceHolder@2x.png
  96. 二进制
      jiaPei/Images.xcassets/Modules/CommonModule/adPlaceHolder.imageset/adPlaceHolder@3x.png
  97. 2 0
      jiaPei/Macros/RQConstant.h
  98. 2 0
      jiaPei/Macros/RQConstant.m
  99. 2 2
      jiaPei/Macros/RQMacros.h
  100. 3 2
      jiaPei/Modules/HomePageModule/View/HomePage/NYHomePageOneBigCell.m

+ 1 - 1
Podfile

@@ -46,7 +46,7 @@ target  'jiaPei'  do
 
     
     # AD
-    pod 'ADSuyiSDK','~> 3.9.9.12031' # 主SDK 必选
+    pod 'ADSuyiSDK','~> 4.0.1.06132' # 主SDK 必选
     pod 'ADSuyiSDK/ADSuyiSDKPlatforms/bu' # 穿山甲(头条)
     pod 'ADSuyiSDK/ADSuyiSDKPlatforms/gdt' # 优量汇(广点通)
     pod 'ADSuyiSDK/ADSuyiSDKPlatforms/ks' # 快手(非内容版本,内容与非内容版本不可同时导入)

+ 78 - 80
Podfile.lock

@@ -1,42 +1,40 @@
 PODS:
-  - Ads-CN (6.5.0.9):
-    - Ads-CN/BUAdSDK (= 6.5.0.9)
-  - Ads-CN/BUAdSDK (6.5.0.9)
-  - ADSuyiKit (0.7.4.12031)
+  - Ads-CN/BUAdSDK (6.9.1.2)
+  - ADSuyiKit (0.7.6.02251)
   - ADSuyiLocationManager (0.2.1.01301)
   - ADSuyiNetwork (0.2.1.06291):
     - ADSuyiKit (~> 0.7.0)
-  - ADSuyiSDK (3.9.9.12031):
-    - ADSuyiKit (~> 0.7.4.12031)
+  - ADSuyiSDK (4.0.1.06132):
+    - ADSuyiKit (~> 0.7.6.02251)
     - ADSuyiLocationManager (~> 0.2.1.01301)
     - ADSuyiNetwork (~> 0.2.1.0)
-    - ADSuyiSDK/core (= 3.9.9.12031)
-  - ADSuyiSDK/ADSuyiSDKPlatforms/bu (3.9.9.12031):
-    - Ads-CN (= 6.5.0.9)
-    - ADSuyiKit (~> 0.7.4.12031)
+    - ADSuyiSDK/core (= 4.0.1.06132)
+  - ADSuyiSDK/ADSuyiSDKPlatforms/bu (4.0.1.06132):
+    - Ads-CN/BUAdSDK (= 6.9.1.2)
+    - ADSuyiKit (~> 0.7.6.02251)
     - ADSuyiLocationManager (~> 0.2.1.01301)
     - ADSuyiNetwork (~> 0.2.1.0)
     - ADSuyiSDK/core
-  - ADSuyiSDK/ADSuyiSDKPlatforms/gdt (3.9.9.12031):
-    - ADSuyiKit (~> 0.7.4.12031)
+  - ADSuyiSDK/ADSuyiSDKPlatforms/gdt (4.0.1.06132):
+    - ADSuyiKit (~> 0.7.6.02251)
     - ADSuyiLocationManager (~> 0.2.1.01301)
     - ADSuyiNetwork (~> 0.2.1.0)
     - ADSuyiSDK/core
-    - GDTMobSDK (= 4.15.10)
-  - ADSuyiSDK/ADSuyiSDKPlatforms/ks (3.9.9.12031):
-    - ADSuyiKit (~> 0.7.4.12031)
+    - GDTMobSDK (= 4.15.41)
+  - ADSuyiSDK/ADSuyiSDKPlatforms/ks (4.0.1.06132):
+    - ADSuyiKit (~> 0.7.6.02251)
     - ADSuyiLocationManager (~> 0.2.1.01301)
     - ADSuyiNetwork (~> 0.2.1.0)
     - ADSuyiSDK/core
-    - KSAdSDK (= 3.3.69.3)
-  - ADSuyiSDK/ADSuyiSDKPlatforms/tianmu (3.9.9.12031):
-    - ADSuyiKit (~> 0.7.4.12031)
+    - KSAdSDK (= 4.6.30.1)
+  - ADSuyiSDK/ADSuyiSDKPlatforms/tianmu (4.0.1.06132):
+    - ADSuyiKit (~> 0.7.6.02251)
     - ADSuyiLocationManager (~> 0.2.1.01301)
     - ADSuyiNetwork (~> 0.2.1.0)
     - ADSuyiSDK/core
-    - TianmuSDK (= 2.2.9.1)
-  - ADSuyiSDK/core (3.9.9.12031):
-    - ADSuyiKit (~> 0.7.4.12031)
+    - TianmuSDK (= 3.0.1.1)
+  - ADSuyiSDK/core (4.0.1.06132):
+    - ADSuyiKit (~> 0.7.6.02251)
     - ADSuyiLocationManager (~> 0.2.1.01301)
     - ADSuyiNetwork (~> 0.2.1.0)
   - AFNetworking (4.0.1):
@@ -66,7 +64,7 @@ PODS:
     - BaiduMapKit/Base
   - BaiduMapKit/Utils (6.6.4):
     - BaiduMapKit/Base
-  - BMKLocationKit (2.1.2)
+  - BMKLocationKit (2.1.3)
   - Bugly (2.6.1)
   - CGXVerticalMenuView-OC (1.2.2):
     - CGXVerticalMenuView-OC/CustomCollectionView (= 1.2.2)
@@ -97,17 +95,17 @@ PODS:
     - CGXVerticalMenuView-OC/MenuCustom
   - CocoaAsyncSocket (7.6.5)
   - CocoaSecurity (1.2.4)
-  - CXHAdSDK-Adapter (1.7.1):
-    - CXHAdSDK-Kit (= 1.7.0)
-  - CXHAdSDK-Kit (1.7.0)
-  - CXHAdSDK/Channel (1.7.1):
-    - CXHAdSDK-Adapter (= 1.7.1)
+  - CXHAdSDK-Adapter (1.8.9.1):
+    - CXHAdSDK-Kit (= 1.8.6)
+  - CXHAdSDK-Kit (1.8.6)
+  - CXHAdSDK/Channel (1.8.9.1):
+    - CXHAdSDK-Adapter (= 1.8.9.1)
     - CXHAdSDK/Core
     - WechatOpenSDK (= 2.0.4)
-  - CXHAdSDK/Core (1.7.1):
-    - CXHAdSDK-Adapter (= 1.7.1)
-  - CXHAdSDK/RC (1.7.1):
-    - CXHAdSDK-Adapter (= 1.7.1)
+  - CXHAdSDK/Core (1.8.9.1):
+    - CXHAdSDK-Adapter (= 1.8.9.1)
+  - CXHAdSDK/RC (1.8.9.1):
+    - CXHAdSDK-Adapter (= 1.8.9.1)
     - CXHAdSDK/Core
   - DACircularProgress (2.3.1)
   - DOUAudioStreamer (0.2.16)
@@ -121,37 +119,37 @@ PODS:
   - FMDB/Core (2.7.12)
   - FMDB/standard (2.7.12):
     - FMDB/Core
-  - GDTMobSDK (4.15.10)
-  - GKLivePhotoManager (1.0.5)
-  - GKPhotoBrowser (3.2.2):
-    - GKPhotoBrowser/Default (= 3.2.2)
-  - GKPhotoBrowser/AF (3.2.2):
+  - GDTMobSDK (4.15.41)
+  - GKLivePhotoManager (1.0.7)
+  - GKPhotoBrowser (3.2.6):
+    - GKPhotoBrowser/Default (= 3.2.6)
+  - GKPhotoBrowser/AF (3.2.6):
     - AFNetworking
     - GKLivePhotoManager
     - GKPhotoBrowser/Core
-  - GKPhotoBrowser/AVPlayer (3.2.2):
+  - GKPhotoBrowser/AVPlayer (3.2.6):
     - GKPhotoBrowser/Core
-  - GKPhotoBrowser/Core (3.2.2):
+  - GKPhotoBrowser/Core (3.2.6):
     - GKPhotoBrowser/Resources
-  - GKPhotoBrowser/Cover (3.2.2):
+  - GKPhotoBrowser/Cover (3.2.6):
     - GKPhotoBrowser/Core
-  - GKPhotoBrowser/Default (3.2.2):
+  - GKPhotoBrowser/Default (3.2.6):
     - GKPhotoBrowser/AF
     - GKPhotoBrowser/AVPlayer
     - GKPhotoBrowser/Cover
     - GKPhotoBrowser/Progress
     - GKPhotoBrowser/SD
-  - GKPhotoBrowser/Progress (3.2.2):
+  - GKPhotoBrowser/Progress (3.2.6):
     - GKPhotoBrowser/Core
     - GKSliderView
-  - GKPhotoBrowser/Resources (3.2.2)
-  - GKPhotoBrowser/SD (3.2.2):
+  - GKPhotoBrowser/Resources (3.2.6)
+  - GKPhotoBrowser/SD (3.2.6):
     - GKPhotoBrowser/Core
     - SDWebImage (~> 5.0)
   - GKSliderView (1.2.3)
-  - GTCommonSDK (3.1.9.0):
+  - GTCommonSDK (3.1.10.0):
     - ZXSDK
-  - GTSDK (3.0.9.0):
+  - GTSDK (3.0.10.0):
     - GTCommonSDK (> 3.0.9.0)
   - HappyDNS (1.0.4)
   - HWPanModal (0.9.9)
@@ -164,8 +162,8 @@ PODS:
   - JSONModel (1.8.0)
   - JXCategoryView (1.6.8)
   - JXPagingView/Pager (2.1.3)
-  - KSAdSDK (3.3.69.3)
-  - KTVHTTPCache (3.0.2):
+  - KSAdSDK (4.6.30.1)
+  - KTVHTTPCache (3.1.0):
     - CocoaAsyncSocket
   - libwebp (1.5.0):
     - libwebp/demux (= 1.5.0)
@@ -193,7 +191,7 @@ PODS:
   - pop (1.0.12)
   - Qiniu (8.5.3):
     - HappyDNS (~> 1.0.2)
-  - QMBaseLib (0.6):
+  - QMBaseLib (0.9.5):
     - FMDB (~> 2.7.5)
     - Qiniu (~> 8.5.2)
   - QMLineSDK (4.4.0):
@@ -525,27 +523,27 @@ PODS:
   - SCLAlertView-Objective-C (1.3.0)
   - SDCycleScrollView (1.82):
     - SDWebImage (>= 5.0.0)
-  - SDWebImage (5.21.0):
-    - SDWebImage/Core (= 5.21.0)
-  - SDWebImage/Core (5.21.0)
+  - SDWebImage (5.21.1):
+    - SDWebImage/Core (= 5.21.1)
+  - SDWebImage/Core (5.21.1)
   - SDWebImageWebPCoder (0.8.3):
     - libwebp (~> 1.0)
     - SDWebImage/Core (~> 5.10)
   - SGQRCode (4.1.0)
   - SocketRocket (0.6.1)
-  - TianmuSDK (2.2.9.1):
-    - ADSuyiKit (~> 0.7.4.12031)
+  - TianmuSDK (3.0.1.1):
+    - ADSuyiKit (~> 0.7.6.02251)
     - ADSuyiLocationManager (~> 0.2.1.01301)
     - ADSuyiNetwork (~> 0.2.1.0)
   - TTTAttributedLabel (1.13.4)
-  - TZImagePickerController (3.8.8):
-    - TZImagePickerController/Basic (= 3.8.8)
-    - TZImagePickerController/Location (= 3.8.8)
-  - TZImagePickerController/Basic (3.8.8)
-  - TZImagePickerController/Location (3.8.8)
+  - TZImagePickerController (3.8.9):
+    - TZImagePickerController/Basic (= 3.8.9)
+    - TZImagePickerController/Location (= 3.8.9)
+  - TZImagePickerController/Basic (3.8.9)
+  - TZImagePickerController/Location (3.8.9)
   - UICKeyChainStore (2.1.2)
   - UMCCommonLog (2.0.2)
-  - UMCommon (7.5.2):
+  - UMCommon (7.5.3):
     - UMDevice
   - UMDevice (3.4.0)
   - WebViewJavascriptBridge (6.0.3)
@@ -576,7 +574,7 @@ PODS:
   - ZXSDK (3.3.2)
 
 DEPENDENCIES:
-  - ADSuyiSDK (~> 3.9.9.12031)
+  - ADSuyiSDK (~> 4.0.1.06132)
   - ADSuyiSDK/ADSuyiSDKPlatforms/bu
   - ADSuyiSDK/ADSuyiSDKPlatforms/gdt
   - ADSuyiSDK/ADSuyiSDKPlatforms/ks
@@ -727,21 +725,21 @@ CHECKOUT OPTIONS:
     :git: https://github.com/Tencent/MLeaksFinder.git
 
 SPEC CHECKSUMS:
-  Ads-CN: 1d65518db43f7da28b47275105d56d74a88a9f1f
-  ADSuyiKit: b62039de91d6c32b2dfeb28968d3aeaa74404d2d
+  Ads-CN: 8c9ee513ca6c9b2ab3dda611e1e21fce2616f149
+  ADSuyiKit: dd87ca1bae270d84b4a96a82727148e13062c4a3
   ADSuyiLocationManager: 498421794430a1554dd85beac729221487e8394b
   ADSuyiNetwork: e3cd29320932f9a6d523a561357a2f38de83189d
-  ADSuyiSDK: 0f21bf110620d6e80527039b3efda0bdc90138f0
+  ADSuyiSDK: 6b837b7dde3c0221e17c7ef456aad399c59729b9
   AFNetworking: 3bd23d814e976cd148d7d44c3ab78017b744cd58
   BaiduMapKit: 84991811cb07b24c6ead7d59022c13245427782c
-  BMKLocationKit: 7048cb9f9e6cd21d803a71013d175fce57db7f77
+  BMKLocationKit: 79689c9898474cbad4a93a5f0cc06c8c97fa2b02
   Bugly: 217ac2ce5f0f2626d43dbaa4f70764c953a26a31
   CGXVerticalMenuView-OC: 1f743edca2b085953dd64aaf154d6baa45125c38
   CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
   CocoaSecurity: d288a6f87e0f363823d2cb83e753814a6944f71a
-  CXHAdSDK: acf3322bc40752e71a184fa4a08aa43a44924a34
-  CXHAdSDK-Adapter: 1a5862bba03e3b42a8c33a1c9e63736facf62737
-  CXHAdSDK-Kit: f01348e3426adad5a1d4a8695823a7ea24a4af01
+  CXHAdSDK: 0868ed629f5b42593c879594877c7145f4d5ba12
+  CXHAdSDK-Adapter: 73e5627c6b4c792d9150eb27aace323e47258efb
+  CXHAdSDK-Kit: 36a83708ed5a76905848bd544e9214cf95118633
   DACircularProgress: 4dd437c0fc3da5161cb289e07ac449493d41db71
   DOUAudioStreamer: c503ba2ecb9a54ff7bda0eff66963ad224f3c7dc
   FBRetainCycleDetector: 46f8179bbb1c587deee3ea838a1a3ee02acf5015
@@ -749,12 +747,12 @@ SPEC CHECKSUMS:
   FDFullscreenPopGesture: a8a620179e3d9c40e8e00256dcee1c1a27c6d0f0
   FLAnimatedImage: bbf914596368867157cc71b38a8ec834b3eeb32b
   FMDB: 728731dd336af3936ce00f91d9d8495f5718a0e6
-  GDTMobSDK: 17a7af711cf6b7c8a3a0a4edc3916dc2467877e9
-  GKLivePhotoManager: 7d5bc069382d5a4c1d44a846727b0beb08582256
-  GKPhotoBrowser: 1dc2db1effb3f3b46f993b5f9a94225fa11dd3a4
+  GDTMobSDK: d549f5d0c06c2534dbce08cfb21e2266975b7f5a
+  GKLivePhotoManager: 7fba1ae3eebbbd9323320e137a88a231bc5af5fa
+  GKPhotoBrowser: 2cec169d50d0aa029d2343ede2541e8ea01b1747
   GKSliderView: 7c6f853afeb0ae370bb8dce76ec669d6e9109d1d
-  GTCommonSDK: 5f23150656349e33595ddc544e89312085234cb7
-  GTSDK: 4392fb9f02e370c8dd3e77fa51ffc511b5ac1ac1
+  GTCommonSDK: aa0cdaada5e31c2dc173c8170127d50f16a439c7
+  GTSDK: 1a2e62b50cf265046c2e48cdb88cd3d8e62bd7ea
   HappyDNS: aefbd28cdcda93cffac64013dfe3342a2f87ed0a
   HWPanModal: b57a6717d3cdcd666bff44f9dd2a5be9f4d6f5d2
   IDMPhotoBrowser: 4bb459b1faffc228e92bccdf7c54ad6d6b7e8c37
@@ -763,8 +761,8 @@ SPEC CHECKSUMS:
   JSONModel: 02ab723958366a3fd27da57ea2af2113658762e9
   JXCategoryView: 262d503acea0b1278c79a1c25b7332ffaef4d518
   JXPagingView: afdd2e9af09c90160dd232b970d603cc6e7ddd0e
-  KSAdSDK: a43b039755299f770f7fc81cba0ebf64ae4f03a8
-  KTVHTTPCache: 5711692cdf9a5ecfe829b1e16577deb3ffe3dc86
+  KSAdSDK: 15d8613714c8f1728b0bd6d461a3d7e316e61982
+  KTVHTTPCache: a1f3c9c217be5af6985b240d660db262a0cbc18a
   libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8
   LookinServer: 1b2b61c6402ae29fa22182d48f5cd067b4e99e80
   Masonry: 678fab65091a9290e40e2832a55e7ab731aad201
@@ -776,7 +774,7 @@ SPEC CHECKSUMS:
   OpenSSL-Universal: ca89c20240633a77c776082ba76b7d90f992bf77
   pop: d582054913807fd11fd50bfe6a539d91c7e1a55a
   Qiniu: 601dc3247d9c033ab80b2b216517ec484770b5ed
-  QMBaseLib: f623741cc351ab084387a8a67d73d11a44051819
+  QMBaseLib: d3314f6cbf942d44b2a46bd836aaf9d5fd02e117
   QMLineSDK: 34188bac5127be874e7883a89563d82926c80183
   QMUIKit: 3c622fe3c55c0dccfad750634bd9ee5e7ade9a53
   ReactiveObjC: 011caa393aa0383245f2dcf9bf02e86b80b36040
@@ -784,16 +782,16 @@ SPEC CHECKSUMS:
   SAMKeychain: 483e1c9f32984d50ca961e26818a534283b4cd5c
   SCLAlertView-Objective-C: c17253cf0ce7543de3f9e4c7bd9341c1dd55c175
   SDCycleScrollView: a0d74c3384caa72bdfc81470bdbc8c14b3e1fbcf
-  SDWebImage: f84b0feeb08d2d11e6a9b843cb06d75ebf5b8868
+  SDWebImage: f29024626962457f3470184232766516dee8dfea
   SDWebImageWebPCoder: bbf46e29fb8d1980a78ad3d5e9b4123c77f10ebc
   SGQRCode: 6ad664d63f38f2842503bc5087812c5a3136d924
   SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17
-  TianmuSDK: 0b7ca4b1b41d8d5c4b6fcc5df9b5647b5b0f1b14
+  TianmuSDK: 5cd09beb042e3eabd0d262552d9b715ad3dceea7
   TTTAttributedLabel: 0a2ac7b2dd726d32a070dafb01446026b11e624f
-  TZImagePickerController: d084a7b97c82d387e7669dd86dc9a9057500aacf
+  TZImagePickerController: 456f470b5dea97b37226ec7a694994a8663340b2
   UICKeyChainStore: 85db518bb1d294366d15ec9b92a416c4e670518f
   UMCCommonLog: bea707e50c85cef4b0eb47cc5c7226bb843245ca
-  UMCommon: 72513a01ebca2dead52f2112b4d7c6196dbbe412
+  UMCommon: 3b850836e8bc162b4e7f6b527d30071ed8ea75a1
   UMDevice: dcdf7ec167387837559d149fbc7d793d984faf82
   WebViewJavascriptBridge: 7f5bc4d3581e672e8f32bd0f812d54bc69bb8e29
   WechatOpenSDK: 290989072e87b79d52225a01bb4e5e58f6f88593
@@ -806,6 +804,6 @@ SPEC CHECKSUMS:
   ZFPlayer: 5cf39e8d9f0c2394a014b0db4767b5b5a6bffe13
   ZXSDK: 786338c0a18e98e03eda00699c3bfd2700b97117
 
-PODFILE CHECKSUM: 91589f99f96e2e8a34bb1a1f47d782be894858f2
+PODFILE CHECKSUM: 6cd104cadedfa5962f8461c70d6c9e12ee796cab
 
 COCOAPODS: 1.15.2

+ 5 - 5
Pods/ADSuyiKit/ADSuyiKit/Classes/ADSuyiKit.xcframework/Info.plist

@@ -8,32 +8,32 @@
 			<key>BinaryPath</key>
 			<string>ADSuyiKit.framework/ADSuyiKit</string>
 			<key>LibraryIdentifier</key>
-			<string>ios-arm64_x86_64-simulator</string>
+			<string>ios-arm64</string>
 			<key>LibraryPath</key>
 			<string>ADSuyiKit.framework</string>
 			<key>SupportedArchitectures</key>
 			<array>
 				<string>arm64</string>
-				<string>x86_64</string>
 			</array>
 			<key>SupportedPlatform</key>
 			<string>ios</string>
-			<key>SupportedPlatformVariant</key>
-			<string>simulator</string>
 		</dict>
 		<dict>
 			<key>BinaryPath</key>
 			<string>ADSuyiKit.framework/ADSuyiKit</string>
 			<key>LibraryIdentifier</key>
-			<string>ios-arm64</string>
+			<string>ios-arm64_x86_64-simulator</string>
 			<key>LibraryPath</key>
 			<string>ADSuyiKit.framework</string>
 			<key>SupportedArchitectures</key>
 			<array>
 				<string>arm64</string>
+				<string>x86_64</string>
 			</array>
 			<key>SupportedPlatform</key>
 			<string>ios</string>
+			<key>SupportedPlatformVariant</key>
+			<string>simulator</string>
 		</dict>
 	</array>
 	<key>CFBundlePackageType</key>

+ 5 - 5
Pods/ADSuyiSDK/ADSuyiSDK/Classes/core/ADSuyiSDK.xcframework/Info.plist

@@ -8,32 +8,32 @@
 			<key>BinaryPath</key>
 			<string>ADSuyiSDK.framework/ADSuyiSDK</string>
 			<key>LibraryIdentifier</key>
-			<string>ios-arm64</string>
+			<string>ios-arm64_x86_64-simulator</string>
 			<key>LibraryPath</key>
 			<string>ADSuyiSDK.framework</string>
 			<key>SupportedArchitectures</key>
 			<array>
 				<string>arm64</string>
+				<string>x86_64</string>
 			</array>
 			<key>SupportedPlatform</key>
 			<string>ios</string>
+			<key>SupportedPlatformVariant</key>
+			<string>simulator</string>
 		</dict>
 		<dict>
 			<key>BinaryPath</key>
 			<string>ADSuyiSDK.framework/ADSuyiSDK</string>
 			<key>LibraryIdentifier</key>
-			<string>ios-arm64_x86_64-simulator</string>
+			<string>ios-arm64</string>
 			<key>LibraryPath</key>
 			<string>ADSuyiSDK.framework</string>
 			<key>SupportedArchitectures</key>
 			<array>
 				<string>arm64</string>
-				<string>x86_64</string>
 			</array>
 			<key>SupportedPlatform</key>
 			<string>ios</string>
-			<key>SupportedPlatformVariant</key>
-			<string>simulator</string>
 		</dict>
 	</array>
 	<key>CFBundlePackageType</key>

+ 5 - 5
Pods/Ads-CN/SDK/BUAdSDK.xcframework/Info.plist

@@ -6,30 +6,30 @@
 	<array>
 		<dict>
 			<key>LibraryIdentifier</key>
-			<string>ios-arm64_x86_64-simulator</string>
+			<string>ios-arm64</string>
 			<key>LibraryPath</key>
 			<string>BUAdSDK.framework</string>
 			<key>SupportedArchitectures</key>
 			<array>
 				<string>arm64</string>
-				<string>x86_64</string>
 			</array>
 			<key>SupportedPlatform</key>
 			<string>ios</string>
-			<key>SupportedPlatformVariant</key>
-			<string>simulator</string>
 		</dict>
 		<dict>
 			<key>LibraryIdentifier</key>
-			<string>ios-arm64</string>
+			<string>ios-arm64_x86_64-simulator</string>
 			<key>LibraryPath</key>
 			<string>BUAdSDK.framework</string>
 			<key>SupportedArchitectures</key>
 			<array>
 				<string>arm64</string>
+				<string>x86_64</string>
 			</array>
 			<key>SupportedPlatform</key>
 			<string>ios</string>
+			<key>SupportedPlatformVariant</key>
+			<string>simulator</string>
 		</dict>
 	</array>
 	<key>CFBundlePackageType</key>

二进制
Pods/Ads-CN/SDK/CSJAdSDK.bundle/Info.plist


文件差异内容过多而无法显示
+ 0 - 0
Pods/Ads-CN/SDK/CSJAdSDK.bundle/bu_dynamic_default.json


+ 1 - 1
Pods/Ads-CN/SDK/CSJAdSDK.bundle/version.txt

@@ -1 +1 @@
-6.5.0.9
+6.9.1.2

二进制
Pods/BMKLocationKit/BMKLocationKit/BMKLocationKit.framework/BMKLocationKit


+ 2 - 2
Pods/BMKLocationKit/BMKLocationKit/BMKLocationKit.framework/Headers/BMKLocationKitVersion.h

@@ -13,14 +13,14 @@
 
 /**
  *获取当前定位sdk 的版本号
- *当前定位sdk版本 : 2.1.2
+ *当前定位sdk版本 : 2.1.3
  *@return  返回当前定位sdk 的版本号
  */
 UIKIT_EXTERN NSString* BMKLocationKitVersion();
 
 /**
  *获取当前定位sdk 的float版本号
- *当前定位sdk版本 : 2.12
+ *当前定位sdk版本 : 2.13
  *@return  返回当前定位sdk 的float版本号
  */
 UIKIT_EXTERN float BMKLocationKitFloatVersion();

+ 9 - 1
Pods/GKPhotoBrowser/README.md

@@ -199,7 +199,15 @@ browser.configure = configure;
 
  <details open>
      <summary><font size=4>最近更新</font></summary>
-
+     
+ * 3.2.6 - 2025.07.08
+    - 获取KeyWindow方法优化
+ * 3.2.5 - 2025.07.03
+    - 修复push显示方式,browser无法释放的问题
+ * 3.2.4 - 2025.04.15
+    - 修复手动调用dismiss方法,browser无法释放的问题
+    - 视频播放按钮显示优化
+    - 增加禁止视频缩放属性
  * 3.2.2 - 2025.03.07
     - 修复livePhoto重用后可能出现不播放的问题
  * 3.2.1 - 2025.02.17

二进制
Pods/GTCommonSDK/GTCommonSDK.xcframework/ios-arm64_x86_64-maccatalyst/GTCommonSDK.framework/GTCommonSDK


+ 1 - 1
Pods/GTCommonSDK/GTCommonSDK.xcframework/ios-arm64_x86_64-maccatalyst/GTCommonSDK.framework/Headers/GTCommonSDK.h

@@ -3,7 +3,7 @@
 //  GTCommonSDK
 //
 //  Created by Getui on 2020/11/16.
-//  GTCommonSDK-Version: 3.1.9.0
+//  GTCommonSDK-Version: 3.1.10.0
 
 #import <Foundation/Foundation.h>
 

+ 7 - 7
Pods/GTSDK/GTSDK.xcframework/Info.plist

@@ -6,7 +6,7 @@
 	<array>
 		<dict>
 			<key>LibraryIdentifier</key>
-			<string>ios-arm64_x86_64-maccatalyst</string>
+			<string>ios-arm64_x86_64-simulator</string>
 			<key>LibraryPath</key>
 			<string>GTSDK.framework</string>
 			<key>SupportedArchitectures</key>
@@ -17,34 +17,34 @@
 			<key>SupportedPlatform</key>
 			<string>ios</string>
 			<key>SupportedPlatformVariant</key>
-			<string>maccatalyst</string>
+			<string>simulator</string>
 		</dict>
 		<dict>
 			<key>LibraryIdentifier</key>
-			<string>ios-arm64_x86_64-simulator</string>
+			<string>ios-arm64</string>
 			<key>LibraryPath</key>
 			<string>GTSDK.framework</string>
 			<key>SupportedArchitectures</key>
 			<array>
 				<string>arm64</string>
-				<string>x86_64</string>
 			</array>
 			<key>SupportedPlatform</key>
 			<string>ios</string>
-			<key>SupportedPlatformVariant</key>
-			<string>simulator</string>
 		</dict>
 		<dict>
 			<key>LibraryIdentifier</key>
-			<string>ios-arm64</string>
+			<string>ios-arm64_x86_64-maccatalyst</string>
 			<key>LibraryPath</key>
 			<string>GTSDK.framework</string>
 			<key>SupportedArchitectures</key>
 			<array>
 				<string>arm64</string>
+				<string>x86_64</string>
 			</array>
 			<key>SupportedPlatform</key>
 			<string>ios</string>
+			<key>SupportedPlatformVariant</key>
+			<string>maccatalyst</string>
 		</dict>
 	</array>
 	<key>CFBundlePackageType</key>

二进制
Pods/GTSDK/GTSDK.xcframework/ios-arm64_x86_64-maccatalyst/GTSDK.framework/GTSDK


+ 6 - 1
Pods/GTSDK/GTSDK.xcframework/ios-arm64_x86_64-maccatalyst/GTSDK.framework/Headers/GeTuiSdk.h

@@ -5,7 +5,7 @@
 //  Created by gexin on 15-5-5.
 //  Copyright (c) 2015年 Gexin Interactive (Beijing) Network Technology Co.,LTD. All rights reserved.
 //
-//  GTSDK-Version: 3.0.9.0
+//  GTSDK-Version: 3.0.10.0
 
 #import <Foundation/Foundation.h>
 #import <UIKit/UIKit.h>
@@ -209,6 +209,11 @@ NS_ASSUME_NONNULL_BEGIN
  */
 + (BOOL)setTags:(NSArray *)tags;
 
+
+/// 查询tag
+/// @param sn 序列号
++ (BOOL)queryTag:(NSString *)sn;
+
 /**
  *  给用户打标签, 后台可以根据标签进行推送
  *

+ 3 - 0
Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_armv7/KSAdSDK.framework/Headers/KSAdDeviceInfoEnum.h

@@ -40,4 +40,7 @@ typedef NS_ENUM(NSUInteger, KSAdPrivateDataErrorCode) {
     KSAdPrivateDataErrorOthers               = 5,    //其他错误
 };
 
+// 自定义的换卡消息通知
+OBJC_EXTERN NSString *const KSAdSIMCardDidChangeNotification;
+
 #endif /* KSAdDeviceInfoEnum_h */

+ 18 - 1
Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_armv7/KSAdSDK.framework/Headers/KSAdExposureReportParam.h

@@ -15,6 +15,8 @@ typedef NS_ENUM(NSUInteger, KSAdExposureFailureCode) {
     KSAdExposureFailureBidFailed               = 2,    // 广告竞价失败
     KSAdExposureFailureCacheInvalid            = 3,    // 缓存失效
     KSAdExposureFailureExposurePriorityReduce  = 4,    // 曝光优先级降低
+    KSAdExposureFailureExposureReturnTimeout   = 5,    // 返回超时
+    KSAdExposureFailureExposureMediaBlocking   = 6,    // 媒体屏蔽
 };
 
 typedef NS_ENUM(NSUInteger, KSAdExposureAdnType) {
@@ -23,6 +25,16 @@ typedef NS_ENUM(NSUInteger, KSAdExposureAdnType) {
     KSAdExposureAdnTypeSelfSale         = 3,    // 输给自售广告主
 };
 
+typedef NS_ENUM(NSUInteger, KSAdExposureAdnMaterialType) {
+    KSAdExposureAdnMaterialTypeHorizontalImg         = 1,    // 横版图片
+    KSAdExposureAdnMaterialTypeVerticalImg           = 2,    // 竖版图片
+    KSAdExposureAdnMaterialTypeHorizontalVideo       = 3,    // 横版视频
+    KSAdExposureAdnMaterialTypeVerticalVideo         = 4,    // 竖版视频
+    KSAdExposureAdnMaterialTypeThreeImg              = 5,    // 三图
+    KSAdExposureAdnMaterialTypeStreamer              = 6,    // 横幅
+    KSAdExposureAdnMaterialTypeOther                 = 7,    // 其他
+};
+
 typedef NS_ENUM(NSUInteger, KSAdBiddingActionType) {
     KSAdBiddingActionTypeNone         = 0,    // 未点击&未曝光
     KSAdBiddingActionTypeSuccess      = 1,    // 点击&曝光
@@ -35,11 +47,12 @@ extern KSAdADNName const KSAdADNNameChuanshanjia;
 extern KSAdADNName const KSAdADNNameGuangdiantong;
 extern KSAdADNName const KSAdADNNameBaidu;
 extern KSAdADNName const KSAdADNNameOther;
+extern int const KSAdCompetitiveFailureDefaultValue;
 
 @interface KSAdExposureReportParam : NSObject
 
 // 胜出者的ecpm报价
-@property (nonatomic, assign) NSInteger winEcpm;
+@property (nonatomic, assign) NSUInteger winEcpm;
 // 竞胜平台类型
 @property (nonatomic, assign) KSAdExposureAdnType adnType;
 // 竞胜平台名称,adnType=KSAdExposureAdnTypeOther时可以设置
@@ -47,6 +60,10 @@ extern KSAdADNName const KSAdADNNameOther;
 
 // 竞胜方dsp的广告主名称
 @property (nonatomic, copy) NSString *adUserName;
+// 竞胜方广告物料类型
+@property (nonatomic, assign) KSAdExposureAdnMaterialType adnMaterialType;
+// 竞胜方广告素材url
+@property (nonatomic, copy) NSString *adnMaterialUrl;
 // 竞胜方的广告主标题
 @property (nonatomic, copy) NSString *adTitle;
 // 媒体侧的请求id

+ 2 - 0
Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_armv7/KSAdSDK.framework/Headers/KSAdNativeAdExtraDataModel.h

@@ -13,6 +13,8 @@ NS_ASSUME_NONNULL_BEGIN
 
 /// 是否开启摇一摇,false或者不赋值,不开启,true开启
 @property (nonatomic, assign) BOOL enableShake;
+/// 是否开启扭一扭,不赋值默认true
+@property (nonatomic, assign) BOOL enableRotate;
 
 @end
 

+ 2 - 0
Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_armv7/KSAdSDK.framework/Headers/KSAdNativeStyleControl.h

@@ -13,6 +13,8 @@ NS_ASSUME_NONNULL_BEGIN
 
 ///自渲染广告是否允许摇一摇
 @property (nonatomic, assign) BOOL enableShake;
+///自渲染广告是否允许扭一扭
+@property (nonatomic, assign) BOOL enableRotate;
 
 @end
 

+ 2 - 0
Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_armv7/KSAdSDK.framework/Headers/KSMaterialMeta.h

@@ -54,6 +54,8 @@ typedef NS_ENUM(int, KSAdSourceLogoType) {
 @property (nonatomic, copy) NSString *appName;
 // product name (for h5)
 @property (nonatomic, copy) NSString *productName;
+// whether the ad has the rotate ability
+@property (nonatomic, assign) BOOL enableRotate;
 
 @end
 

+ 0 - 2
Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_armv7/KSAdSDK.framework/Headers/KSNativeAd.h

@@ -39,8 +39,6 @@ NS_ASSUME_NONNULL_BEGIN
  */
 @property (nonatomic, weak, readwrite, nullable) id<KSNativeAdDelegate> delegate;
 
-
-
 /**
  required.
  Root view controller for handling ad actions.

+ 6 - 0
Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_armv7/KSAdSDK.framework/Headers/KSNativeAdRelatedView.h

@@ -9,6 +9,7 @@
 #import <Foundation/Foundation.h>
 #import "KSNativeAd.h"
 #import "KSVideoAdView.h"
+#import "KSNativeAdRotateView.h"
 
 NS_ASSUME_NONNULL_BEGIN
 
@@ -25,6 +26,11 @@ NS_ASSUME_NONNULL_BEGIN
  */
 @property (nonatomic, strong, readonly, nullable) KSVideoAdView *videoAdView;
 
+/**
+ Rotate view. Need to actively add to the view.
+ */
+@property (nonatomic, strong) KSNativeAdRotateView *rotateView;
+
 /**
  Refresh the data every time you get new datas in order to show ad perfectly.
  */

+ 7 - 0
Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_armv7/KSAdSDK.framework/Headers/KSSplashAdView.h

@@ -72,6 +72,11 @@ NS_ASSUME_NONNULL_BEGIN
  */
 - (void)ksad_splashAdDidAutoDismiss:(KSSplashAdView *)splashAdView;
 
+/**
+ * splash 广告关闭  ( 自动dismiss关闭 & 点击跳过关闭   关闭行为统一走这个回调 )
+ */
+- (void)ksad_splashAdDidClose:(KSSplashAdView *)splashAdView;
+
 @end
 
 @interface KSSplashAdView : UIView<KSAdProtocol>
@@ -89,6 +94,8 @@ NS_ASSUME_NONNULL_BEGIN
 
 @property (nonatomic, assign) KSAdShowDirection direction;
 
+@property (nonatomic, copy) void (^callbackAfterHandleClickBlock)(void);
+
 - (id)initWithPosId:(NSString *)posId;
 - (void)setExtraData:(KSAdSplashAdExtraDataModel *)extraDataModel;
 /// load ad data

+ 7 - 0
Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_armv7/KSAdSDK.framework/Headers/KSVideoAdView.h

@@ -19,6 +19,13 @@ NS_ASSUME_NONNULL_BEGIN
 // CoverView是否显示appIcon和appName
 @property (nonatomic, assign, readwrite) BOOL isShowAppInfo;
 
+// 开始播放视频或恢复播放视频
+- (void)startVideo;
+// 暂停播放视频
+- (void)pauseVideo;
+// 停止播放视频
+- (void)stopVideo;
+
 @end
 
 NS_ASSUME_NONNULL_END

二进制
Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_armv7/KSAdSDK.framework/Info.plist


二进制
Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_armv7/KSAdSDK.framework/KSAdSDK


二进制
Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_armv7/KSAdSDK.framework/KSUAdDebugToolResource.bundle/Info.plist


+ 3 - 0
Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_x86_64-simulator/KSAdSDK.framework/Headers/KSAdDeviceInfoEnum.h

@@ -40,4 +40,7 @@ typedef NS_ENUM(NSUInteger, KSAdPrivateDataErrorCode) {
     KSAdPrivateDataErrorOthers               = 5,    //其他错误
 };
 
+// 自定义的换卡消息通知
+OBJC_EXTERN NSString *const KSAdSIMCardDidChangeNotification;
+
 #endif /* KSAdDeviceInfoEnum_h */

+ 18 - 1
Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_x86_64-simulator/KSAdSDK.framework/Headers/KSAdExposureReportParam.h

@@ -15,6 +15,8 @@ typedef NS_ENUM(NSUInteger, KSAdExposureFailureCode) {
     KSAdExposureFailureBidFailed               = 2,    // 广告竞价失败
     KSAdExposureFailureCacheInvalid            = 3,    // 缓存失效
     KSAdExposureFailureExposurePriorityReduce  = 4,    // 曝光优先级降低
+    KSAdExposureFailureExposureReturnTimeout   = 5,    // 返回超时
+    KSAdExposureFailureExposureMediaBlocking   = 6,    // 媒体屏蔽
 };
 
 typedef NS_ENUM(NSUInteger, KSAdExposureAdnType) {
@@ -23,6 +25,16 @@ typedef NS_ENUM(NSUInteger, KSAdExposureAdnType) {
     KSAdExposureAdnTypeSelfSale         = 3,    // 输给自售广告主
 };
 
+typedef NS_ENUM(NSUInteger, KSAdExposureAdnMaterialType) {
+    KSAdExposureAdnMaterialTypeHorizontalImg         = 1,    // 横版图片
+    KSAdExposureAdnMaterialTypeVerticalImg           = 2,    // 竖版图片
+    KSAdExposureAdnMaterialTypeHorizontalVideo       = 3,    // 横版视频
+    KSAdExposureAdnMaterialTypeVerticalVideo         = 4,    // 竖版视频
+    KSAdExposureAdnMaterialTypeThreeImg              = 5,    // 三图
+    KSAdExposureAdnMaterialTypeStreamer              = 6,    // 横幅
+    KSAdExposureAdnMaterialTypeOther                 = 7,    // 其他
+};
+
 typedef NS_ENUM(NSUInteger, KSAdBiddingActionType) {
     KSAdBiddingActionTypeNone         = 0,    // 未点击&未曝光
     KSAdBiddingActionTypeSuccess      = 1,    // 点击&曝光
@@ -35,11 +47,12 @@ extern KSAdADNName const KSAdADNNameChuanshanjia;
 extern KSAdADNName const KSAdADNNameGuangdiantong;
 extern KSAdADNName const KSAdADNNameBaidu;
 extern KSAdADNName const KSAdADNNameOther;
+extern int const KSAdCompetitiveFailureDefaultValue;
 
 @interface KSAdExposureReportParam : NSObject
 
 // 胜出者的ecpm报价
-@property (nonatomic, assign) NSInteger winEcpm;
+@property (nonatomic, assign) NSUInteger winEcpm;
 // 竞胜平台类型
 @property (nonatomic, assign) KSAdExposureAdnType adnType;
 // 竞胜平台名称,adnType=KSAdExposureAdnTypeOther时可以设置
@@ -47,6 +60,10 @@ extern KSAdADNName const KSAdADNNameOther;
 
 // 竞胜方dsp的广告主名称
 @property (nonatomic, copy) NSString *adUserName;
+// 竞胜方广告物料类型
+@property (nonatomic, assign) KSAdExposureAdnMaterialType adnMaterialType;
+// 竞胜方广告素材url
+@property (nonatomic, copy) NSString *adnMaterialUrl;
 // 竞胜方的广告主标题
 @property (nonatomic, copy) NSString *adTitle;
 // 媒体侧的请求id

+ 2 - 0
Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_x86_64-simulator/KSAdSDK.framework/Headers/KSAdNativeAdExtraDataModel.h

@@ -13,6 +13,8 @@ NS_ASSUME_NONNULL_BEGIN
 
 /// 是否开启摇一摇,false或者不赋值,不开启,true开启
 @property (nonatomic, assign) BOOL enableShake;
+/// 是否开启扭一扭,不赋值默认true
+@property (nonatomic, assign) BOOL enableRotate;
 
 @end
 

+ 2 - 0
Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_x86_64-simulator/KSAdSDK.framework/Headers/KSAdNativeStyleControl.h

@@ -13,6 +13,8 @@ NS_ASSUME_NONNULL_BEGIN
 
 ///自渲染广告是否允许摇一摇
 @property (nonatomic, assign) BOOL enableShake;
+///自渲染广告是否允许扭一扭
+@property (nonatomic, assign) BOOL enableRotate;
 
 @end
 

+ 2 - 0
Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_x86_64-simulator/KSAdSDK.framework/Headers/KSMaterialMeta.h

@@ -54,6 +54,8 @@ typedef NS_ENUM(int, KSAdSourceLogoType) {
 @property (nonatomic, copy) NSString *appName;
 // product name (for h5)
 @property (nonatomic, copy) NSString *productName;
+// whether the ad has the rotate ability
+@property (nonatomic, assign) BOOL enableRotate;
 
 @end
 

+ 0 - 2
Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_x86_64-simulator/KSAdSDK.framework/Headers/KSNativeAd.h

@@ -39,8 +39,6 @@ NS_ASSUME_NONNULL_BEGIN
  */
 @property (nonatomic, weak, readwrite, nullable) id<KSNativeAdDelegate> delegate;
 
-
-
 /**
  required.
  Root view controller for handling ad actions.

+ 6 - 0
Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_x86_64-simulator/KSAdSDK.framework/Headers/KSNativeAdRelatedView.h

@@ -9,6 +9,7 @@
 #import <Foundation/Foundation.h>
 #import "KSNativeAd.h"
 #import "KSVideoAdView.h"
+#import "KSNativeAdRotateView.h"
 
 NS_ASSUME_NONNULL_BEGIN
 
@@ -25,6 +26,11 @@ NS_ASSUME_NONNULL_BEGIN
  */
 @property (nonatomic, strong, readonly, nullable) KSVideoAdView *videoAdView;
 
+/**
+ Rotate view. Need to actively add to the view.
+ */
+@property (nonatomic, strong) KSNativeAdRotateView *rotateView;
+
 /**
  Refresh the data every time you get new datas in order to show ad perfectly.
  */

+ 7 - 0
Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_x86_64-simulator/KSAdSDK.framework/Headers/KSSplashAdView.h

@@ -72,6 +72,11 @@ NS_ASSUME_NONNULL_BEGIN
  */
 - (void)ksad_splashAdDidAutoDismiss:(KSSplashAdView *)splashAdView;
 
+/**
+ * splash 广告关闭  ( 自动dismiss关闭 & 点击跳过关闭   关闭行为统一走这个回调 )
+ */
+- (void)ksad_splashAdDidClose:(KSSplashAdView *)splashAdView;
+
 @end
 
 @interface KSSplashAdView : UIView<KSAdProtocol>
@@ -89,6 +94,8 @@ NS_ASSUME_NONNULL_BEGIN
 
 @property (nonatomic, assign) KSAdShowDirection direction;
 
+@property (nonatomic, copy) void (^callbackAfterHandleClickBlock)(void);
+
 - (id)initWithPosId:(NSString *)posId;
 - (void)setExtraData:(KSAdSplashAdExtraDataModel *)extraDataModel;
 /// load ad data

+ 7 - 0
Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_x86_64-simulator/KSAdSDK.framework/Headers/KSVideoAdView.h

@@ -19,6 +19,13 @@ NS_ASSUME_NONNULL_BEGIN
 // CoverView是否显示appIcon和appName
 @property (nonatomic, assign, readwrite) BOOL isShowAppInfo;
 
+// 开始播放视频或恢复播放视频
+- (void)startVideo;
+// 暂停播放视频
+- (void)pauseVideo;
+// 停止播放视频
+- (void)stopVideo;
+
 @end
 
 NS_ASSUME_NONNULL_END

二进制
Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_x86_64-simulator/KSAdSDK.framework/Info.plist


二进制
Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_x86_64-simulator/KSAdSDK.framework/KSAdSDK


二进制
Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_x86_64-simulator/KSAdSDK.framework/KSUAdDebugToolResource.bundle/Info.plist


+ 1 - 1
Pods/KSAdSDK/KSAdSDK.xcframework/ios-arm64_x86_64-simulator/KSAdSDK.framework/_CodeSignature/CodeResources

@@ -14,7 +14,7 @@
 		</data>
 		<key>Info.plist</key>
 		<data>
-		JptYCO2fOXXKArmSgYOkjYE8lNY=
+		8QjbtNInSNPf4m/JUviiNiDegLE=
 		</data>
 		<key>Modules/module.modulemap</key>
 		<data>

+ 2 - 0
Pods/KTVHTTPCache/KTVHTTPCache/Classes/KTVHCCommon/KTVHCLog.h

@@ -39,6 +39,7 @@ KTVHCLogEnable(DataRequest,       YES, YES)
 KTVHCLogEnable(DataResponse,      YES, YES)
 KTVHCLogEnable(DataReader,        YES, YES)
 KTVHCLogEnable(DataLoader,        YES, YES)
+KTVHCLogEnable(DataHLSLoader,     YES, YES)
 
 KTVHCLogEnable(DataUnit,          YES, YES)
 KTVHCLogEnable(DataUnitItem,      YES, YES)
@@ -98,6 +99,7 @@ if (([KTVHCLog log].consoleLogEnable && console_log_enable) || ([KTVHCLog log].r
 #define KTVHCLogDataResponse(...)           KTVHCLogging(@"KTVHCDataResponse     ", KTVHCLogEnableValueConsoleLog(DataResponse),      KTVHCLogEnableValueRecordLog(DataResponse),      ##__VA_ARGS__)
 #define KTVHCLogDataReader(...)             KTVHCLogging(@"KTVHCDataReader       ", KTVHCLogEnableValueConsoleLog(DataReader),        KTVHCLogEnableValueRecordLog(DataReader),        ##__VA_ARGS__)
 #define KTVHCLogDataLoader(...)             KTVHCLogging(@"KTVHCDataLoader       ", KTVHCLogEnableValueConsoleLog(DataLoader),        KTVHCLogEnableValueRecordLog(DataLoader),        ##__VA_ARGS__)
+#define KTVHCLogDataHLSLoader(...)          KTVHCLogging(@"KTVHCDataHLSLoader    ", KTVHCLogEnableValueConsoleLog(DataHLSLoader),     KTVHCLogEnableValueRecordLog(DataHLSLoader),     ##__VA_ARGS__)
 
 #define KTVHCLogDataUnit(...)               KTVHCLogging(@"KTVHCDataUnit         ", KTVHCLogEnableValueConsoleLog(DataUnit),          KTVHCLogEnableValueRecordLog(DataUnit),          ##__VA_ARGS__)
 #define KTVHCLogDataUnitItem(...)           KTVHCLogging(@"KTVHCDataUnitItem     ", KTVHCLogEnableValueConsoleLog(DataUnitItem),      KTVHCLogEnableValueRecordLog(DataUnitItem),      ##__VA_ARGS__)

+ 1 - 0
Pods/KTVHTTPCache/KTVHTTPCache/Classes/KTVHCCommon/KTVHCRange.h

@@ -21,6 +21,7 @@ BOOL KTVHCRangeIsInvaild(KTVHCRange range);
 BOOL KTVHCEqualRanges(KTVHCRange range1, KTVHCRange range2);
 long long KTVHCRangeGetLength(KTVHCRange range);
 NSString * KTVHCStringFromRange(KTVHCRange range);
+NSString * KTVHCResponseRangeStringWithContentLength(long long contentLength);
 NSDictionary * KTVHCRangeFillToRequestHeaders(KTVHCRange range, NSDictionary *headers);
 NSDictionary * KTVHCRangeFillToRequestHeadersIfNeeded(KTVHCRange range, NSDictionary *headers);
 NSDictionary * KTVHCRangeFillToResponseHeaders(KTVHCRange range, NSDictionary *headers, long long totalLength);

+ 5 - 0
Pods/KTVHTTPCache/KTVHTTPCache/Classes/KTVHCCommon/KTVHCRange.m

@@ -78,6 +78,11 @@ NSDictionary *KTVHCRangeFillToResponseHeaders(KTVHCRange range, NSDictionary *he
     return ret;
 }
 
+NSString *KTVHCResponseRangeStringWithContentLength(long long contentLength)
+{
+    return [NSString stringWithFormat:@"bytes 0-%lld/%lld", contentLength - 1, contentLength];
+}
+
 KTVHCRange KTVHCMakeRange(long long start, long long end)
 {
     KTVHCRange range = {start, end};

+ 7 - 0
Pods/KTVHTTPCache/KTVHTTPCache/Classes/KTVHCDataStorage/KTVHCData+Internal.h

@@ -13,6 +13,7 @@
 #import "KTVHCDataRequest.h"
 #import "KTVHCDataReader.h"
 #import "KTVHCDataLoader.h"
+#import "KTVHCDataHLSLoader.h"
 
 #pragma mark - KTVHCDataReader
 
@@ -30,6 +31,12 @@
 
 @end
 
+@interface KTVHCDataHLSLoader ()
+
+- (instancetype)initWithRequest:(KTVHCDataRequest *)request NS_DESIGNATED_INITIALIZER;
+
+@end
+
 #pragma mark - KTVHCDataRequest
 
 @interface KTVHCDataRequest ()

+ 2 - 2
Pods/KTVHTTPCache/KTVHTTPCache/Classes/KTVHCDataStorage/KTVHCDataNetworkSource.m

@@ -116,7 +116,7 @@
         data = [self.readingHandle readDataOfLength:(NSUInteger)MIN(self.downloadLength - self.readedLength, length)];
         self->_readedLength += data.length;
         KTVHCLogDataNetworkSource(@"%p, Read data\nLength : %lld\ndownloadLength : %lld\nreadedLength : %lld", self, (long long)data.length, self.readedLength, self.downloadLength);
-        if (self.readedLength >= KTVHCRangeGetLength(self.response.contentRange)) {
+        if (self.readedLength >= self.response.contentLength) {
             self->_finished = YES;
             KTVHCLogDataNetworkSource(@"%p, Read data did finished", self);
             [self destoryReadingHandle];
@@ -151,7 +151,7 @@
         } else {
             KTVHCLogDataNetworkSource(@"%p, Complete with cancel\nError : %@", self, error);
         }
-    } else if (self.downloadLength >= KTVHCRangeGetLength(self.response.contentRange)) {
+    } else if (self.downloadLength >= self.response.contentLength) {
         KTVHCLogDataNetworkSource(@"%p, Complete and finisehed", self);
         if ([self.delegate respondsToSelector:@selector(ktv_networkSourceDidFinisheDownload:)]) {
             [KTVHCDataCallback callbackWithQueue:self.delegateQueue block:^{

+ 0 - 2
Pods/KTVHTTPCache/KTVHTTPCache/Classes/KTVHCDataStorage/KTVHCDataResponse.h

@@ -17,8 +17,6 @@
 @property (nonatomic, copy, readonly) NSURL *URL;
 @property (nonatomic, copy, readonly) NSDictionary *headers;
 @property (nonatomic, copy, readonly) NSString *contentType;
-@property (nonatomic, copy, readonly) NSString *contentRangeString;
-@property (nonatomic, readonly) KTVHCRange contentRange;
 @property (nonatomic, readonly) long long contentLength;
 @property (nonatomic, readonly) long long totalLength;
 

+ 17 - 2
Pods/KTVHTTPCache/KTVHTTPCache/Classes/KTVHCDataStorage/KTVHCDataResponse.m

@@ -10,6 +10,13 @@
 #import "KTVHCData+Internal.h"
 #import "KTVHCLog.h"
 
+@interface KTVHCDataResponse ()
+
+@property (nonatomic, readonly) KTVHCRange contentRange;
+@property (nonatomic, copy, readonly) NSString *contentRangeString;
+
+@end
+
 @implementation KTVHCDataResponse
 
 - (instancetype)initWithURL:(NSURL *)URL headers:(NSDictionary *)headers
@@ -19,9 +26,17 @@
         self->_URL = URL;
         self->_headers = headers;
         self->_contentType = [self headerValueWithKey:@"Content-Type"];
-        self->_contentRangeString = [self headerValueWithKey:@"Content-Range"];
         self->_contentLength = [self headerValueWithKey:@"Content-Length"].longLongValue;
-        self->_contentRange = KTVHCRangeWithResponseHeaderValue(self.contentRangeString, &self->_totalLength);
+        self->_contentRangeString = [self headerValueWithKey:@"Content-Range"];
+        if (self->_contentRangeString == nil && self->_contentLength > 0) {
+            self->_contentRangeString = KTVHCResponseRangeStringWithContentLength(self->_contentLength);
+        }
+        if (self->_contentRangeString == nil) {
+            self->_contentRange = KTVHCRangeInvaild();
+            self->_totalLength = self->_contentLength;
+        } else {
+            self->_contentRange = KTVHCRangeWithResponseHeaderValue(self->_contentRangeString, &self->_totalLength);
+        }
         KTVHCLogDataResponse(@"%p Create data response\nURL : %@\nHeaders : %@\ncontentType : %@\ntotalLength : %lld\ncurrentLength : %lld", self, self.URL, self.headers, self.contentType, self.totalLength, self.contentLength);
     }
     return self;

+ 6 - 0
Pods/KTVHTTPCache/KTVHTTPCache/Classes/KTVHCDataStorage/KTVHCDataStorage.h

@@ -9,6 +9,7 @@
 #import <Foundation/Foundation.h>
 #import "KTVHCDataReader.h"
 #import "KTVHCDataLoader.h"
+#import "KTVHCDataHLSLoader.h"
 #import "KTVHCDataRequest.h"
 #import "KTVHCDataResponse.h"
 #import "KTVHCDataCacheItem.h"
@@ -35,6 +36,11 @@
  */
 - (KTVHCDataLoader *)loaderWithRequest:(KTVHCDataRequest *)request;
 
+/**
+ *  HLS loader certain request.
+ */
+- (KTVHCDataHLSLoader *)HLSLoaderWithRequest:(KTVHCDataRequest *)request;
+
 /**
  *  Get cache item.
  */

+ 10 - 0
Pods/KTVHTTPCache/KTVHTTPCache/Classes/KTVHCDataStorage/KTVHCDataStorage.m

@@ -59,6 +59,16 @@
     return loader;
 }
 
+- (KTVHCDataHLSLoader *)HLSLoaderWithRequest:(KTVHCDataRequest *)request
+{
+    if (!request || request.URL.absoluteString.length <= 0) {
+        KTVHCLogDataStorage(@"Invaild hls loader request, %@", request.URL);
+        return nil;
+    }
+    KTVHCDataHLSLoader *loader = [[KTVHCDataHLSLoader alloc] initWithRequest:request];
+    return loader;
+}
+
 - (KTVHCDataCacheItem *)cacheItemWithURL:(NSURL *)URL
 {
     return [[KTVHCDataUnitPool pool] cacheItemWithURL:URL];

+ 6 - 7
Pods/KTVHTTPCache/KTVHTTPCache/Classes/KTVHCHTTPServer/KTVHCHTTPConnection.m

@@ -64,24 +64,23 @@
     } else {
         [components removeObjectAtIndex:0];
         [components removeObjectAtIndex:0];
-        URLString = URLString.stringByDeletingLastPathComponent;
+        NSURL *baseURL = [NSURL URLWithString:URLString].URLByDeletingLastPathComponent;
         if ([path containsString:[self.class URITokenPlaceHolder]]) {
             [components removeObjectAtIndex:0];
         } else {
-            URLString = URLString.stringByDeletingLastPathComponent;
+            baseURL = baseURL.URLByDeletingLastPathComponent;
         }
         NSString *lastPathComponent = [components componentsJoinedByString:@"/"];
         if ([lastPathComponent hasPrefix:@"http"]) {
-            URLString = lastPathComponent;
+            URL = [NSURL URLWithString:lastPathComponent];
         } else {
-            URLString = [URLString stringByAppendingPathComponent:lastPathComponent];
+            URL = [baseURL URLByAppendingPathComponent:lastPathComponent];
         }
-        URL = [NSURL URLWithString:URLString];
-        KTVHCLogHTTPConnection(@"%p, Receive redirect request\nURL : %@", self, URLString);
+        KTVHCLogHTTPConnection(@"%p, Receive redirect request\nURL : %@", self, URL);
     }
     KTVHCLogHTTPConnection(@"%p, Accept request\nURL : %@", self, URL);
     KTVHCDataRequest *dataRequest = [[KTVHCDataRequest alloc] initWithURL:URL headers:request.allHeaderFields];
-    if ([URLString containsString:@".m3u"]) {
+    if ([URL.absoluteString containsString:@".m3u"]) {
         return [[KTVHCHTTPHLSResponse alloc] initWithConnection:self dataRequest:dataRequest];
     }
     return [[KTVHCHTTPResponse alloc] initWithConnection:self dataRequest:dataRequest];

+ 1 - 1
Pods/KTVHTTPCache/KTVHTTPCache/Classes/KTVHCHTTPServer/KTVHCHTTPResponse.m

@@ -64,7 +64,7 @@
 
 - (UInt64)contentLength
 {
-    KTVHCLogHTTPResponse(@"%p, Conetnt length : %lld", self, self.reader.response.totalLength);
+    KTVHCLogHTTPResponse(@"%p, Content length : %lld", self, self.reader.response.totalLength);
     return self.reader.response.totalLength;
 }
 

+ 2 - 0
Pods/KTVHTTPCache/KTVHTTPCache/Classes/KTVHCHTTPServer/KTVHCHTTPServer.h

@@ -22,7 +22,9 @@
 - (BOOL)start:(NSError **)error;
 - (void)stop;
 
+- (BOOL)isProxyURL:(NSURL *)URL;
 - (NSURL *)URLWithOriginalURL:(NSURL *)URL;
 - (NSURL *)URLWithOriginalURL:(NSURL *)URL bindToLocalhost:(BOOL)bindToLocalhost;
+- (NSURL *)originalURLWithURL:(NSURL *)URL;
 
 @end

+ 26 - 0
Pods/KTVHTTPCache/KTVHTTPCache/Classes/KTVHCHTTPServer/KTVHCHTTPServer.m

@@ -87,6 +87,11 @@
     [self stopInternal];
 }
 
+- (BOOL)isProxyURL:(NSURL *)URL
+{
+    return [URL.absoluteString containsString:[KTVHCHTTPConnection URITokenPlaceHolder]] && [URL.absoluteString containsString:[KTVHCHTTPConnection URITokenLastPathComponent]];
+}
+
 - (NSURL *)URLWithOriginalURL:(NSURL *)URL
 {
     return [self URLWithOriginalURL:URL bindToLocalhost:YES];
@@ -112,6 +117,27 @@
     return URL;
 }
 
+- (NSURL *)originalURLWithURL:(NSURL *)URL
+{
+    if (![self isProxyURL:URL]) {
+        return URL;
+    }
+    NSArray<NSString *> *components = [URL.absoluteString componentsSeparatedByString:@"/"];
+    if (components.count < 4) {
+        return URL;
+    }
+    NSString *URLString = [[KTVHCURLTool tool] URLDecode:components[3]];
+    if (![URLString hasPrefix:@"http"]) {
+        return URL;
+    }
+    NSURL *originalURL = [NSURL URLWithString:URLString];
+    if (!originalURL) {
+        return URL;
+    }
+    KTVHCLogHTTPServer(@"%p, Return original URL\nURL : %@\noriginal URL : %@", self, URL, originalURL);
+    return originalURL;
+}
+
 #pragma mark - Internal
 
 - (BOOL)startInternal:(NSError **)error

+ 59 - 0
Pods/KTVHTTPCache/KTVHTTPCache/KTVHTTPCache.h

@@ -17,6 +17,7 @@ FOUNDATION_EXPORT const unsigned char KTVHTTPCacheVersionString[];
 #import <KTVHTTPCache/KTVHCRange.h>
 #import <KTVHTTPCache/KTVHCDataReader.h>
 #import <KTVHTTPCache/KTVHCDataLoader.h>
+#import <KTVHTTPCache/KTVHCDataHLSLoader.h>
 #import <KTVHTTPCache/KTVHCDataRequest.h>
 #import <KTVHTTPCache/KTVHCDataResponse.h>
 #import <KTVHTTPCache/KTVHCDataCacheItem.h>
@@ -28,6 +29,7 @@ FOUNDATION_EXPORT const unsigned char KTVHTTPCacheVersionString[];
 #import "KTVHCRange.h"
 #import "KTVHCDataReader.h"
 #import "KTVHCDataLoader.h"
+#import "KTVHCDataHLSLoader.h"
 #import "KTVHCDataRequest.h"
 #import "KTVHCDataResponse.h"
 #import "KTVHCDataCacheItem.h"
@@ -75,6 +77,14 @@ FOUNDATION_EXPORT const unsigned char KTVHTTPCacheVersionString[];
  */
 + (BOOL)proxyIsRunning;
 
+/**
+ *  Check if the given URL is a local proxy URL.
+ *
+ *  @param URL The URL to check.
+ *  @return YES if it's a proxy URL; otherwise, NO.
+ */
++ (BOOL)proxyIsProxyURL:(NSURL *)URL;
+
 /**
  *  Convert the URL to the proxy URL.
  *  Only accept HTTP requests coming from localhost i.e. not from the outside network.
@@ -93,6 +103,18 @@ FOUNDATION_EXPORT const unsigned char KTVHTTPCacheVersionString[];
  */
 + (NSURL *)proxyURLWithOriginalURL:(NSURL *)URL bindToLocalhost:(BOOL)bindToLocalhost;
 
+/**
+ *  Restores the original URL from a proxy URL.
+ *
+ *  This is typically used to retrieve the actual HTTP content URL
+ *  from a previously generated local proxy URL.
+ *
+ *  @param URL The proxy URL to be converted back.
+ *  @return The original URL if the input is a valid proxy URL;
+ *          otherwise, returns the input URL unchanged.
+ */
++ (NSURL *)proxyOriginalURLWithURL:(NSURL *)URL;
+
 /**
  *  Data Storage
  *
@@ -125,6 +147,16 @@ FOUNDATION_EXPORT const unsigned char KTVHTTPCacheVersionString[];
  */
 + (KTVHCDataLoader *)cacheLoaderWithRequest:(KTVHCDataRequest *)request;
 
+/**
+ *  Creates a data loader for the given HLS URL.
+ *
+ *  This loader handles data loading, caching, and proxying for HLS playback.
+ *
+ *  @param request The request of HLS content (e.g., a .m3u8 playlist).
+ *  @return A data loader instance configured for the specified request.
+ */
++ (KTVHCDataHLSLoader *)cacheHLSLoaderWithRequest:(KTVHCDataRequest *)request;
+
 /**
  *  Set the maximum cache length.
  *  If the current cache length exceeds the maximum length, it will be deleted starting with the oldest cached data.
@@ -192,6 +224,33 @@ FOUNDATION_EXPORT const unsigned char KTVHTTPCacheVersionString[];
  */
 + (void)encodeSetURLConverter:(NSURL * (^)(NSURL *URL))URLConverter;
 
+/**
+ *  HLS
+ *
+ *  This part is HLS handling module.
+ *  Contains APIs for processing HLS playlists and managing proxy behavior.
+ */
+#pragma mark - HLS
+
+/**
+ *  Set the HLS content handler.
+ *
+ *  This handler allows preprocessing of HLS content (such as m3u8 playlists)
+ *  before it is cached or served. It is typically used to rewrite certain URLs
+ *  to route through the local proxy server.
+ *
+ *  For example, if an HTTP link in the playlist should be proxied locally,
+ *  the handler can replace it with a relative path (e.g., add a `./` prefix).
+ *  Otherwise, the content can be returned unchanged.
+ *
+ *  @note This method is called frequently, such as during playlist parsing and updates.
+ *        Ensure the handler is lightweight and optimized for performance.
+ *
+ *  @param contentHandler A block that takes the original HLS content as input,
+ *                        and returns the modified content as needed.
+ */
++ (void)hlsSetContentHandler:(NSString * (^)(NSString *content))contentHandler;
+
 /**
  *  Download
  *

+ 24 - 1
Pods/KTVHTTPCache/KTVHTTPCache/KTVHTTPCache.m

@@ -11,6 +11,7 @@
 #import "KTVHCHTTPServer.h"
 #import "KTVHCDownload.h"
 #import "KTVHCURLTool.h"
+#import "KTVHCHLSTool.h"
 #import "KTVHCLog.h"
 
 @implementation KTVHTTPCache
@@ -37,6 +38,11 @@
     return [KTVHCHTTPServer server].isRunning;
 }
 
++ (BOOL)proxyIsProxyURL:(NSURL *)URL
+{
+    return [[KTVHCHTTPServer server] isProxyURL:URL];
+}
+
 + (NSURL *)proxyURLWithOriginalURL:(NSURL *)URL
 {
     return [[KTVHCHTTPServer server] URLWithOriginalURL:URL];
@@ -47,6 +53,11 @@
     return [[KTVHCHTTPServer server] URLWithOriginalURL:URL bindToLocalhost:bindToLocalhost];
 }
 
++ (NSURL *)proxyOriginalURLWithURL:(NSURL *)URL
+{
+    return [[KTVHCHTTPServer server] originalURLWithURL:URL];
+}
+
 #pragma mark - Data Storage
 
 + (NSURL *)cacheCompleteFileURLWithURL:(NSURL *)URL
@@ -64,6 +75,11 @@
     return [[KTVHCDataStorage storage] loaderWithRequest:request];
 }
 
++ (KTVHCDataHLSLoader *)cacheHLSLoaderWithRequest:(KTVHCDataRequest *)request
+{
+    return [[KTVHCDataStorage storage] HLSLoaderWithRequest:request];
+}
+
 + (void)cacheSetMaxCacheLength:(long long)maxCacheLength
 {
     [KTVHCDataStorage storage].maxCacheLength = maxCacheLength;
@@ -101,11 +117,18 @@
 
 #pragma mark - Encode
 
-+ (void)encodeSetURLConverter:(NSURL * (^)(NSURL *URL))URLConverter;
++ (void)encodeSetURLConverter:(NSURL * (^)(NSURL *URL))URLConverter
 {
     [KTVHCURLTool tool].URLConverter = URLConverter;
 }
 
+#pragma mark - HLS
+
++ (void)hlsSetContentHandler:(NSString *(^)(NSString *))contentHandler
+{
+    [KTVHCHLSTool tool].contentHandler = contentHandler;
+}
+
 #pragma mark - Download
 
 + (void)downloadSetTimeoutInterval:(NSTimeInterval)timeoutInterval

+ 8 - 0
Pods/KTVHTTPCache/README.md

@@ -119,6 +119,14 @@ loader.delegate = self;
 [loader prepare];
 ```
 
+```objc
+// For HLS content.
+KTVHCDataRequest *request= [[KTVHCDataRequest alloc] initWithURL:URL headers:nil];
+KTVHCDataHLSLoader *loader = [KTVHTTPCache cacheHLSLoaderWithRequest:request];
+loader.delegate = self;
+[loader prepare];
+```
+
 #### Activate AirPlay
 
 - For stability reasons, Local Server only accepts requests from localhost by default, which causes AirPlay to be inactive by default. This can be changed using the following API.

+ 78 - 80
Pods/Manifest.lock

@@ -1,42 +1,40 @@
 PODS:
-  - Ads-CN (6.5.0.9):
-    - Ads-CN/BUAdSDK (= 6.5.0.9)
-  - Ads-CN/BUAdSDK (6.5.0.9)
-  - ADSuyiKit (0.7.4.12031)
+  - Ads-CN/BUAdSDK (6.9.1.2)
+  - ADSuyiKit (0.7.6.02251)
   - ADSuyiLocationManager (0.2.1.01301)
   - ADSuyiNetwork (0.2.1.06291):
     - ADSuyiKit (~> 0.7.0)
-  - ADSuyiSDK (3.9.9.12031):
-    - ADSuyiKit (~> 0.7.4.12031)
+  - ADSuyiSDK (4.0.1.06132):
+    - ADSuyiKit (~> 0.7.6.02251)
     - ADSuyiLocationManager (~> 0.2.1.01301)
     - ADSuyiNetwork (~> 0.2.1.0)
-    - ADSuyiSDK/core (= 3.9.9.12031)
-  - ADSuyiSDK/ADSuyiSDKPlatforms/bu (3.9.9.12031):
-    - Ads-CN (= 6.5.0.9)
-    - ADSuyiKit (~> 0.7.4.12031)
+    - ADSuyiSDK/core (= 4.0.1.06132)
+  - ADSuyiSDK/ADSuyiSDKPlatforms/bu (4.0.1.06132):
+    - Ads-CN/BUAdSDK (= 6.9.1.2)
+    - ADSuyiKit (~> 0.7.6.02251)
     - ADSuyiLocationManager (~> 0.2.1.01301)
     - ADSuyiNetwork (~> 0.2.1.0)
     - ADSuyiSDK/core
-  - ADSuyiSDK/ADSuyiSDKPlatforms/gdt (3.9.9.12031):
-    - ADSuyiKit (~> 0.7.4.12031)
+  - ADSuyiSDK/ADSuyiSDKPlatforms/gdt (4.0.1.06132):
+    - ADSuyiKit (~> 0.7.6.02251)
     - ADSuyiLocationManager (~> 0.2.1.01301)
     - ADSuyiNetwork (~> 0.2.1.0)
     - ADSuyiSDK/core
-    - GDTMobSDK (= 4.15.10)
-  - ADSuyiSDK/ADSuyiSDKPlatforms/ks (3.9.9.12031):
-    - ADSuyiKit (~> 0.7.4.12031)
+    - GDTMobSDK (= 4.15.41)
+  - ADSuyiSDK/ADSuyiSDKPlatforms/ks (4.0.1.06132):
+    - ADSuyiKit (~> 0.7.6.02251)
     - ADSuyiLocationManager (~> 0.2.1.01301)
     - ADSuyiNetwork (~> 0.2.1.0)
     - ADSuyiSDK/core
-    - KSAdSDK (= 3.3.69.3)
-  - ADSuyiSDK/ADSuyiSDKPlatforms/tianmu (3.9.9.12031):
-    - ADSuyiKit (~> 0.7.4.12031)
+    - KSAdSDK (= 4.6.30.1)
+  - ADSuyiSDK/ADSuyiSDKPlatforms/tianmu (4.0.1.06132):
+    - ADSuyiKit (~> 0.7.6.02251)
     - ADSuyiLocationManager (~> 0.2.1.01301)
     - ADSuyiNetwork (~> 0.2.1.0)
     - ADSuyiSDK/core
-    - TianmuSDK (= 2.2.9.1)
-  - ADSuyiSDK/core (3.9.9.12031):
-    - ADSuyiKit (~> 0.7.4.12031)
+    - TianmuSDK (= 3.0.1.1)
+  - ADSuyiSDK/core (4.0.1.06132):
+    - ADSuyiKit (~> 0.7.6.02251)
     - ADSuyiLocationManager (~> 0.2.1.01301)
     - ADSuyiNetwork (~> 0.2.1.0)
   - AFNetworking (4.0.1):
@@ -66,7 +64,7 @@ PODS:
     - BaiduMapKit/Base
   - BaiduMapKit/Utils (6.6.4):
     - BaiduMapKit/Base
-  - BMKLocationKit (2.1.2)
+  - BMKLocationKit (2.1.3)
   - Bugly (2.6.1)
   - CGXVerticalMenuView-OC (1.2.2):
     - CGXVerticalMenuView-OC/CustomCollectionView (= 1.2.2)
@@ -97,17 +95,17 @@ PODS:
     - CGXVerticalMenuView-OC/MenuCustom
   - CocoaAsyncSocket (7.6.5)
   - CocoaSecurity (1.2.4)
-  - CXHAdSDK-Adapter (1.7.1):
-    - CXHAdSDK-Kit (= 1.7.0)
-  - CXHAdSDK-Kit (1.7.0)
-  - CXHAdSDK/Channel (1.7.1):
-    - CXHAdSDK-Adapter (= 1.7.1)
+  - CXHAdSDK-Adapter (1.8.9.1):
+    - CXHAdSDK-Kit (= 1.8.6)
+  - CXHAdSDK-Kit (1.8.6)
+  - CXHAdSDK/Channel (1.8.9.1):
+    - CXHAdSDK-Adapter (= 1.8.9.1)
     - CXHAdSDK/Core
     - WechatOpenSDK (= 2.0.4)
-  - CXHAdSDK/Core (1.7.1):
-    - CXHAdSDK-Adapter (= 1.7.1)
-  - CXHAdSDK/RC (1.7.1):
-    - CXHAdSDK-Adapter (= 1.7.1)
+  - CXHAdSDK/Core (1.8.9.1):
+    - CXHAdSDK-Adapter (= 1.8.9.1)
+  - CXHAdSDK/RC (1.8.9.1):
+    - CXHAdSDK-Adapter (= 1.8.9.1)
     - CXHAdSDK/Core
   - DACircularProgress (2.3.1)
   - DOUAudioStreamer (0.2.16)
@@ -121,37 +119,37 @@ PODS:
   - FMDB/Core (2.7.12)
   - FMDB/standard (2.7.12):
     - FMDB/Core
-  - GDTMobSDK (4.15.10)
-  - GKLivePhotoManager (1.0.5)
-  - GKPhotoBrowser (3.2.2):
-    - GKPhotoBrowser/Default (= 3.2.2)
-  - GKPhotoBrowser/AF (3.2.2):
+  - GDTMobSDK (4.15.41)
+  - GKLivePhotoManager (1.0.7)
+  - GKPhotoBrowser (3.2.6):
+    - GKPhotoBrowser/Default (= 3.2.6)
+  - GKPhotoBrowser/AF (3.2.6):
     - AFNetworking
     - GKLivePhotoManager
     - GKPhotoBrowser/Core
-  - GKPhotoBrowser/AVPlayer (3.2.2):
+  - GKPhotoBrowser/AVPlayer (3.2.6):
     - GKPhotoBrowser/Core
-  - GKPhotoBrowser/Core (3.2.2):
+  - GKPhotoBrowser/Core (3.2.6):
     - GKPhotoBrowser/Resources
-  - GKPhotoBrowser/Cover (3.2.2):
+  - GKPhotoBrowser/Cover (3.2.6):
     - GKPhotoBrowser/Core
-  - GKPhotoBrowser/Default (3.2.2):
+  - GKPhotoBrowser/Default (3.2.6):
     - GKPhotoBrowser/AF
     - GKPhotoBrowser/AVPlayer
     - GKPhotoBrowser/Cover
     - GKPhotoBrowser/Progress
     - GKPhotoBrowser/SD
-  - GKPhotoBrowser/Progress (3.2.2):
+  - GKPhotoBrowser/Progress (3.2.6):
     - GKPhotoBrowser/Core
     - GKSliderView
-  - GKPhotoBrowser/Resources (3.2.2)
-  - GKPhotoBrowser/SD (3.2.2):
+  - GKPhotoBrowser/Resources (3.2.6)
+  - GKPhotoBrowser/SD (3.2.6):
     - GKPhotoBrowser/Core
     - SDWebImage (~> 5.0)
   - GKSliderView (1.2.3)
-  - GTCommonSDK (3.1.9.0):
+  - GTCommonSDK (3.1.10.0):
     - ZXSDK
-  - GTSDK (3.0.9.0):
+  - GTSDK (3.0.10.0):
     - GTCommonSDK (> 3.0.9.0)
   - HappyDNS (1.0.4)
   - HWPanModal (0.9.9)
@@ -164,8 +162,8 @@ PODS:
   - JSONModel (1.8.0)
   - JXCategoryView (1.6.8)
   - JXPagingView/Pager (2.1.3)
-  - KSAdSDK (3.3.69.3)
-  - KTVHTTPCache (3.0.2):
+  - KSAdSDK (4.6.30.1)
+  - KTVHTTPCache (3.1.0):
     - CocoaAsyncSocket
   - libwebp (1.5.0):
     - libwebp/demux (= 1.5.0)
@@ -193,7 +191,7 @@ PODS:
   - pop (1.0.12)
   - Qiniu (8.5.3):
     - HappyDNS (~> 1.0.2)
-  - QMBaseLib (0.6):
+  - QMBaseLib (0.9.5):
     - FMDB (~> 2.7.5)
     - Qiniu (~> 8.5.2)
   - QMLineSDK (4.4.0):
@@ -525,27 +523,27 @@ PODS:
   - SCLAlertView-Objective-C (1.3.0)
   - SDCycleScrollView (1.82):
     - SDWebImage (>= 5.0.0)
-  - SDWebImage (5.21.0):
-    - SDWebImage/Core (= 5.21.0)
-  - SDWebImage/Core (5.21.0)
+  - SDWebImage (5.21.1):
+    - SDWebImage/Core (= 5.21.1)
+  - SDWebImage/Core (5.21.1)
   - SDWebImageWebPCoder (0.8.3):
     - libwebp (~> 1.0)
     - SDWebImage/Core (~> 5.10)
   - SGQRCode (4.1.0)
   - SocketRocket (0.6.1)
-  - TianmuSDK (2.2.9.1):
-    - ADSuyiKit (~> 0.7.4.12031)
+  - TianmuSDK (3.0.1.1):
+    - ADSuyiKit (~> 0.7.6.02251)
     - ADSuyiLocationManager (~> 0.2.1.01301)
     - ADSuyiNetwork (~> 0.2.1.0)
   - TTTAttributedLabel (1.13.4)
-  - TZImagePickerController (3.8.8):
-    - TZImagePickerController/Basic (= 3.8.8)
-    - TZImagePickerController/Location (= 3.8.8)
-  - TZImagePickerController/Basic (3.8.8)
-  - TZImagePickerController/Location (3.8.8)
+  - TZImagePickerController (3.8.9):
+    - TZImagePickerController/Basic (= 3.8.9)
+    - TZImagePickerController/Location (= 3.8.9)
+  - TZImagePickerController/Basic (3.8.9)
+  - TZImagePickerController/Location (3.8.9)
   - UICKeyChainStore (2.1.2)
   - UMCCommonLog (2.0.2)
-  - UMCommon (7.5.2):
+  - UMCommon (7.5.3):
     - UMDevice
   - UMDevice (3.4.0)
   - WebViewJavascriptBridge (6.0.3)
@@ -576,7 +574,7 @@ PODS:
   - ZXSDK (3.3.2)
 
 DEPENDENCIES:
-  - ADSuyiSDK (~> 3.9.9.12031)
+  - ADSuyiSDK (~> 4.0.1.06132)
   - ADSuyiSDK/ADSuyiSDKPlatforms/bu
   - ADSuyiSDK/ADSuyiSDKPlatforms/gdt
   - ADSuyiSDK/ADSuyiSDKPlatforms/ks
@@ -727,21 +725,21 @@ CHECKOUT OPTIONS:
     :git: https://github.com/Tencent/MLeaksFinder.git
 
 SPEC CHECKSUMS:
-  Ads-CN: 1d65518db43f7da28b47275105d56d74a88a9f1f
-  ADSuyiKit: b62039de91d6c32b2dfeb28968d3aeaa74404d2d
+  Ads-CN: 8c9ee513ca6c9b2ab3dda611e1e21fce2616f149
+  ADSuyiKit: dd87ca1bae270d84b4a96a82727148e13062c4a3
   ADSuyiLocationManager: 498421794430a1554dd85beac729221487e8394b
   ADSuyiNetwork: e3cd29320932f9a6d523a561357a2f38de83189d
-  ADSuyiSDK: 0f21bf110620d6e80527039b3efda0bdc90138f0
+  ADSuyiSDK: 6b837b7dde3c0221e17c7ef456aad399c59729b9
   AFNetworking: 3bd23d814e976cd148d7d44c3ab78017b744cd58
   BaiduMapKit: 84991811cb07b24c6ead7d59022c13245427782c
-  BMKLocationKit: 7048cb9f9e6cd21d803a71013d175fce57db7f77
+  BMKLocationKit: 79689c9898474cbad4a93a5f0cc06c8c97fa2b02
   Bugly: 217ac2ce5f0f2626d43dbaa4f70764c953a26a31
   CGXVerticalMenuView-OC: 1f743edca2b085953dd64aaf154d6baa45125c38
   CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
   CocoaSecurity: d288a6f87e0f363823d2cb83e753814a6944f71a
-  CXHAdSDK: acf3322bc40752e71a184fa4a08aa43a44924a34
-  CXHAdSDK-Adapter: 1a5862bba03e3b42a8c33a1c9e63736facf62737
-  CXHAdSDK-Kit: f01348e3426adad5a1d4a8695823a7ea24a4af01
+  CXHAdSDK: 0868ed629f5b42593c879594877c7145f4d5ba12
+  CXHAdSDK-Adapter: 73e5627c6b4c792d9150eb27aace323e47258efb
+  CXHAdSDK-Kit: 36a83708ed5a76905848bd544e9214cf95118633
   DACircularProgress: 4dd437c0fc3da5161cb289e07ac449493d41db71
   DOUAudioStreamer: c503ba2ecb9a54ff7bda0eff66963ad224f3c7dc
   FBRetainCycleDetector: 46f8179bbb1c587deee3ea838a1a3ee02acf5015
@@ -749,12 +747,12 @@ SPEC CHECKSUMS:
   FDFullscreenPopGesture: a8a620179e3d9c40e8e00256dcee1c1a27c6d0f0
   FLAnimatedImage: bbf914596368867157cc71b38a8ec834b3eeb32b
   FMDB: 728731dd336af3936ce00f91d9d8495f5718a0e6
-  GDTMobSDK: 17a7af711cf6b7c8a3a0a4edc3916dc2467877e9
-  GKLivePhotoManager: 7d5bc069382d5a4c1d44a846727b0beb08582256
-  GKPhotoBrowser: 1dc2db1effb3f3b46f993b5f9a94225fa11dd3a4
+  GDTMobSDK: d549f5d0c06c2534dbce08cfb21e2266975b7f5a
+  GKLivePhotoManager: 7fba1ae3eebbbd9323320e137a88a231bc5af5fa
+  GKPhotoBrowser: 2cec169d50d0aa029d2343ede2541e8ea01b1747
   GKSliderView: 7c6f853afeb0ae370bb8dce76ec669d6e9109d1d
-  GTCommonSDK: 5f23150656349e33595ddc544e89312085234cb7
-  GTSDK: 4392fb9f02e370c8dd3e77fa51ffc511b5ac1ac1
+  GTCommonSDK: aa0cdaada5e31c2dc173c8170127d50f16a439c7
+  GTSDK: 1a2e62b50cf265046c2e48cdb88cd3d8e62bd7ea
   HappyDNS: aefbd28cdcda93cffac64013dfe3342a2f87ed0a
   HWPanModal: b57a6717d3cdcd666bff44f9dd2a5be9f4d6f5d2
   IDMPhotoBrowser: 4bb459b1faffc228e92bccdf7c54ad6d6b7e8c37
@@ -763,8 +761,8 @@ SPEC CHECKSUMS:
   JSONModel: 02ab723958366a3fd27da57ea2af2113658762e9
   JXCategoryView: 262d503acea0b1278c79a1c25b7332ffaef4d518
   JXPagingView: afdd2e9af09c90160dd232b970d603cc6e7ddd0e
-  KSAdSDK: a43b039755299f770f7fc81cba0ebf64ae4f03a8
-  KTVHTTPCache: 5711692cdf9a5ecfe829b1e16577deb3ffe3dc86
+  KSAdSDK: 15d8613714c8f1728b0bd6d461a3d7e316e61982
+  KTVHTTPCache: a1f3c9c217be5af6985b240d660db262a0cbc18a
   libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8
   LookinServer: 1b2b61c6402ae29fa22182d48f5cd067b4e99e80
   Masonry: 678fab65091a9290e40e2832a55e7ab731aad201
@@ -776,7 +774,7 @@ SPEC CHECKSUMS:
   OpenSSL-Universal: ca89c20240633a77c776082ba76b7d90f992bf77
   pop: d582054913807fd11fd50bfe6a539d91c7e1a55a
   Qiniu: 601dc3247d9c033ab80b2b216517ec484770b5ed
-  QMBaseLib: f623741cc351ab084387a8a67d73d11a44051819
+  QMBaseLib: d3314f6cbf942d44b2a46bd836aaf9d5fd02e117
   QMLineSDK: 34188bac5127be874e7883a89563d82926c80183
   QMUIKit: 3c622fe3c55c0dccfad750634bd9ee5e7ade9a53
   ReactiveObjC: 011caa393aa0383245f2dcf9bf02e86b80b36040
@@ -784,16 +782,16 @@ SPEC CHECKSUMS:
   SAMKeychain: 483e1c9f32984d50ca961e26818a534283b4cd5c
   SCLAlertView-Objective-C: c17253cf0ce7543de3f9e4c7bd9341c1dd55c175
   SDCycleScrollView: a0d74c3384caa72bdfc81470bdbc8c14b3e1fbcf
-  SDWebImage: f84b0feeb08d2d11e6a9b843cb06d75ebf5b8868
+  SDWebImage: f29024626962457f3470184232766516dee8dfea
   SDWebImageWebPCoder: bbf46e29fb8d1980a78ad3d5e9b4123c77f10ebc
   SGQRCode: 6ad664d63f38f2842503bc5087812c5a3136d924
   SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17
-  TianmuSDK: 0b7ca4b1b41d8d5c4b6fcc5df9b5647b5b0f1b14
+  TianmuSDK: 5cd09beb042e3eabd0d262552d9b715ad3dceea7
   TTTAttributedLabel: 0a2ac7b2dd726d32a070dafb01446026b11e624f
-  TZImagePickerController: d084a7b97c82d387e7669dd86dc9a9057500aacf
+  TZImagePickerController: 456f470b5dea97b37226ec7a694994a8663340b2
   UICKeyChainStore: 85db518bb1d294366d15ec9b92a416c4e670518f
   UMCCommonLog: bea707e50c85cef4b0eb47cc5c7226bb843245ca
-  UMCommon: 72513a01ebca2dead52f2112b4d7c6196dbbe412
+  UMCommon: 3b850836e8bc162b4e7f6b527d30071ed8ea75a1
   UMDevice: dcdf7ec167387837559d149fbc7d793d984faf82
   WebViewJavascriptBridge: 7f5bc4d3581e672e8f32bd0f812d54bc69bb8e29
   WechatOpenSDK: 290989072e87b79d52225a01bb4e5e58f6f88593
@@ -806,6 +804,6 @@ SPEC CHECKSUMS:
   ZFPlayer: 5cf39e8d9f0c2394a014b0db4767b5b5a6bffe13
   ZXSDK: 786338c0a18e98e03eda00699c3bfd2700b97117
 
-PODFILE CHECKSUM: 91589f99f96e2e8a34bb1a1f47d782be894858f2
+PODFILE CHECKSUM: 6cd104cadedfa5962f8461c70d6c9e12ee796cab
 
 COCOAPODS: 1.15.2

文件差异内容过多而无法显示
+ 5715 - 5725
Pods/Pods.xcodeproj/project.pbxproj


+ 2 - 3
Pods/QMBaseLib/QMBaseLib.framework/Headers/QMNetworkManager.h

@@ -19,15 +19,14 @@
 
 @property (nonatomic, strong) QMNetworkResponseSerializer * _Nullable responseSerialzer;
 
-+ (instancetype _Nullable )networkManger;
-
++ (instancetype _Nullable )networkManger:(nullable NSURL *)url;
 /**
  实例化方法
 
  @param url 网络请求地址
  @return 返回实例化对象
  */
-- (instancetype _Nullable )initWithBaseURL:(nullable NSURL *)url;
+//- (instancetype _Nullable )initWithBaseURL:(nullable NSURL *)url;
 
 /**
  创建一个POST请求

二进制
Pods/QMBaseLib/QMBaseLib.framework/Info.plist


+ 1 - 1
Pods/QMBaseLib/QMBaseLib.framework/Modules/module.modulemap

@@ -1,6 +1,6 @@
 framework module QMBaseLib {
   umbrella header "QMBaseLib.h"
-
   export *
+
   module * { export * }
 }

二进制
Pods/QMBaseLib/QMBaseLib.framework/QMBaseLib


+ 1 - 1
Pods/QMBaseLib/README.md

@@ -6,4 +6,4 @@ QMBaseLib是容联·七陌 cc平台iOS一款在线客服基类库SDK
 
 cocoapods 管理
 
-pod 'QMBaseLib', '~> 0.6'
+pod 'QMBaseLib', '~> 0.9.5'

+ 1 - 1
Pods/SDWebImage/SDWebImage/Core/SDAnimatedImage.h

@@ -76,7 +76,7 @@ NS_SWIFT_NONISOLATED
 // @note Before 5.19, these initializer will return nil for static image (when all candidate SDAnimatedImageCoder returns nil instance), like JPEG data. After 5.19, these initializer will retry for static image as well, so JPEG data will return non-nil instance. For vector image(PDF/SVG), always return nil.
 // @note When the animated image frame count <= 1, all the `SDAnimatedImageProvider` protocol methods will return nil or 0 value, you'd better check the frame count before usage and keep fallback.
 + (nullable instancetype)imageNamed:(nonnull NSString *)name; // Cache in memory, no Asset Catalog support
-#if __has_include(<UIKit/UITraitCollection.h>)
+#if __has_include(<UIKit/UITraitCollection.h>) && !SD_WATCH
 + (nullable instancetype)imageNamed:(nonnull NSString *)name inBundle:(nullable NSBundle *)bundle compatibleWithTraitCollection:(nullable UITraitCollection *)traitCollection; // Cache in memory, no Asset Catalog support
 #else
 + (nullable instancetype)imageNamed:(nonnull NSString *)name inBundle:(nullable NSBundle *)bundle; // Cache in memory, no Asset Catalog support

+ 2 - 2
Pods/SDWebImage/SDWebImage/Core/SDAnimatedImage.m

@@ -44,14 +44,14 @@ static CGFloat SDImageScaleFromPath(NSString *string) {
 
 #pragma mark - UIImage override method
 + (instancetype)imageNamed:(NSString *)name {
-#if __has_include(<UIKit/UITraitCollection.h>)
+#if __has_include(<UIKit/UITraitCollection.h>) && !SD_WATCH
     return [self imageNamed:name inBundle:nil compatibleWithTraitCollection:nil];
 #else
     return [self imageNamed:name inBundle:nil];
 #endif
 }
 
-#if __has_include(<UIKit/UITraitCollection.h>)
+#if __has_include(<UIKit/UITraitCollection.h>) && !SD_WATCH
 + (instancetype)imageNamed:(NSString *)name inBundle:(NSBundle *)bundle compatibleWithTraitCollection:(UITraitCollection *)traitCollection {
 #if SD_VISION
     if (!traitCollection) {

+ 1 - 0
Pods/SDWebImage/SDWebImage/Core/SDImageCoder.h

@@ -11,6 +11,7 @@
 #import "NSData+ImageContentType.h"
 #import "SDImageFrame.h"
 
+/// Image Decoding/Encoding Options
 typedef NSString * SDImageCoderOption NS_STRING_ENUM;
 typedef NSDictionary<SDImageCoderOption, id> SDImageCoderOptions;
 typedef NSMutableDictionary<SDImageCoderOption, id> SDImageCoderMutableOptions;

+ 1 - 1
Pods/SDWebImage/SDWebImage/Core/SDImageLoader.h

@@ -59,7 +59,7 @@ FOUNDATION_EXPORT id<SDProgressiveImageCoder> _Nullable SDImageLoaderGetProgress
 
 /**
  This function set the progressive decoder for current loading operation. If no progressive decoding is happended, pass nil.
- @param operation The loading operation to associate the progerssive decoder.
+ @param progressiveCoder The loading operation to associate the progerssive decoder.
  */
 FOUNDATION_EXPORT void SDImageLoaderSetProgressiveCoder(id<SDWebImageOperation> _Nonnull operation, id<SDProgressiveImageCoder> _Nullable progressiveCoder);
 

+ 1 - 0
Pods/SDWebImage/SDWebImage/Core/SDWebImageDefine.h

@@ -9,6 +9,7 @@
 #import "SDWebImageCompat.h"
 
 typedef void(^SDWebImageNoParamsBlock)(void);
+/// Image Loading context option
 typedef NSString * SDWebImageContextOption NS_EXTENSIBLE_STRING_ENUM;
 typedef NSDictionary<SDWebImageContextOption, id> SDWebImageContext;
 typedef NSMutableDictionary<SDWebImageContextOption, id> SDWebImageMutableContext;

+ 2 - 2
Pods/SDWebImage/SDWebImage/Core/SDWebImageManager.h

@@ -162,7 +162,7 @@ SDWebImageManager *manager = [SDWebImageManager sharedManager];
  @note If you use `transformer`, `cacheKeyFilter` or `cacheSerializer` property of manager, the input context option already apply those properties before passed. This options processor is a better replacement for those property in common usage.
  For example, you can control the global options, based on the URL or original context option like the below code.
  
- @code
+ * @code
  SDWebImageManager.sharedManager.optionsProcessor = [SDWebImageOptionsProcessor optionsProcessorWithBlock:^SDWebImageOptionsResult * _Nullable(NSURL * _Nullable url, SDWebImageOptions options, SDWebImageContext * _Nullable context) {
      // Only do animation on `SDAnimatedImageView`
      if (!context[SDWebImageContextAnimatedImageClass]) {
@@ -179,7 +179,7 @@ SDWebImageManager *manager = [SDWebImageManager sharedManager];
  
      return [[SDWebImageOptionsResult alloc] initWithOptions:options context:context];
  }];
- @endcode
+ * @endcode
  */
 @property (nonatomic, strong, nullable) id<SDWebImageOptionsProcessor> optionsProcessor;
 

+ 2 - 0
Pods/SDWebImage/SDWebImage/Core/UIImage+Transform.m

@@ -536,6 +536,7 @@ static inline CGImageRef _Nullable SDCreateCGImageFromCIImage(CIImage * _Nonnull
 
 #pragma mark - Image Blending
 
+#if SD_UIKIT || SD_MAC
 static NSString * _Nullable SDGetCIFilterNameFromBlendMode(CGBlendMode blendMode) {
     // CGBlendMode: https://developer.apple.com/library/archive/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_images/dq_images.html#//apple_ref/doc/uid/TP30001066-CH212-CJBIJEFG
     // CIFilter: https://developer.apple.com/library/archive/documentation/GraphicsImaging/Reference/CoreImageFilterReference/index.html#//apple_ref/doc/uid/TP30000136-SW71
@@ -625,6 +626,7 @@ static NSString * _Nullable SDGetCIFilterNameFromBlendMode(CGBlendMode blendMode
     }
     return filterName;
 }
+#endif
 
 - (nullable UIImage *)sd_tintedImageWithColor:(nonnull UIColor *)tintColor {
     return [self sd_tintedImageWithColor:tintColor blendMode:kCGBlendModeSourceIn];

+ 17 - 4
Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZAssetCell.m

@@ -436,10 +436,23 @@
 
 - (void)layoutSubviews {
     [super layoutSubviews];
-    _selectedCountButton.frame = CGRectMake(self.contentView.tz_width - 24, 23, 24, 24);
+    
+    CGFloat selectedCountButtonX;
+    CGFloat titleLabelX;
+    CGFloat posterImageViewX;
+    if ([TZCommonTools tz_isRightToLeftLayout]) {
+        selectedCountButtonX = 24;
+        titleLabelX = 24;
+        posterImageViewX = self.contentView.tz_width - 70;
+    } else {
+        selectedCountButtonX = self.contentView.tz_width - 24;
+        titleLabelX = 80;
+        posterImageViewX = 0;
+    }
+    _selectedCountButton.frame = CGRectMake(selectedCountButtonX, 23, 24, 24);
     NSInteger titleHeight = ceil(self.titleLabel.font.lineHeight);
-    self.titleLabel.frame = CGRectMake(80, (self.tz_height - titleHeight) / 2, self.tz_width - 80 - 50, titleHeight);
-    self.posterImageView.frame = CGRectMake(0, 0, 70, 70);
+    self.titleLabel.frame = CGRectMake(titleLabelX, (self.tz_height - titleHeight) / 2, self.tz_width - 80 - 50, titleHeight);
+    self.posterImageView.frame = CGRectMake(posterImageViewX, 0, 70, 70);
     
     if (self.albumCellDidLayoutSubviewsBlock) {
         self.albumCellDidLayoutSubviewsBlock(self, _posterImageView, _titleLabel);
@@ -472,7 +485,7 @@
         } else {
             titleLabel.textColor = [UIColor blackColor];
         }
-        titleLabel.textAlignment = NSTextAlignmentLeft;
+        titleLabel.textAlignment = NSTextAlignmentNatural;
         [self.contentView addSubview:titleLabel];
         _titleLabel = titleLabel;
     }

+ 14 - 6
Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZGifPhotoPreviewController.m

@@ -19,6 +19,7 @@
 @interface TZGifPhotoPreviewController () {
     UIView *_toolBar;
     UIButton *_doneButton;
+    UILabel *_byteLabel;
     UIProgressView *_progress;
     
     TZPhotoPreviewView *_previewView;
@@ -85,14 +86,14 @@
     }
     [_toolBar addSubview:_doneButton];
     
-    UILabel *byteLabel = [[UILabel alloc] init];
-    byteLabel.textColor = [UIColor whiteColor];
-    byteLabel.font = [UIFont systemFontOfSize:13];
-    byteLabel.frame = CGRectMake(10, 0, 100, 44);
+    _byteLabel = [[UILabel alloc] init];
+    _byteLabel.textColor = [UIColor whiteColor];
+    _byteLabel.font = [UIFont systemFontOfSize:13];
+    __weak typeof(_byteLabel) byteLabel = _byteLabel;
     [[TZImageManager manager] getPhotosBytesWithArray:@[_model] completion:^(NSString *totalBytes) {
         byteLabel.text = totalBytes;
     }];
-    [_toolBar addSubview:byteLabel];
+    [_toolBar addSubview:_byteLabel];
     
     [self.view addSubview:_toolBar];
     
@@ -119,7 +120,14 @@
     CGFloat toolBarHeight = 44 + [TZCommonTools tz_safeAreaInsets].bottom;
     _toolBar.frame = CGRectMake(0, self.view.tz_height - toolBarHeight, self.view.tz_width, toolBarHeight);
     [_doneButton sizeToFit];
-    _doneButton.frame = CGRectMake(self.view.tz_width - _doneButton.tz_width - 12, 0, MAX(44, _doneButton.tz_width), 44);
+    
+    if ([TZCommonTools tz_isRightToLeftLayout]) {
+        _doneButton.frame = CGRectMake(12, 0, MAX(44, _doneButton.tz_width), 44);
+        _byteLabel.frame = CGRectMake(self.view.tz_width - 100 - 10, 0, 100, 44);
+    } else {
+        _doneButton.frame = CGRectMake(self.view.tz_width - _doneButton.tz_width - 12, 0, MAX(44, _doneButton.tz_width), 44);
+        _byteLabel.frame = CGRectMake(10, 0, 100, 44);
+    }
     
     TZImagePickerController *tzImagePickerVc = (TZImagePickerController *)self.navigationController;
     if (tzImagePickerVc.gifPreviewPageDidLayoutSubviewsBlock) {

+ 1 - 1
Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImageManager.m

@@ -879,7 +879,7 @@ static dispatch_once_t onceToken;
 
 /// 缩放图片至新尺寸
 - (UIImage *)scaleImage:(UIImage *)image toSize:(CGSize)size {
-    if (image.size.width > size.width) {
+    if (image.size.width > size.width && size.width > 0 && size.height > 0) {
         UIGraphicsBeginImageContext(size);
         [image drawInRect:CGRectMake(0, 0, size.width, size.height)];
         UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();

+ 2 - 1
Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.h

@@ -4,7 +4,7 @@
 //
 //  Created by 谭真 on 15/12/24.
 //  Copyright © 2015年 谭真. All rights reserved.
-//  version 3.8.8 - 2024.10.27
+//  version 3.8.9 - 2025.5.27
 //  更多信息,请前往项目的github地址:https://github.com/banchichen/TZImagePickerController
 
 /*
@@ -375,6 +375,7 @@
 + (void)configBarButtonItem:(UIBarButtonItem *)item tzImagePickerVc:(TZImagePickerController *)tzImagePickerVc;
 + (BOOL)isICloudSyncError:(NSError *)error;
 + (BOOL)isAssetNotSelectable:(TZAssetModel *)model tzImagePickerVc:(TZImagePickerController *)tzImagePickerVc;
++ (UICollectionViewFlowLayout *)tz_rtlFlowLayout;
 @end
 
 

+ 15 - 1
Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZImagePickerController.m

@@ -4,7 +4,7 @@
 //
 //  Created by 谭真 on 15/12/24.
 //  Copyright © 2015年 谭真. All rights reserved.
-//  version 3.8.8 - 2024.10.27
+//  version 3.8.9 - 2025.5.27
 //  更多信息,请前往项目的github地址:https://github.com/banchichen/TZImagePickerController
 
 #import "TZImagePickerController.h"
@@ -942,6 +942,16 @@
 @end
 
 
+// 适配RTL的UICollectionViewFlowLayout
+@interface TZRTLLayout : UICollectionViewFlowLayout
+@end
+
+@implementation TZRTLLayout
+- (BOOL)flipsHorizontallyInOppositeLayoutDirection {
+    return [TZCommonTools tz_isRightToLeftLayout];
+}
+@end
+
 @implementation TZCommonTools
 
 + (UIEdgeInsets)tz_safeAreaInsets {
@@ -1059,6 +1069,10 @@
     return notSelectable;
 }
 
++ (UICollectionViewFlowLayout *)tz_rtlFlowLayout {
+    return [[TZRTLLayout alloc] init];
+}
+
 @end
 
 

+ 28 - 8
Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPickerController.m

@@ -175,7 +175,7 @@ static CGFloat itemMargin = 5;
 
 - (void)configCollectionView {
     if (!_collectionView) {
-        _layout = [[UICollectionViewFlowLayout alloc] init];
+        _layout = [TZCommonTools tz_rtlFlowLayout];
         _collectionView = [[TZCollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:_layout];
         if (@available(iOS 13.0, *)) {
             _collectionView.backgroundColor = UIColor.tertiarySystemBackgroundColor;
@@ -290,7 +290,7 @@ static CGFloat itemMargin = 5;
         _originalPhotoButton.enabled = tzImagePickerVc.selectedModels.count > 0;
         
         _originalPhotoLabel = [[UILabel alloc] init];
-        _originalPhotoLabel.textAlignment = NSTextAlignmentLeft;
+        _originalPhotoLabel.textAlignment = NSTextAlignmentNatural;
         _originalPhotoLabel.font = [UIFont systemFontOfSize:16];
         if (@available(iOS 13.0, *)) {
             _originalPhotoLabel.textColor = [UIColor labelColor];
@@ -369,8 +369,11 @@ static CGFloat itemMargin = 5;
     CGFloat collectionViewHeight = 0;
     CGFloat naviBarHeight = self.navigationController.navigationBar.tz_height;
     CGFloat footerTipViewH = _authorizationLimited ? 80 : 0;
+    
     BOOL isStatusBarHidden = [UIApplication sharedApplication].isStatusBarHidden;
     BOOL isFullScreen = self.view.tz_height == [UIScreen mainScreen].bounds.size.height;
+    BOOL isRTL = [TZCommonTools tz_isRightToLeftLayout];
+    
     CGFloat toolBarHeight = 50 + [TZCommonTools tz_safeAreaInsets].bottom;
     if (self.navigationController.navigationBar.isTranslucent) {
         top = naviBarHeight;
@@ -409,16 +412,33 @@ static CGFloat itemMargin = 5;
     if (!tzImagePickerVc.allowPreview) {
         previewWidth = 0.0;
     }
-    _previewButton.frame = CGRectMake(10, 3, previewWidth, 44);
-    _previewButton.tz_width = !tzImagePickerVc.showSelectBtn ? 0 : previewWidth;
+    previewWidth = !tzImagePickerVc.showSelectBtn ? 0 : previewWidth;
+    if (isRTL) {
+        _previewButton.frame = CGRectMake(self.view.tz_width - previewWidth - 10, 3, previewWidth, 44);
+    } else {
+        _previewButton.frame = CGRectMake(10, 3, previewWidth, 44);
+    }
+    
     if (tzImagePickerVc.allowPickingOriginalPhoto) {
         CGFloat fullImageWidth = [tzImagePickerVc.fullImageBtnTitleStr boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX) options:NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:13]} context:nil].size.width;
-        _originalPhotoButton.frame = CGRectMake(CGRectGetMaxX(_previewButton.frame), 0, fullImageWidth + 56, 50);
-        _originalPhotoLabel.frame = CGRectMake(fullImageWidth + 46, 0, 80, 50);
+        if (isRTL) {
+            _originalPhotoButton.frame = CGRectMake(_previewButton.frame.origin.x - (fullImageWidth + 56), 0, fullImageWidth + 56, 50);
+            _originalPhotoLabel.frame = CGRectMake(-80 + 11, 0, 80, 50);
+        } else {
+            _originalPhotoButton.frame = CGRectMake(CGRectGetMaxX(_previewButton.frame), 0, fullImageWidth + 56, 50);
+            _originalPhotoLabel.frame = CGRectMake(fullImageWidth + 46, 0, 80, 50);
+        }
     }
+    
     [_doneButton sizeToFit];
-    _doneButton.frame = CGRectMake(self.view.tz_width - _doneButton.tz_width - 12, 0, MAX(44, _doneButton.tz_width), 50);
-    _numberImageView.frame = CGRectMake(_doneButton.tz_left - 24 - 5, 13, 24, 24);
+    CGFloat donwButtonWidth = MAX(44, _doneButton.tz_width);
+    if (isRTL) {
+        _doneButton.frame = CGRectMake(12, 0, donwButtonWidth, 50);
+        _numberImageView.frame = CGRectMake(_doneButton.tz_right + 5, 13, 24, 24);
+    } else {
+        _doneButton.frame = CGRectMake(self.view.tz_width - donwButtonWidth - 12, 0, donwButtonWidth, 50);
+        _numberImageView.frame = CGRectMake(_doneButton.tz_left - 24 - 5, 13, 24, 24);
+    }
     _numberLabel.frame = _numberImageView.frame;
     _divideLine.frame = CGRectMake(0, 0, self.view.tz_width, 1);
     

+ 5 - 1
Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPreviewCell.m

@@ -237,7 +237,7 @@
         [self resizeSubviews];
         if (self.imageView.tz_height && self.allowCrop) {
             CGFloat scale = MAX(self.cropRect.size.width / self.imageView.tz_width, self.cropRect.size.height / self.imageView.tz_height);
-            if (self.scaleAspectFillCrop && scale > 1) { // 如果设置图片缩放裁剪并且图片需要缩放
+            if (self.scaleAspectFillCrop && scale != 1) { // 如果设置图片缩放裁剪并且图片需要缩放
                 CGFloat multiple = self.scrollView.maximumZoomScale / self.scrollView.minimumZoomScale;
                 self.scrollView.minimumZoomScale = scale;
                 self.scrollView.maximumZoomScale = scale * MAX(multiple, 2);
@@ -318,6 +318,10 @@
         if (aspectRatio > 1.5) {
             self.scrollView.maximumZoomScale *= aspectRatio / 1.5;
         }
+        // 优化超长图片的显示
+        else if (aspectRatio < 0.667) {
+            self.scrollView.maximumZoomScale *= 0.667 / aspectRatio;
+        }
     }
 }
 

+ 33 - 11
Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZPhotoPreviewController.m

@@ -149,7 +149,7 @@
         [_originalPhotoButton setImage:_tzImagePickerVc.photoOriginSelImage forState:UIControlStateSelected];
         
         _originalPhotoLabel = [[UILabel alloc] init];
-        _originalPhotoLabel.textAlignment = NSTextAlignmentLeft;
+        _originalPhotoLabel.textAlignment = NSTextAlignmentNatural;
         _originalPhotoLabel.font = [UIFont systemFontOfSize:13];
         _originalPhotoLabel.textColor = [UIColor whiteColor];
         _originalPhotoLabel.backgroundColor = [UIColor clearColor];
@@ -194,7 +194,7 @@
 }
 
 - (void)configCollectionView {
-    _layout = [[UICollectionViewFlowLayout alloc] init];
+    _layout = [TZCommonTools tz_rtlFlowLayout];
     _layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
     _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:_layout];
     _collectionView.backgroundColor = [UIColor blackColor];
@@ -260,12 +260,22 @@
     TZImagePickerController *_tzImagePickerVc = (TZImagePickerController *)self.navigationController;
     
     BOOL isFullScreen = self.view.tz_height == [UIScreen mainScreen].bounds.size.height;
+    BOOL isRTL = [TZCommonTools tz_isRightToLeftLayout];
+    
     CGFloat statusBarHeight = isFullScreen ? [TZCommonTools tz_statusBarHeight] : 0;
     CGFloat statusBarHeightInterval = isFullScreen ? (statusBarHeight - 20) : 0;
     CGFloat naviBarHeight = statusBarHeight + _tzImagePickerVc.navigationBar.tz_height;
     _naviBar.frame = CGRectMake(0, 0, self.view.tz_width, naviBarHeight);
-    _backButton.frame = CGRectMake(10, 10 + statusBarHeightInterval, 44, 44);
-    _selectButton.frame = CGRectMake(self.view.tz_width - 56, 10 + statusBarHeightInterval, 44, 44);
+    
+    if (isRTL) {
+        _backButton.frame = CGRectMake(self.view.tz_width - 54, 10 + statusBarHeightInterval, 44, 44);
+        _backButton.layer.transform = CATransform3DMakeRotation(M_PI, 0, 1, 0);
+        _selectButton.frame = CGRectMake(12, 10 + statusBarHeightInterval, 44, 44);
+    } else {
+        _backButton.frame = CGRectMake(10, 10 + statusBarHeightInterval, 44, 44);
+        _selectButton.frame = CGRectMake(self.view.tz_width - 56, 10 + statusBarHeightInterval, 44, 44);
+    }
+    
     _indexLabel.frame = _selectButton.frame;
     
     _layout.itemSize = CGSizeMake(self.view.tz_width + 20, self.view.tz_height);
@@ -286,12 +296,23 @@
     _toolBar.frame = CGRectMake(0, toolBarTop, self.view.tz_width, toolBarHeight);
     if (_tzImagePickerVc.allowPickingOriginalPhoto) {
         CGFloat fullImageWidth = [_tzImagePickerVc.fullImageBtnTitleStr boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX) options:NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:13]} context:nil].size.width;
-        _originalPhotoButton.frame = CGRectMake(0, 0, fullImageWidth + 56, 44);
-        _originalPhotoLabel.frame = CGRectMake(fullImageWidth + 42, 0, 80, 44);
+        if (isRTL) {
+            _originalPhotoButton.frame = CGRectMake(self.view.tz_width - (fullImageWidth + 56), 0, fullImageWidth + 56, 44);
+            _originalPhotoLabel.frame = CGRectMake(-80 + 15, 0, 80, 44);
+        } else {
+            _originalPhotoButton.frame = CGRectMake(0, 0, fullImageWidth + 56, 44);
+            _originalPhotoLabel.frame = CGRectMake(fullImageWidth + 42, 0, 80, 44);
+        }
     }
+    
     [_doneButton sizeToFit];
-    _doneButton.frame = CGRectMake(self.view.tz_width - _doneButton.tz_width - 12, 0, MAX(44, _doneButton.tz_width), 44);
-    _numberImageView.frame = CGRectMake(_doneButton.tz_left - 24 - 5, 10, 24, 24);
+    if (isRTL) {
+        _doneButton.frame = CGRectMake(12, 0, MAX(44, _doneButton.tz_width), 44);
+        _numberImageView.frame = CGRectMake(_doneButton.tz_right + 5, 10, 24, 24);
+    } else {
+        _doneButton.frame = CGRectMake(self.view.tz_width - _doneButton.tz_width - 12, 0, MAX(44, _doneButton.tz_width), 44);
+        _numberImageView.frame = CGRectMake(_doneButton.tz_left - 24 - 5, 10, 24, 24);
+    }
     _numberLabel.frame = _numberImageView.frame;
     
     [self configCropView];
@@ -651,9 +672,10 @@
     }];
 }
 
-- (NSInteger)currentIndex {
-    return [TZCommonTools tz_isRightToLeftLayout] ? self.models.count - _currentIndex - 1 : _currentIndex;
-}
+// TZRTLLayout已经自动适配,无需手动换算
+//- (NSInteger)currentIndex {
+//    return [TZCommonTools tz_isRightToLeftLayout] ? self.models.count - _currentIndex - 1 : _currentIndex;
+//}
 
 /// 选中/取消选中某张照片
 - (void)setAsset:(PHAsset *)asset isSelect:(BOOL)isSelect {

+ 19 - 5
Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZVideoCropController.m

@@ -141,10 +141,10 @@
     layout.itemSize = CGSizeMake(_itemW, _itemW * 2);
     layout.minimumLineSpacing = 0;
     layout.minimumInteritemSpacing = 0;
+    layout.sectionInset = UIEdgeInsetsMake(0, VideoEditLeftMargin + PanImageWidth, 0, VideoEditLeftMargin + PanImageWidth);
     _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
     _collectionView.dataSource = self;
     _collectionView.delegate = self;
-    _collectionView.contentInset = UIEdgeInsetsMake(0, VideoEditLeftMargin + PanImageWidth, 0, VideoEditLeftMargin + PanImageWidth);
     _collectionView.clipsToBounds = NO;
     _collectionView.showsHorizontalScrollIndicator = NO;
     _collectionView.alwaysBounceHorizontal = YES;
@@ -179,10 +179,17 @@
     CGFloat toolBarHeight = 44 + [TZCommonTools tz_safeAreaInsets].bottom;
     CGFloat doneButtonWidth = [_doneButton.currentTitle boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX) options:NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:16]} context:nil].size.width;
     doneButtonWidth = MAX(44, doneButtonWidth);
-    _cancelButton.frame = CGRectMake(12, self.view.tz_height - toolBarHeight, 44, 44);
+    
     [_cancelButton sizeToFit];
-    _cancelButton.tz_height = 44;
-    _doneButton.frame = CGRectMake(self.view.tz_width - doneButtonWidth - 12, self.view.tz_height - toolBarHeight, doneButtonWidth, 44);
+    
+    if ([TZCommonTools tz_isRightToLeftLayout]) {
+        _doneButton.frame = CGRectMake(12, self.view.tz_height - toolBarHeight, doneButtonWidth, 44);
+        _cancelButton.frame = CGRectMake(self.view.tz_width - _cancelButton.tz_width - 12, self.view.tz_height - toolBarHeight, _cancelButton.tz_width, 44);
+    } else {
+        _doneButton.frame = CGRectMake(self.view.tz_width - doneButtonWidth - 12, self.view.tz_height - toolBarHeight, doneButtonWidth, 44);
+        _cancelButton.frame = CGRectMake(12, self.view.tz_height - toolBarHeight, _cancelButton.tz_width, 44);
+    }
+    
     _playButton.frame = CGRectMake(0, statusBarAndNaviBarHeight, self.view.tz_width, self.view.tz_height - statusBarAndNaviBarHeight - toolBarHeight);
     
     CGFloat collectionViewH = (self.view.tz_width - VideoEditLeftMargin * 2 - 2 * PanImageWidth) / 10.0 * 2;
@@ -264,7 +271,12 @@
 
 - (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
     TZVideoPictureCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"TZVideoPictureCell" forIndexPath:indexPath];
-    cell.imgView.image = self.videoImgArray[indexPath.item];
+    // 在RTL环境下,普通的UICollectionViewFlowLayout的cell是从右到左排列的,所以这里【需要】反向取值
+    if ([TZCommonTools tz_isRightToLeftLayout]) {
+        cell.imgView.image = self.videoImgArray[self.videoImgArray.count - 1 - indexPath.item];
+    } else {
+        cell.imgView.image = self.videoImgArray[indexPath.item];
+    }
     return cell;
 }
 
@@ -272,6 +284,8 @@
 
 - (void)scrollViewDidScroll:(UIScrollView *)scrollView {
     if (!_isDraging) return;
+    
+    // 在RTL环境下,普通的UICollectionViewFlowLayout的cell虽然是从右到左排列的,但是contentOffset依旧是从左到右的,所以这里【不需要】反向取值
     CGFloat offsetX = scrollView.contentOffset.x;
     if (offsetX - _collectionViewBeginOffsetX >= self.view.tz_width) {
         [self.collectionView setContentOffset:CGPointMake(self.view.tz_width + _collectionViewBeginOffsetX, 0) animated:NO];

+ 8 - 1
Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZVideoEditedPreviewController.m

@@ -88,7 +88,14 @@
     CGFloat toolBarHeight = 44 + [TZCommonTools tz_safeAreaInsets].bottom;
     _toolBar.frame = CGRectMake(0, self.view.tz_height - toolBarHeight, self.view.tz_width, toolBarHeight);
     [_doneButton sizeToFit];
-    _doneButton.frame = CGRectMake(self.view.tz_width - _doneButton.tz_width - 12, 0, MAX(44, _doneButton.tz_width), 44);
+    
+    CGFloat doneButtonWidth = MAX(44, _doneButton.tz_width);
+    if ([TZCommonTools tz_isRightToLeftLayout]) {
+        _doneButton.frame = CGRectMake(12, 0, doneButtonWidth, 44);
+    } else {
+        _doneButton.frame = CGRectMake(self.view.tz_width - doneButtonWidth - 12, 0, doneButtonWidth, 44);
+    }
+    
     _playButton.frame = CGRectMake(0, statusBarAndNaviBarHeight, self.view.tz_width, self.view.tz_height - statusBarAndNaviBarHeight - toolBarHeight);
     _playerLayer.frame = self.view.bounds;
 }

+ 12 - 3
Pods/TZImagePickerController/TZImagePickerController/TZImagePickerController/TZVideoPlayerController.m

@@ -170,18 +170,27 @@
     TZImagePickerController *tzImagePickerVc = (TZImagePickerController *)self.navigationController;
     
     BOOL isFullScreen = self.view.tz_height == [UIScreen mainScreen].bounds.size.height;
+    BOOL isRTL = [TZCommonTools tz_isRightToLeftLayout];
+    
     CGFloat statusBarHeight = isFullScreen ? [TZCommonTools tz_statusBarHeight] : 0;
     CGFloat statusBarAndNaviBarHeight = statusBarHeight + self.navigationController.navigationBar.tz_height;
     _playerLayer.frame = self.view.bounds;
     CGFloat toolBarHeight = 44 + [TZCommonTools tz_safeAreaInsets].bottom;
     _toolBar.frame = CGRectMake(0, self.view.tz_height - toolBarHeight, self.view.tz_width, toolBarHeight);
     [_doneButton sizeToFit];
-    _doneButton.frame = CGRectMake(self.view.tz_width - _doneButton.tz_width - 12, 0, MAX(44, _doneButton.tz_width), 44);
+    if (isRTL) {
+        _doneButton.frame = CGRectMake(12, 0, MAX(44, _doneButton.tz_width), 44);
+    } else {
+        _doneButton.frame = CGRectMake(self.view.tz_width - _doneButton.tz_width - 12, 0, MAX(44, _doneButton.tz_width), 44);
+    }
     _playButton.frame = CGRectMake(0, statusBarAndNaviBarHeight, self.view.tz_width, self.view.tz_height - statusBarAndNaviBarHeight - toolBarHeight);
     if (tzImagePickerVc.allowEditVideo) {
-        _editButton.frame = CGRectMake(12, 0, 44, 44);
         [_editButton sizeToFit];
-        _editButton.tz_height = 44;
+        if (isRTL) {
+            _editButton.frame = CGRectMake(self.view.tz_width - _editButton.tz_width - 12, 0, _editButton.tz_width, 44);
+        } else {
+            _editButton.frame = CGRectMake(12, 0, _editButton.tz_width, 44);
+        }
     }
     if (tzImagePickerVc.videoPreviewPageDidLayoutSubviewsBlock) {
         tzImagePickerVc.videoPreviewPageDidLayoutSubviewsBlock(_playButton, _toolBar, _editButton, _doneButton);

+ 1 - 3
Pods/Target Support Files/ADSuyiSDK/ADSuyiSDK.debug.xcconfig

@@ -2,9 +2,8 @@ BUILD_LIBRARY_FOR_DISTRIBUTION = YES
 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
 CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/ADSuyiSDK
 EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
-FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/ADSuyiKit/ADSuyiKit/Classes" "${PODS_ROOT}/ADSuyiLocationManager/ADSuyiLocationManager/Classes" "${PODS_ROOT}/ADSuyiNetwork/ADSuyiNetwork/Classes" "${PODS_ROOT}/ADSuyiSDK/ADSuyiSDK/Classes/bu" "${PODS_ROOT}/ADSuyiSDK/ADSuyiSDK/Classes/core" "${PODS_ROOT}/ADSuyiSDK/ADSuyiSDK/Classes/gdt" "${PODS_ROOT}/ADSuyiSDK/ADSuyiSDK/Classes/ks" "${PODS_ROOT}/ADSuyiSDK/ADSuyiSDK/Classes/tianmu" "${PODS_ROOT}/Ads-CN/SDK" "${PODS_ROOT}/KSAdSDK" "${PODS_ROOT}/TianmuSDK/TianmuSDK/Classes" "${PODS_XCFRAMEWORKS_BUILD_DIR}/ADSuyiKit" "${PODS_XCFRAMEWORKS_BUILD_DIR}/ADSuyiLocationManager" "${PODS_XCFRAMEWORKS_BUILD_DIR}/ADSuyiNetwork" "${PODS_XCFRAMEWORKS_BUILD_DIR}/ADSuyiSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/ADSuyiSDK/ADSuyiSDKPlatforms/bu" "${PODS_XCFRAMEWORKS_BUILD_DIR}/ADSuyiSDK/ADSuyiSDKPlatforms/gdt" "${PODS_XCFRAMEWORKS_BUILD_DIR}/ADSuyiSDK/ADSuyiSDKPlatforms/ks" "${PODS_XCFRAMEWORKS_BUILD_DIR}/ADSuyiSDK/ADSuyiSDKPlatforms/tianmu" "${PODS_XCFRAMEWORKS_BUILD_DIR}/Ads-CN/BUAdSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/KSAdSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/TianmuSDK"
+FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/ADSuyiKit/ADSuyiKit/Classes" "${PODS_ROOT}/ADSuyiLocationManager/ADSuyiLocationManager/Classes" "${PODS_ROOT}/ADSuyiNetwork/ADSuyiNetwork/Classes" "${PODS_ROOT}/ADSuyiSDK/ADSuyiSDK/Classes/bu" "${PODS_ROOT}/ADSuyiSDK/ADSuyiSDK/Classes/core" "${PODS_ROOT}/ADSuyiSDK/ADSuyiSDK/Classes/gdt" "${PODS_ROOT}/ADSuyiSDK/ADSuyiSDK/Classes/ks" "${PODS_ROOT}/ADSuyiSDK/ADSuyiSDK/Classes/tianmu" "${PODS_ROOT}/Ads-CN/SDK" "${PODS_ROOT}/GDTMobSDK/GDTFramework" "${PODS_ROOT}/KSAdSDK" "${PODS_ROOT}/TianmuSDK/TianmuSDK/Classes" "${PODS_XCFRAMEWORKS_BUILD_DIR}/ADSuyiKit" "${PODS_XCFRAMEWORKS_BUILD_DIR}/ADSuyiLocationManager" "${PODS_XCFRAMEWORKS_BUILD_DIR}/ADSuyiNetwork" "${PODS_XCFRAMEWORKS_BUILD_DIR}/ADSuyiSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/ADSuyiSDK/ADSuyiSDKPlatforms/bu" "${PODS_XCFRAMEWORKS_BUILD_DIR}/ADSuyiSDK/ADSuyiSDKPlatforms/gdt" "${PODS_XCFRAMEWORKS_BUILD_DIR}/ADSuyiSDK/ADSuyiSDKPlatforms/ks" "${PODS_XCFRAMEWORKS_BUILD_DIR}/ADSuyiSDK/ADSuyiSDKPlatforms/tianmu" "${PODS_XCFRAMEWORKS_BUILD_DIR}/Ads-CN/BUAdSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/GDTMobSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/KSAdSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/TianmuSDK"
 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
-HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GDTMobSDK"
 OTHER_LDFLAGS = $(inherited) -ObjC
 PODS_BUILD_DIR = ${BUILD_DIR}
 PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
@@ -14,5 +13,4 @@ PODS_TARGET_SRCROOT = ${PODS_ROOT}/ADSuyiSDK
 PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
 PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
 SKIP_INSTALL = YES
-SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_ROOT}/GDTMobSDK/lib"
 USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES

+ 1 - 3
Pods/Target Support Files/ADSuyiSDK/ADSuyiSDK.release.xcconfig

@@ -2,9 +2,8 @@ BUILD_LIBRARY_FOR_DISTRIBUTION = YES
 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
 CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/ADSuyiSDK
 EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
-FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/ADSuyiKit/ADSuyiKit/Classes" "${PODS_ROOT}/ADSuyiLocationManager/ADSuyiLocationManager/Classes" "${PODS_ROOT}/ADSuyiNetwork/ADSuyiNetwork/Classes" "${PODS_ROOT}/ADSuyiSDK/ADSuyiSDK/Classes/bu" "${PODS_ROOT}/ADSuyiSDK/ADSuyiSDK/Classes/core" "${PODS_ROOT}/ADSuyiSDK/ADSuyiSDK/Classes/gdt" "${PODS_ROOT}/ADSuyiSDK/ADSuyiSDK/Classes/ks" "${PODS_ROOT}/ADSuyiSDK/ADSuyiSDK/Classes/tianmu" "${PODS_ROOT}/Ads-CN/SDK" "${PODS_ROOT}/KSAdSDK" "${PODS_ROOT}/TianmuSDK/TianmuSDK/Classes" "${PODS_XCFRAMEWORKS_BUILD_DIR}/ADSuyiKit" "${PODS_XCFRAMEWORKS_BUILD_DIR}/ADSuyiLocationManager" "${PODS_XCFRAMEWORKS_BUILD_DIR}/ADSuyiNetwork" "${PODS_XCFRAMEWORKS_BUILD_DIR}/ADSuyiSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/ADSuyiSDK/ADSuyiSDKPlatforms/bu" "${PODS_XCFRAMEWORKS_BUILD_DIR}/ADSuyiSDK/ADSuyiSDKPlatforms/gdt" "${PODS_XCFRAMEWORKS_BUILD_DIR}/ADSuyiSDK/ADSuyiSDKPlatforms/ks" "${PODS_XCFRAMEWORKS_BUILD_DIR}/ADSuyiSDK/ADSuyiSDKPlatforms/tianmu" "${PODS_XCFRAMEWORKS_BUILD_DIR}/Ads-CN/BUAdSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/KSAdSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/TianmuSDK"
+FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/ADSuyiKit/ADSuyiKit/Classes" "${PODS_ROOT}/ADSuyiLocationManager/ADSuyiLocationManager/Classes" "${PODS_ROOT}/ADSuyiNetwork/ADSuyiNetwork/Classes" "${PODS_ROOT}/ADSuyiSDK/ADSuyiSDK/Classes/bu" "${PODS_ROOT}/ADSuyiSDK/ADSuyiSDK/Classes/core" "${PODS_ROOT}/ADSuyiSDK/ADSuyiSDK/Classes/gdt" "${PODS_ROOT}/ADSuyiSDK/ADSuyiSDK/Classes/ks" "${PODS_ROOT}/ADSuyiSDK/ADSuyiSDK/Classes/tianmu" "${PODS_ROOT}/Ads-CN/SDK" "${PODS_ROOT}/GDTMobSDK/GDTFramework" "${PODS_ROOT}/KSAdSDK" "${PODS_ROOT}/TianmuSDK/TianmuSDK/Classes" "${PODS_XCFRAMEWORKS_BUILD_DIR}/ADSuyiKit" "${PODS_XCFRAMEWORKS_BUILD_DIR}/ADSuyiLocationManager" "${PODS_XCFRAMEWORKS_BUILD_DIR}/ADSuyiNetwork" "${PODS_XCFRAMEWORKS_BUILD_DIR}/ADSuyiSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/ADSuyiSDK/ADSuyiSDKPlatforms/bu" "${PODS_XCFRAMEWORKS_BUILD_DIR}/ADSuyiSDK/ADSuyiSDKPlatforms/gdt" "${PODS_XCFRAMEWORKS_BUILD_DIR}/ADSuyiSDK/ADSuyiSDKPlatforms/ks" "${PODS_XCFRAMEWORKS_BUILD_DIR}/ADSuyiSDK/ADSuyiSDKPlatforms/tianmu" "${PODS_XCFRAMEWORKS_BUILD_DIR}/Ads-CN/BUAdSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/GDTMobSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/KSAdSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/TianmuSDK"
 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
-HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GDTMobSDK"
 OTHER_LDFLAGS = $(inherited) -ObjC
 PODS_BUILD_DIR = ${BUILD_DIR}
 PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
@@ -14,5 +13,4 @@ PODS_TARGET_SRCROOT = ${PODS_ROOT}/ADSuyiSDK
 PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
 PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
 SKIP_INSTALL = YES
-SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_ROOT}/GDTMobSDK/lib"
 USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES

+ 3 - 1
Pods/Target Support Files/GDTMobSDK/GDTMobSDK.debug.xcconfig

@@ -1,9 +1,11 @@
 BUILD_LIBRARY_FOR_DISTRIBUTION = YES
 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
 CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/GDTMobSDK
+ENABLE_USER_SCRIPT_SANDBOXING = NO
 EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
+FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/GDTMobSDK/GDTFramework" "${PODS_XCFRAMEWORKS_BUILD_DIR}/GDTMobSDK"
 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
-HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/GDTMobSDK" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GDTMobSDK"
+HEADER_SEARCH_PATHS = $(inherited) ${PODS_ROOT}/GDTMobSDK/GDTFramework/GDTMobSDK.xcframework/ios-arm64/GDTMobSDK.framework/Headers ${PODS_ROOT}/GDTMobSDK/GDTFramework/Tquic.xcframework/ios-arm64_armv7/Tquic.framework/Headers
 PODS_BUILD_DIR = ${BUILD_DIR}
 PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
 PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE}

+ 3 - 1
Pods/Target Support Files/GDTMobSDK/GDTMobSDK.release.xcconfig

@@ -1,9 +1,11 @@
 BUILD_LIBRARY_FOR_DISTRIBUTION = YES
 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
 CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/GDTMobSDK
+ENABLE_USER_SCRIPT_SANDBOXING = NO
 EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
+FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/GDTMobSDK/GDTFramework" "${PODS_XCFRAMEWORKS_BUILD_DIR}/GDTMobSDK"
 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
-HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/GDTMobSDK" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GDTMobSDK"
+HEADER_SEARCH_PATHS = $(inherited) ${PODS_ROOT}/GDTMobSDK/GDTFramework/GDTMobSDK.xcframework/ios-arm64/GDTMobSDK.framework/Headers ${PODS_ROOT}/GDTMobSDK/GDTFramework/Tquic.xcframework/ios-arm64_armv7/Tquic.framework/Headers
 PODS_BUILD_DIR = ${BUILD_DIR}
 PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
 PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE}

+ 4 - 0
Pods/Target Support Files/Pods-jiaPei/Pods-jiaPei-frameworks.sh

@@ -176,10 +176,14 @@ code_sign_if_enabled() {
 }
 
 if [[ "$CONFIGURATION" == "Debug" ]]; then
+  install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/GDTMobSDK/GDTMobSDK.framework"
+  install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/GDTMobSDK/Tquic.framework"
   install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/KSAdSDK/KSAdSDK.framework"
   install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework"
 fi
 if [[ "$CONFIGURATION" == "Release" ]]; then
+  install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/GDTMobSDK/GDTMobSDK.framework"
+  install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/GDTMobSDK/Tquic.framework"
   install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/KSAdSDK/KSAdSDK.framework"
   install_framework "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework"
 fi

文件差异内容过多而无法显示
+ 2 - 0
Pods/Target Support Files/Pods-jiaPei/Pods-jiaPei.debug.xcconfig


文件差异内容过多而无法显示
+ 2 - 0
Pods/Target Support Files/Pods-jiaPei/Pods-jiaPei.release.xcconfig


+ 5 - 5
Pods/TianmuSDK/TianmuSDK/Classes/TianmuSDK.xcframework/Info.plist

@@ -8,32 +8,32 @@
 			<key>BinaryPath</key>
 			<string>TianmuSDK.framework/TianmuSDK</string>
 			<key>LibraryIdentifier</key>
-			<string>ios-arm64_x86_64-simulator</string>
+			<string>ios-arm64</string>
 			<key>LibraryPath</key>
 			<string>TianmuSDK.framework</string>
 			<key>SupportedArchitectures</key>
 			<array>
 				<string>arm64</string>
-				<string>x86_64</string>
 			</array>
 			<key>SupportedPlatform</key>
 			<string>ios</string>
-			<key>SupportedPlatformVariant</key>
-			<string>simulator</string>
 		</dict>
 		<dict>
 			<key>BinaryPath</key>
 			<string>TianmuSDK.framework/TianmuSDK</string>
 			<key>LibraryIdentifier</key>
-			<string>ios-arm64</string>
+			<string>ios-arm64_x86_64-simulator</string>
 			<key>LibraryPath</key>
 			<string>TianmuSDK.framework</string>
 			<key>SupportedArchitectures</key>
 			<array>
 				<string>arm64</string>
+				<string>x86_64</string>
 			</array>
 			<key>SupportedPlatform</key>
 			<string>ios</string>
+			<key>SupportedPlatformVariant</key>
+			<string>simulator</string>
 		</dict>
 	</array>
 	<key>CFBundlePackageType</key>

+ 8 - 4
jiaPei.xcodeproj/project.pbxproj

@@ -11424,11 +11424,15 @@
 			);
 			inputPaths = (
 				"${PODS_ROOT}/Target Support Files/Pods-jiaPei/Pods-jiaPei-frameworks.sh",
+				"${PODS_XCFRAMEWORKS_BUILD_DIR}/GDTMobSDK/GDTMobSDK.framework/GDTMobSDK",
+				"${PODS_XCFRAMEWORKS_BUILD_DIR}/GDTMobSDK/Tquic.framework/Tquic",
 				"${PODS_XCFRAMEWORKS_BUILD_DIR}/KSAdSDK/KSAdSDK.framework/KSAdSDK",
 				"${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL",
 			);
 			name = "[CP] Embed Pods Frameworks";
 			outputPaths = (
+				"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GDTMobSDK.framework",
+				"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Tquic.framework",
 				"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/KSAdSDK.framework",
 			);
 			runOnlyForDeploymentPostprocessing = 0;
@@ -12653,7 +12657,7 @@
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				"CODE_SIGN_RESOURCE_RULES_PATH[sdk=*]" = "";
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 2362025051201;
+				CURRENT_PROJECT_VERSION = 2372025061602;
 				DEBUG_INFORMATION_FORMAT = dwarf;
 				DEVELOPMENT_TEAM = K7T6CU5SW5;
 				ENABLE_BITCODE = NO;
@@ -12691,7 +12695,7 @@
 					"$(PROJECT_DIR)/jiaPei/Vendor/BaiDuFaceSDK/BDFaceSDK/lib",
 					"$(PROJECT_DIR)/jiaPei/Vendor/QiNiu_IMSDK/Vendors/Voice",
 				);
-				MARKETING_VERSION = 2.3.6;
+				MARKETING_VERSION = 2.3.8;
 				ONLY_ACTIVE_ARCH = YES;
 				OTHER_CFLAGS = (
 					"$(inherited)",
@@ -12739,7 +12743,7 @@
 				CODE_SIGN_IDENTITY = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 2362025051201;
+				CURRENT_PROJECT_VERSION = 2372025061602;
 				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
 				DEVELOPMENT_TEAM = K7T6CU5SW5;
 				ENABLE_BITCODE = NO;
@@ -12777,7 +12781,7 @@
 					"$(PROJECT_DIR)/jiaPei/Vendor/BaiDuFaceSDK/BDFaceSDK/lib",
 					"$(PROJECT_DIR)/jiaPei/Vendor/QiNiu_IMSDK/Vendors/Voice",
 				);
-				MARKETING_VERSION = 2.3.6;
+				MARKETING_VERSION = 2.3.8;
 				ONLY_ACTIVE_ARCH = NO;
 				OTHER_CFLAGS = (
 					"$(inherited)",

二进制
jiaPei.xcworkspace/xcuserdata/mimasigeling.xcuserdatad/UserInterfaceState.xcuserstate


+ 0 - 2
jiaPei/Images.xcassets/Modules/CommonModule/adPlaceHolder.imageset/Contents.json

@@ -1,7 +1,6 @@
 {
   "images" : [
     {
-      "filename" : "adPlaceHolder.png",
       "idiom" : "universal",
       "scale" : "1x"
     },
@@ -11,7 +10,6 @@
       "scale" : "2x"
     },
     {
-      "filename" : "adPlaceHolder@3x.png",
       "idiom" : "universal",
       "scale" : "3x"
     }

二进制
jiaPei/Images.xcassets/Modules/CommonModule/adPlaceHolder.imageset/adPlaceHolder.png


二进制
jiaPei/Images.xcassets/Modules/CommonModule/adPlaceHolder.imageset/adPlaceHolder@2x.png


二进制
jiaPei/Images.xcassets/Modules/CommonModule/adPlaceHolder.imageset/adPlaceHolder@3x.png


+ 2 - 0
jiaPei/Macros/RQConstant.h

@@ -46,6 +46,8 @@ typedef id   (^IDBlock_id)  (id);
 typedef void (^VoidBlock_Bool)(BOOL);
 
 #pragma mark - 应用相关的
+/// 切换title的通知
+FOUNDATION_EXTERN NSString * const NYGetJobtimeChangeTitleNotification;
 /// 切换根控制器的通知 新特性
 FOUNDATION_EXTERN NSString * const RQSwitchRootViewControllerNotification;
 /// 切换根控制器的通知 UserInfo key

+ 2 - 0
jiaPei/Macros/RQConstant.m

@@ -10,6 +10,8 @@
 #import <UIKit/UIKit.h>
 
 #pragma mark - 应用相关的
+/// 切换title的通知
+NSString * const NYGetJobtimeChangeTitleNotification = @"NYGetJobtimeChangeTitleNotification";
 /// 切换根控制器的通知 新特性
 NSString * const RQSwitchRootViewControllerNotification = @"RQSwitchRootViewControllerNotification";
 /// 切换根控制器的通知 UserInfo key

+ 2 - 2
jiaPei/Macros/RQMacros.h

@@ -296,8 +296,8 @@ _Pragma("clang diagnostic pop")\
 #define RQWebImageOptionAutomatic (YYWebImageOptionAllowInvalidSSLCertificates|YYWebImageOptionAllowBackgroundTask|YYWebImageOptionSetImageWithFadeAnimation)
 
 
-#define NYPiapph [NSString stringWithFormat:@"http://pt.zzxcx.net/#/yeNing?v=%@",RQ_APP_VERSION]
-#define NYPiapphkc [NSString stringWithFormat:@"http://pt.zzxcx.net/#/yeNingKC?v=%@",RQ_APP_VERSION]
+#define NYPiapph [NSString stringWithFormat:@"https://pt.zzxcx.net/#/yeNing?v=%@",RQ_APP_VERSION]
+#define NYPiapphkc [NSString stringWithFormat:@"https://pt.zzxcx.net/#/yeNingKC?v=%@",RQ_APP_VERSION]
 
 #define NYPiapph_test [NSString stringWithFormat:@"http://pt1.zzxcx.net/#/yeNing?v=%@",RQ_APP_VERSION]
 #define NYPiapphkc_test [NSString stringWithFormat:@"http://pt1.zzxcx.net/#/yeNingKC?v=%@",RQ_APP_VERSION]

+ 3 - 2
jiaPei/Modules/HomePageModule/View/HomePage/NYHomePageOneBigCell.m

@@ -75,14 +75,14 @@
     
     self.lay_blue_w.constant = RQ_FIT_HORIZONTAL(121);
     self.lay_blue_h.constant = RQ_FIT_HORIZONTAL(121);
-
+    
     self.lay_green_w.constant = RQ_FIT_HORIZONTAL(121);
     self.lay_green_h.constant = RQ_FIT_HORIZONTAL(121);
 }
 
 - (void)bindViewModel:(NYHomePageOneBigItemViewModel *)viewModel {
     _viewModel = viewModel;
-
+    
     RAC(self.blue_title_sx, attributedText) = [[RACObserve(viewModel, sxlxtStr) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread];
     RAC(self.green_title_mnks, attributedText) = [[RACObserve(viewModel, mnksStr) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread];
 }
@@ -92,6 +92,7 @@
 
 //顺序练习
 - (IBAction)btnSxlxActiondo:(UIButton *)sender {
+ 
     if (RQ_USER_MANAGER.isShouldLogin) {
         NSArray *arr = [[RQ_YDTQuestion_Module getQuestionWithSubject:RQ_YDTQuestion_Module.subject exerciseType:RQExerciseType_Sequential ].rac_sequence.signal map:^id _Nullable(RQYDTQuestionModel  *ydtQuestionModel) {
             return [RQExerciseModel exerciseModelWithRQYDTQuestionModel:ydtQuestionModel];

部分文件因为文件数量过多而无法显示