Quellcode durchsuchen

Merge branch 'developer' into configuration

# Conflicts:
#	KulexiuForStudent/KulexiuForStudent/Common/Define/KSDomain.h
Steven vor 1 Jahr
Ursprung
Commit
8763047646
18 geänderte Dateien mit 243 neuen und 82 gelöschten Zeilen
  1. 4 4
      KulexiuForStudent/KulexiuForStudent.xcodeproj/project.pbxproj
  2. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/aboutUs_icon.imageset/Contents.json
  3. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/aboutUs_icon.imageset/aboutUs_icon@2x.png
  4. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/aboutUs_icon.imageset/aboutUs_icon@3x.png
  5. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/check_detailImage.imageset/Contents.json
  6. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/check_detailImage.imageset/check_detailImage@2x.png
  7. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/check_detailImage.imageset/check_detailImage@3x.png
  8. 13 0
      KulexiuForStudent/KulexiuForStudent/Common/Base/KSAccompanyWebViewController.m
  9. 2 0
      KulexiuForStudent/KulexiuForStudent/Common/Base/KSBaseWKWebViewController.m
  10. 9 13
      KulexiuForStudent/KulexiuForStudent/Common/Base/KSVideoRecordManager.m
  11. 0 14
      KulexiuForStudent/KulexiuForStudent/Common/Define/KSDomain.h
  12. 12 4
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/Controller/AboutUsViewController.m
  13. 4 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/AboutUsBodyView.h
  14. 15 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/AboutUsBodyView.m
  15. 109 41
      KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/AboutUsBodyView.xib
  16. 12 6
      KulexiuForStudent/KulexiuForStudent/Module/TXClassRoom/View/NewWhiteboard/KSNewWhiteBoard.m
  17. 9 0
      KulexiuForStudent/KulexiuForStudent/Module/Widget/Controller/ToneTuningViewController.m
  18. 10 0
      KulexiuForStudent/KulexiuForStudent/Module/Widget/Model/TuningFunction/Tuner.swift

+ 4 - 4
KulexiuForStudent/KulexiuForStudent.xcodeproj/project.pbxproj

@@ -8819,7 +8819,7 @@
 				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_ENTITLEMENTS = KulexiuForStudent/KulexiuForStudent.entitlements;
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 1.5.8;
+				CURRENT_PROJECT_VERSION = 1.6.1;
 				DEVELOPMENT_TEAM = B2AP53HHTU;
 				ENABLE_BITCODE = NO;
 				ENABLE_MODULE_VERIFIER = YES;
@@ -8875,7 +8875,7 @@
 					"$(PROJECT_DIR)/KulexiuForStudent/Common/ThirdPart/UMSocialSDK/share/share_ios_6.10.5/SocialLibraries/Sina/SinaSDK",
 					"$(PROJECT_DIR)/KulexiuForStudent/Common/ThirdPart/UMSocialSDK/share/share_ios_6.10.5/UMSocialSDKPlugin",
 				);
-				MARKETING_VERSION = 1.5.8;
+				MARKETING_VERSION = 1.6.0;
 				MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
 				MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 gnu++17";
 				OTHER_LDFLAGS = (
@@ -9005,7 +9005,7 @@
 				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_ENTITLEMENTS = KulexiuForStudent/KulexiuForStudent.entitlements;
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 1.5.8;
+				CURRENT_PROJECT_VERSION = 1.6.1;
 				DEVELOPMENT_TEAM = B2AP53HHTU;
 				ENABLE_BITCODE = NO;
 				ENABLE_MODULE_VERIFIER = YES;
@@ -9061,7 +9061,7 @@
 					"$(PROJECT_DIR)/KulexiuForStudent/Common/ThirdPart/UMSocialSDK/share/share_ios_6.10.5/SocialLibraries/Sina/SinaSDK",
 					"$(PROJECT_DIR)/KulexiuForStudent/Common/ThirdPart/UMSocialSDK/share/share_ios_6.10.5/UMSocialSDKPlugin",
 				);
-				MARKETING_VERSION = 1.5.8;
+				MARKETING_VERSION = 1.6.0;
 				MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++";
 				MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 gnu++17";
 				OTHER_LDFLAGS = (

+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/aboutUs_icon.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "aboutUs_icon@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "aboutUs_icon@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/aboutUs_icon.imageset/aboutUs_icon@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/aboutUs_icon.imageset/aboutUs_icon@3x.png


+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/check_detailImage.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "check_detailImage@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "check_detailImage@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/check_detailImage.imageset/check_detailImage@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/check_detailImage.imageset/check_detailImage@3x.png


+ 13 - 0
KulexiuForStudent/KulexiuForStudent/Common/Base/KSAccompanyWebViewController.m

@@ -129,6 +129,9 @@
     if (_playerEngine) {
         [self stopPlayAction];
     }
+    if (_musicPlayer) {
+        [self stopMp3Player];
+    }
 }
 
 - (void)resumeAudioSession {
@@ -462,9 +465,19 @@
         // 返回不保存视频
         [self ignorRecordVideo];
         [self freeMp3Player];
+        [self removeTuner];
+    }
+}
+
+- (void)removeTuner {
+    if (_tuner) {
+        [_tuner freeTuner];
+        _tuner = nil;
+        NSLog(@"--- free tuner ");
     }
 }
 
+
 - (void)sendDataToSocketService:(id)data {
     if (_socketManager) {
         [self.socketManager sendData:data];

+ 2 - 0
KulexiuForStudent/KulexiuForStudent/Common/Base/KSBaseWKWebViewController.m

@@ -1070,6 +1070,8 @@ typedef NS_ENUM(NSInteger, CHOOSETYPE) {
             } else {
                 completionHandler(NSURLSessionAuthChallengeCancelAuthenticationChallenge, nil);
             }
+        } else {
+            completionHandler(NSURLSessionAuthChallengeCancelAuthenticationChallenge, nil);
         }
     });
 }

+ 9 - 13
KulexiuForStudent/KulexiuForStudent/Common/Base/KSVideoRecordManager.m

@@ -81,9 +81,12 @@
     // 设置YES 播放web伴奏会导致打断
     _captureSession.automaticallyConfiguresApplicationAudioSession = NO;
     // 初始化会话对象
-    if ([_captureSession canSetSessionPreset:AVCaptureSessionPresetInputPriority]) {
-        _captureSession.sessionPreset = AVCaptureSessionPresetInputPriority;
+    if ([_captureSession canSetSessionPreset:AVCaptureSessionPresetiFrame1280x720]) {
+        _captureSession.sessionPreset = AVCaptureSessionPresetiFrame1280x720;
     }
+    else if ([_captureSession canSetSessionPreset:AVCaptureSessionPresetInputPriority]) {
+        _captureSession.sessionPreset = AVCaptureSessionPresetInputPriority;
+    }   
     NSError *error = nil;
     
     // 获取视频输出对象
@@ -238,10 +241,12 @@
 }
 
 - (void)stopRecord {
-    if (_captureMovieFileOutput) {
+    if (_captureMovieFileOutput && _isRecording) {
         [self.captureMovieFileOutput stopRecording];
     }
-    [self resetSession];
+    else {
+        [self resetSession];
+    }
 }
 
 
@@ -304,15 +309,6 @@
     }
     NSLog(@"录制结束");
     _isRecording = NO;
-    if (_isChangeSession == NO) {
-        @weakObj(self);
-        dispatch_async(self.videoRecordQueue, ^{
-            @strongObj(self);
-            if (self.captureSession.running) {
-                [self.captureSession stopRunning];
-            }
-        });
-    }
 
     // 暂时存储文件地址
     self.videoFileURL = outputFileURL;

+ 0 - 14
KulexiuForStudent/KulexiuForStudent/Common/Define/KSDomain.h

@@ -36,18 +36,4 @@
 // 白板
 #define WhiteBoardHostURL ([NSString stringWithFormat:@"https://%@",WHITE_BOARD])
 
-// 预生产
-//#define hostURL (@"https://ponline.colexiu.com")
-//#define SEALCLASSHOST (@"https://ponline.colexiu.com/api-classroom")
-//#define WEBHOST (@"https://ponline.colexiu.com/student")
-//#define TENANT_WEBHOST (@"https://ponline.colexiu.com//tenant")
-//#define SOCKET_URL (@"wss://ponline.colexiu.com/audioAnalysis")
-//#define JSPUSH_ENVIRONMENT (YES)
-//#define RCIM_KEY (@"e5t4ouvpe42pa")
-//#define SUBMIT_UUID (YES)
-//#define CONFIG_TXSDKAPPID (1400799837)
-//#define TXOfflinePushCertificateIDForAPNS (39560)
-//#define WhiteBoardHostURL (@"https://online.dayaedu.com")
-
-
 #endif /* KSDomain_h */

+ 12 - 4
KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/Controller/AboutUsViewController.m

@@ -41,13 +41,21 @@
 }
 
 - (void)configUI {
+    [self.scrollView removeFromSuperview];
     _bodyView = [AboutUsBodyView shareInstance];
-    [self.scrollView addSubview:_bodyView];
+    [self.view addSubview:_bodyView];
     [_bodyView mas_makeConstraints:^(MASConstraintMaker *make) {
-        make.top.mas_equalTo(self.scrollView.mas_top);
-        make.right.left.mas_equalTo(self.view);
-        make.height.mas_equalTo(kScreenHeight - kNaviBarHeight - iPhoneXSafeBottomMargin);
+        make.top.left.right.bottom.mas_equalTo(self.view);
     }];
+    MJWeakSelf;
+    [_bodyView showCheckLink:^{
+        [weakSelf showCheckLink];
+    }];
+}
+
+- (void)showCheckLink {
+    // 外部浏览器打开
+    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://beian.miit.gov.cn/"] options: @{} completionHandler: nil];
 }
 /*
 #pragma mark - Navigation

+ 4 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/AboutUsBodyView.h

@@ -7,6 +7,8 @@
 
 #import <UIKit/UIKit.h>
 
+typedef void(^DisplayCheckLinkCallback)(void);
+
 NS_ASSUME_NONNULL_BEGIN
 
 @interface AboutUsBodyView : UIView
@@ -15,6 +17,8 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (void)configPhone:(NSString *)phone email:(NSString *)email;
 
+- (void)showCheckLink:(DisplayCheckLinkCallback)callback;
+
 @end
 
 NS_ASSUME_NONNULL_END

+ 15 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/AboutUsBodyView.m

@@ -13,6 +13,10 @@
 @property (weak, nonatomic) IBOutlet UILabel *phoneLabel;
 @property (weak, nonatomic) IBOutlet UILabel *emailLabel;
 
+@property (weak, nonatomic) IBOutlet NSLayoutConstraint *bottomSpace;
+
+@property (nonatomic, copy) DisplayCheckLinkCallback callback;
+
 @end
 
 @implementation AboutUsBodyView
@@ -22,6 +26,7 @@
     self.versionLabel.text = [NSString stringWithFormat:@"版本号%@",[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]];
     self.phoneLabel.text = @"15347100733";
     self.emailLabel.text = @"klx@kulexiu999.onexmail.com";
+    self.bottomSpace.constant = 6 + iPhoneXSafeBottomMargin;
 }
 
 - (void)configPhone:(NSString *)phone email:(NSString *)email {
@@ -34,6 +39,16 @@
     return view;
 }
 
+- (void)showCheckLink:(DisplayCheckLinkCallback)callback {
+    if (callback) {
+        self.callback = callback;
+    }
+}
+- (IBAction)openWebView:(id)sender {
+    if (self.callback) {
+        self.callback();
+    }
+}
 /*
 // Only override drawRect: if you perform custom drawing.
 // An empty implementation adversely affects performance during animation.

+ 109 - 41
KulexiuForStudent/KulexiuForStudent/Module/Mine/Setting/View/AboutUsBodyView.xib

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21507" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="22505" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
     <device id="retina6_1" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21505"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22504"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -14,46 +14,46 @@
             <autoresizingMask key="autoresizingMask"/>
             <subviews>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="QYL-JY-4ew">
-                    <rect key="frame" x="14" y="15" width="386" height="300"/>
+                    <rect key="frame" x="0.0" y="0.0" width="414" height="372"/>
                     <subviews>
-                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="klx_logo" translatesAutoresizingMaskIntoConstraints="NO" id="cTa-D0-od4">
-                            <rect key="frame" x="125.5" y="42" width="135" height="40"/>
+                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="aboutUs_icon" translatesAutoresizingMaskIntoConstraints="NO" id="cTa-D0-od4">
+                            <rect key="frame" x="137" y="42" width="140" height="140"/>
                         </imageView>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="版本号:1.0.0" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7sa-Ud-PzI">
-                            <rect key="frame" x="149.5" y="93" width="87" height="20"/>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="版本号:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7sa-Ud-PzI">
+                            <rect key="frame" x="182" y="195" width="50.5" height="20"/>
                             <constraints>
                                 <constraint firstAttribute="height" constant="20" id="Va0-Ci-tdX"/>
                             </constraints>
                             <fontDescription key="fontDescription" type="system" pointSize="14"/>
-                            <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            <color key="textColor" red="0.54509803921568623" green="0.54509803921568623" blue="0.54509803921568623" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             <nil key="highlightedColor"/>
                         </label>
                         <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Llz-E9-UuO">
-                            <rect key="frame" x="0.0" y="245" width="386" height="50"/>
+                            <rect key="frame" x="0.0" y="307" width="414" height="60"/>
                             <subviews>
-                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="E-mail" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zan-am-t8E">
-                                    <rect key="frame" x="16" y="15" width="75" height="20"/>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cnn-JH-ETQ">
+                                    <rect key="frame" x="398" y="19" width="0.0" height="22"/>
                                     <constraints>
-                                        <constraint firstAttribute="width" constant="75" id="ReV-Xi-cJo"/>
+                                        <constraint firstAttribute="height" constant="22" id="gTK-eX-Fag"/>
                                     </constraints>
                                     <fontDescription key="fontDescription" type="system" pointSize="17"/>
-                                    <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
+                                    <color key="textColor" red="0.54509803921568623" green="0.54509803921568623" blue="0.54509803921568623" alpha="1" colorSpace="calibratedRGB"/>
                                     <nil key="highlightedColor"/>
                                 </label>
-                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cnn-JH-ETQ">
-                                    <rect key="frame" x="370" y="14" width="0.0" height="22"/>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="E-mail" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zan-am-t8E">
+                                    <rect key="frame" x="16" y="20" width="75" height="20"/>
                                     <constraints>
-                                        <constraint firstAttribute="height" constant="22" id="gTK-eX-Fag"/>
+                                        <constraint firstAttribute="width" constant="75" id="ReV-Xi-cJo"/>
                                     </constraints>
                                     <fontDescription key="fontDescription" type="system" pointSize="17"/>
-                                    <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
+                                    <color key="textColor" red="0.070588235294117646" green="0.074509803921568626" blue="0.078431372549019607" alpha="1" colorSpace="calibratedRGB"/>
                                     <nil key="highlightedColor"/>
                                 </label>
                             </subviews>
                             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                             <constraints>
                                 <constraint firstItem="zan-am-t8E" firstAttribute="centerY" secondItem="Llz-E9-UuO" secondAttribute="centerY" id="J0e-zN-IpI"/>
-                                <constraint firstAttribute="height" constant="50" id="M1m-bo-gOH"/>
+                                <constraint firstAttribute="height" constant="60" id="M1m-bo-gOH"/>
                                 <constraint firstItem="cnn-JH-ETQ" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="zan-am-t8E" secondAttribute="trailing" constant="12" id="T2E-p6-3sf"/>
                                 <constraint firstItem="zan-am-t8E" firstAttribute="leading" secondItem="Llz-E9-UuO" secondAttribute="leading" constant="16" id="XIq-kX-qbY"/>
                                 <constraint firstItem="cnn-JH-ETQ" firstAttribute="centerY" secondItem="Llz-E9-UuO" secondAttribute="centerY" id="xyz-wD-GMm"/>
@@ -61,28 +61,28 @@
                             </constraints>
                         </view>
                         <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ebq-nd-C8r">
-                            <rect key="frame" x="0.0" y="195" width="386" height="50"/>
+                            <rect key="frame" x="0.0" y="247" width="414" height="60"/>
                             <subviews>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="客服电话" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="sAj-jF-RYu">
-                                    <rect key="frame" x="16" y="15" width="75" height="20"/>
+                                    <rect key="frame" x="16" y="20" width="75" height="20"/>
                                     <constraints>
                                         <constraint firstAttribute="width" constant="75" id="rTN-jW-vMs"/>
                                     </constraints>
                                     <fontDescription key="fontDescription" type="system" pointSize="17"/>
-                                    <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
+                                    <color key="textColor" red="0.070588235294117646" green="0.074509803921568626" blue="0.078431372549019607" alpha="1" colorSpace="calibratedRGB"/>
                                     <nil key="highlightedColor"/>
                                 </label>
                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="v4W-Tc-Z7P">
-                                    <rect key="frame" x="370" y="14" width="0.0" height="22"/>
+                                    <rect key="frame" x="398" y="19" width="0.0" height="22"/>
                                     <constraints>
                                         <constraint firstAttribute="height" constant="22" id="ZiM-nf-O52"/>
                                     </constraints>
                                     <fontDescription key="fontDescription" type="system" pointSize="17"/>
-                                    <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
+                                    <color key="textColor" red="0.54509803921568623" green="0.54509803921568623" blue="0.54509803921568623" alpha="1" colorSpace="calibratedRGB"/>
                                     <nil key="highlightedColor"/>
                                 </label>
                                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="uiK-CI-oZC">
-                                    <rect key="frame" x="10" y="49" width="366" height="1"/>
+                                    <rect key="frame" x="10" y="59" width="394" height="1"/>
                                     <color key="backgroundColor" red="0.94901960784313721" green="0.94901960784313721" blue="0.94901960784313721" alpha="1" colorSpace="calibratedRGB"/>
                                     <constraints>
                                         <constraint firstAttribute="height" constant="1" id="g81-iD-VDo"/>
@@ -97,7 +97,7 @@
                                 <constraint firstAttribute="trailing" secondItem="v4W-Tc-Z7P" secondAttribute="trailing" constant="16" id="Of5-H2-upH"/>
                                 <constraint firstItem="sAj-jF-RYu" firstAttribute="leading" secondItem="Ebq-nd-C8r" secondAttribute="leading" constant="16" id="k9H-YA-caI"/>
                                 <constraint firstItem="uiK-CI-oZC" firstAttribute="leading" secondItem="Ebq-nd-C8r" secondAttribute="leading" constant="10" id="kNb-qR-XQk"/>
-                                <constraint firstAttribute="height" constant="50" id="lTh-2Z-bZ3"/>
+                                <constraint firstAttribute="height" constant="60" id="lTh-2Z-bZ3"/>
                                 <constraint firstAttribute="bottom" secondItem="uiK-CI-oZC" secondAttribute="bottom" id="s3I-hR-ozV"/>
                                 <constraint firstItem="v4W-Tc-Z7P" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="sAj-jF-RYu" secondAttribute="trailing" constant="12" id="tXX-hb-3OP"/>
                             </constraints>
@@ -106,14 +106,14 @@
                     <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                     <constraints>
                         <constraint firstAttribute="trailing" secondItem="Ebq-nd-C8r" secondAttribute="trailing" id="1th-5I-09q"/>
-                        <constraint firstAttribute="height" constant="300" id="2SY-FP-iDP"/>
                         <constraint firstItem="Ebq-nd-C8r" firstAttribute="leading" secondItem="QYL-JY-4ew" secondAttribute="leading" id="52M-Sm-2KK"/>
                         <constraint firstItem="cTa-D0-od4" firstAttribute="centerX" secondItem="QYL-JY-4ew" secondAttribute="centerX" id="DgL-EJ-qaz"/>
                         <constraint firstItem="7sa-Ud-PzI" firstAttribute="centerX" secondItem="QYL-JY-4ew" secondAttribute="centerX" id="W98-HT-q2L"/>
                         <constraint firstItem="Llz-E9-UuO" firstAttribute="leading" secondItem="QYL-JY-4ew" secondAttribute="leading" id="e3f-KG-5gm"/>
                         <constraint firstAttribute="bottom" secondItem="Llz-E9-UuO" secondAttribute="bottom" constant="5" id="if4-hy-JZQ"/>
-                        <constraint firstItem="7sa-Ud-PzI" firstAttribute="top" secondItem="cTa-D0-od4" secondAttribute="bottom" constant="11" id="kLn-bC-hAy"/>
+                        <constraint firstItem="7sa-Ud-PzI" firstAttribute="top" secondItem="cTa-D0-od4" secondAttribute="bottom" constant="13" id="kLn-bC-hAy"/>
                         <constraint firstItem="cTa-D0-od4" firstAttribute="top" secondItem="QYL-JY-4ew" secondAttribute="top" constant="42" id="lKG-gx-cGs"/>
+                        <constraint firstItem="Ebq-nd-C8r" firstAttribute="top" secondItem="7sa-Ud-PzI" secondAttribute="bottom" constant="32" id="pNr-ic-bd9"/>
                         <constraint firstItem="Llz-E9-UuO" firstAttribute="top" secondItem="Ebq-nd-C8r" secondAttribute="bottom" id="s33-ak-GIU"/>
                         <constraint firstAttribute="trailing" secondItem="Llz-E9-UuO" secondAttribute="trailing" id="xlh-Lh-IXX"/>
                     </constraints>
@@ -123,36 +123,104 @@
                         </userDefinedRuntimeAttribute>
                     </userDefinedRuntimeAttributes>
                 </view>
-                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="w7n-r0-QfZ">
-                    <rect key="frame" x="50" y="335" width="314" height="29"/>
-                    <string key="text">Copyright©2021-2022
-酷乐秀 colexiu.com 版权所有</string>
+                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Copyright@2021-2024|酷乐秀 colexiu.com 版权所有" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Cao-R5-uco">
+                    <rect key="frame" x="39" y="836" width="303" height="20"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="20" id="Nbm-lI-8KU"/>
+                    </constraints>
+                    <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                    <color key="textColor" red="0.69803921570000005" green="0.69803921570000005" blue="0.69803921570000005" alpha="1" colorSpace="calibratedRGB"/>
+                    <nil key="highlightedColor"/>
+                </label>
+                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="网络安全等级保护备案号:42010043158-24001" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="SIL-X0-SSV">
+                    <rect key="frame" x="39" y="816" width="303" height="20"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="20" id="6T7-7p-Ep6"/>
+                    </constraints>
+                    <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                    <color key="textColor" red="0.69803921570000005" green="0.69803921570000005" blue="0.69803921570000005" alpha="1" colorSpace="calibratedRGB"/>
+                    <nil key="highlightedColor"/>
+                </label>
+                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="教育移动互联网应用备案:教APP备4200224号" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eBi-VU-sp3">
+                    <rect key="frame" x="39" y="796" width="303" height="20"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="20" id="Z8U-v0-u1X"/>
+                    </constraints>
+                    <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                    <color key="textColor" red="0.69803921570000005" green="0.69803921570000005" blue="0.69803921570000005" alpha="1" colorSpace="calibratedRGB"/>
+                    <nil key="highlightedColor"/>
+                </label>
+                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="增值电信业务经营许可证:鄂B2-20231246" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="pVB-Je-Kw1">
+                    <rect key="frame" x="39" y="776" width="303" height="20"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="20" id="WGU-Gc-leN"/>
+                    </constraints>
+                    <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                    <color key="textColor" red="0.69803921570000005" green="0.69803921570000005" blue="0.69803921570000005" alpha="1" colorSpace="calibratedRGB"/>
+                    <nil key="highlightedColor"/>
+                </label>
+                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="ICP备案号:鄂ICP备2021020787号-4A" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="OLP-Gn-gzM">
+                    <rect key="frame" x="39" y="756" width="224.5" height="20"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="20" id="C25-HQ-T3t"/>
+                    </constraints>
                     <fontDescription key="fontDescription" type="system" pointSize="12"/>
-                    <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
+                    <color key="textColor" red="0.69803921570000005" green="0.69803921570000005" blue="0.69803921570000005" alpha="1" colorSpace="calibratedRGB"/>
                     <nil key="highlightedColor"/>
                 </label>
+                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="check_detailImage" translatesAutoresizingMaskIntoConstraints="NO" id="V7W-cR-ir1">
+                    <rect key="frame" x="267.5" y="761" width="5" height="10"/>
+                </imageView>
+                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="WpR-Kj-Tyg">
+                    <rect key="frame" x="39" y="746" width="233.5" height="40"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="40" id="MbP-Kh-fuD"/>
+                    </constraints>
+                    <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                    <connections>
+                        <action selector="openWebView:" destination="iN0-l3-epB" eventType="touchUpInside" id="Eea-bZ-113"/>
+                    </connections>
+                </button>
             </subviews>
-            <color key="backgroundColor" red="0.96470588235294119" green="0.97254901960784312" blue="0.97647058823529409" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+            <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
             <constraints>
-                <constraint firstAttribute="trailing" secondItem="w7n-r0-QfZ" secondAttribute="trailing" constant="50" id="3se-CV-iN8"/>
-                <constraint firstItem="QYL-JY-4ew" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="15" id="6Se-bm-pwg"/>
-                <constraint firstItem="w7n-r0-QfZ" firstAttribute="top" secondItem="QYL-JY-4ew" secondAttribute="bottom" constant="20" id="ETt-dR-gmw"/>
-                <constraint firstItem="QYL-JY-4ew" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="14" id="FG5-oZ-Yh6"/>
-                <constraint firstAttribute="trailing" secondItem="QYL-JY-4ew" secondAttribute="trailing" constant="14" id="JEg-YC-TgD"/>
-                <constraint firstItem="w7n-r0-QfZ" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="50" id="ldb-VQ-sub"/>
+                <constraint firstItem="pVB-Je-Kw1" firstAttribute="top" secondItem="OLP-Gn-gzM" secondAttribute="bottom" id="139-e1-YSb"/>
+                <constraint firstAttribute="bottom" secondItem="Cao-R5-uco" secondAttribute="bottom" constant="40" id="41K-jv-SH4"/>
+                <constraint firstItem="QYL-JY-4ew" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="6Se-bm-pwg"/>
+                <constraint firstItem="Cao-R5-uco" firstAttribute="top" secondItem="SIL-X0-SSV" secondAttribute="bottom" id="CqU-Pz-EbB"/>
+                <constraint firstItem="eBi-VU-sp3" firstAttribute="leading" secondItem="pVB-Je-Kw1" secondAttribute="leading" id="EIR-hJ-Tff"/>
+                <constraint firstItem="QYL-JY-4ew" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="FG5-oZ-Yh6"/>
+                <constraint firstItem="Cao-R5-uco" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="39" id="IJW-E5-xpJ"/>
+                <constraint firstAttribute="trailing" secondItem="QYL-JY-4ew" secondAttribute="trailing" id="JEg-YC-TgD"/>
+                <constraint firstItem="pVB-Je-Kw1" firstAttribute="leading" secondItem="OLP-Gn-gzM" secondAttribute="leading" id="TJK-lP-7Nt"/>
+                <constraint firstItem="SIL-X0-SSV" firstAttribute="top" secondItem="eBi-VU-sp3" secondAttribute="bottom" id="VKL-gr-Yjd"/>
+                <constraint firstItem="OLP-Gn-gzM" firstAttribute="leading" secondItem="WpR-Kj-Tyg" secondAttribute="leading" id="WLy-rw-8nL"/>
+                <constraint firstItem="SIL-X0-SSV" firstAttribute="leading" secondItem="eBi-VU-sp3" secondAttribute="leading" id="YvV-AT-5QS"/>
+                <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="Cao-R5-uco" secondAttribute="trailing" constant="15" id="cqy-OJ-pag"/>
+                <constraint firstItem="OLP-Gn-gzM" firstAttribute="centerY" secondItem="V7W-cR-ir1" secondAttribute="centerY" id="cyS-sY-O10"/>
+                <constraint firstItem="eBi-VU-sp3" firstAttribute="top" secondItem="pVB-Je-Kw1" secondAttribute="bottom" id="d7a-5I-2Gm"/>
+                <constraint firstItem="Cao-R5-uco" firstAttribute="leading" secondItem="SIL-X0-SSV" secondAttribute="leading" id="hl7-Q2-RM6"/>
+                <constraint firstItem="V7W-cR-ir1" firstAttribute="leading" secondItem="OLP-Gn-gzM" secondAttribute="trailing" constant="4" id="huV-Xh-5Mw"/>
+                <constraint firstItem="eBi-VU-sp3" firstAttribute="trailing" secondItem="pVB-Je-Kw1" secondAttribute="trailing" id="jo8-we-T1d"/>
+                <constraint firstItem="V7W-cR-ir1" firstAttribute="trailing" secondItem="WpR-Kj-Tyg" secondAttribute="trailing" id="mcJ-nw-fPt"/>
+                <constraint firstItem="Cao-R5-uco" firstAttribute="trailing" secondItem="SIL-X0-SSV" secondAttribute="trailing" id="me2-ti-E7o"/>
+                <constraint firstItem="SIL-X0-SSV" firstAttribute="trailing" secondItem="eBi-VU-sp3" secondAttribute="trailing" id="teb-j6-VQa"/>
+                <constraint firstItem="OLP-Gn-gzM" firstAttribute="centerY" secondItem="WpR-Kj-Tyg" secondAttribute="centerY" id="uRe-61-iYn"/>
             </constraints>
             <nil key="simulatedTopBarMetrics"/>
             <nil key="simulatedBottomBarMetrics"/>
             <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
             <connections>
+                <outlet property="bottomSpace" destination="41K-jv-SH4" id="22G-aI-B4s"/>
                 <outlet property="emailLabel" destination="cnn-JH-ETQ" id="Tw7-E2-9rc"/>
                 <outlet property="phoneLabel" destination="v4W-Tc-Z7P" id="8Ny-d5-rLd"/>
                 <outlet property="versionLabel" destination="7sa-Ud-PzI" id="qhk-vt-cRf"/>
             </connections>
-            <point key="canvasLocation" x="132" y="79"/>
+            <point key="canvasLocation" x="131.8840579710145" y="78.348214285714278"/>
         </view>
     </objects>
     <resources>
-        <image name="klx_logo" width="135" height="40"/>
+        <image name="aboutUs_icon" width="140" height="140"/>
+        <image name="check_detailImage" width="5" height="10"/>
     </resources>
 </document>

+ 12 - 6
KulexiuForStudent/KulexiuForStudent/Module/TXClassRoom/View/NewWhiteboard/KSNewWhiteBoard.m

@@ -228,14 +228,20 @@
 
 - (void)webView:(WKWebView *)webView didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential *_Nullable))completionHandler
 {
-    if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) {
-        if (challenge.previousFailureCount == 0) {
-            NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust];
-            completionHandler(NSURLSessionAuthChallengeUseCredential, credential);
-        } else {
+    dispatch_queue_t queue =  dispatch_queue_create("webViewChallengeQueue", NULL);
+    dispatch_async(queue, ^{
+        if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) {
+            if (challenge.previousFailureCount == 0) {
+                NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust];
+                completionHandler(NSURLSessionAuthChallengeUseCredential, credential);
+            } else {
+                completionHandler(NSURLSessionAuthChallengeCancelAuthenticationChallenge, nil);
+            }
+        }
+        else {
             completionHandler(NSURLSessionAuthChallengeCancelAuthenticationChallenge, nil);
         }
-    }
+    });
 }
 #pragma mark - WKScriptMessageHandler
 - (void)userContentController:(WKUserContentController *)userContentController

+ 9 - 0
KulexiuForStudent/KulexiuForStudent/Module/Widget/Controller/ToneTuningViewController.m

@@ -150,6 +150,7 @@
     BOOL isBack = [self isViewPopDismiss];
     if (isBack) {
         [METRONOME_MANAGER stopPlay];
+        [self removeTuner];
     }
 }
 
@@ -167,6 +168,14 @@
     }
 }
 
+- (void)removeTuner {
+    if (_tuner) {
+        [_tuner freeTuner];
+        _tuner = nil;
+        NSLog(@"--- free tuner ");
+    }
+}
+
 - (CAGradientLayer *)createGradientLayerFromColor:(UIColor *)fromColor startPoint:(CGPoint)startPoint endColor:(UIColor *)endColor endPoint:(CGPoint)endPoint bounds:(CGRect)bounds {
     CAGradientLayer *gradientLayer = [CAGradientLayer layer];
     gradientLayer.colors = @[(__bridge id)fromColor.CGColor, (__bridge id)endColor.CGColor];

+ 10 - 0
KulexiuForStudent/KulexiuForStudent/Module/Widget/Model/TuningFunction/Tuner.swift

@@ -182,6 +182,16 @@ private let frequencies: [Float] = [
         engine!.stop()
     }
     
+    @objc public func freeTuner() {
+        microphone!.stop()
+        pitchTap!.stop()
+        engine!.stop()
+        microphone = nil
+        pitchTap = nil
+        silence = nil
+        engine = nil
+    }
+    
     func tap_handler(freq: [Float], amp: [Float]) -> Void {
         // Reduces sensitivity to background noise to prevent random / fluctuating data.
         guard amp[0] > 0.1 else { return }