소스 검색

1、优化 浏览器、计算器掩盖视图逻辑。
2、完成进程隐藏功能开发。
3、完成联系客户界面处理。
4、初步开始版本更新UI。

wangjian 1 년 전
부모
커밋
f168e3e9eb
47개의 변경된 파일1274개의 추가작업 그리고 39개의 파일을 삭제
  1. 11 11
      Pods/Pods.xcodeproj/xcuserdata/apple.xcuserdatad/xcschemes/xcschememanagement.plist
  2. 48 0
      双子星云手机.xcodeproj/project.pbxproj
  3. BIN
      双子星云手机.xcworkspace/xcuserdata/apple.xcuserdatad/UserInterfaceState.xcuserstate
  4. 10 0
      双子星云手机/AppDelegate/Config/Const.h
  5. 9 0
      双子星云手机/AppDelegate/Config/Const.m
  6. 30 12
      双子星云手机/AppDelegate/SceneDelegate.m
  7. 1 1
      双子星云手机/Assets.xcassets/AppIcon 1.appiconset/Contents.json
  8. BIN
      双子星云手机/Assets.xcassets/AppIcon 1.appiconset/位图.png
  9. BIN
      双子星云手机/Assets.xcassets/AppIcon 1.appiconset/编组 9备份.png
  10. 1 1
      双子星云手机/Assets.xcassets/AppIcon 2.appiconset/Contents.json
  11. BIN
      双子星云手机/Assets.xcassets/AppIcon 2.appiconset/位图 2.png
  12. BIN
      双子星云手机/Assets.xcassets/AppIcon 2.appiconset/位图备份.png
  13. 2 2
      双子星云手机/Assets.xcassets/Set/calculator_icon.imageset/Contents.json
  14. BIN
      双子星云手机/Assets.xcassets/Set/calculator_icon.imageset/编组 2@2x.png
  15. BIN
      双子星云手机/Assets.xcassets/Set/calculator_icon.imageset/编组 2@3x.png
  16. BIN
      双子星云手机/Assets.xcassets/Set/calculator_icon.imageset/编组 9@2x.png
  17. BIN
      双子星云手机/Assets.xcassets/Set/calculator_icon.imageset/编组 9@3x.png
  18. 22 0
      双子星云手机/Assets.xcassets/Set/icon_mask_hiden_set.imageset/Contents.json
  19. BIN
      双子星云手机/Assets.xcassets/Set/icon_mask_hiden_set.imageset/icon-推送@2x.png
  20. BIN
      双子星云手机/Assets.xcassets/Set/icon_mask_hiden_set.imageset/icon-推送@3x.png
  21. 22 0
      双子星云手机/Assets.xcassets/Set/mask_tips_down_img.imageset/Contents.json
  22. BIN
      双子星云手机/Assets.xcassets/Set/mask_tips_down_img.imageset/img@2x.png
  23. BIN
      双子星云手机/Assets.xcassets/Set/mask_tips_down_img.imageset/img@3x.png
  24. 2 2
      双子星云手机/Assets.xcassets/Set/web_icon.imageset/Contents.json
  25. BIN
      双子星云手机/Assets.xcassets/Set/web_icon.imageset/位图@2x.png
  26. BIN
      双子星云手机/Assets.xcassets/Set/web_icon.imageset/位图@3x.png
  27. BIN
      双子星云手机/Assets.xcassets/Set/web_icon.imageset/矩形备份 3@2x.png
  28. BIN
      双子星云手机/Assets.xcassets/Set/web_icon.imageset/矩形备份 3@3x.png
  29. 1 1
      双子星云手机/Base/View/HWSearchBar.h
  30. 8 0
      双子星云手机/Base/View/HWSearchBar.m
  31. 3 0
      双子星云手机/Class/Controller/HWWebViewController.h
  32. 16 5
      双子星云手机/Class/Controller/HWWebViewController.m
  33. 6 2
      双子星云手机/Class/Set/ChangeLogo/ChangeLogoViewController.m
  34. 16 0
      双子星云手机/Class/Set/ChangeLogo/HidenMaskSetViewController.h
  35. 166 0
      双子星云手机/Class/Set/ChangeLogo/HidenMaskSetViewController.m
  36. 15 2
      双子星云手机/Class/Set/ChangeLogo/View/LogoSelectView.m
  37. 19 0
      双子星云手机/Class/Set/CustomerWebViewController.h
  38. 158 0
      双子星云手机/Class/Set/CustomerWebViewController.m
  39. 25 0
      双子星云手机/Class/Set/MySetViewController.m
  40. 17 0
      双子星云手机/Class/Set/appUpdate/AboutViewController.h
  41. 275 0
      双子星云手机/Class/Set/appUpdate/AboutViewController.m
  42. 43 0
      双子星云手机/Class/Set/appUpdate/HWVersionModel.h
  43. 44 0
      双子星云手机/Class/Set/appUpdate/HWVersionModel.m
  44. 39 0
      双子星云手机/Class/Set/appUpdate/HaveNewVersionView.h
  45. 256 0
      双子星云手机/Class/Set/appUpdate/HaveNewVersionView.m
  46. 2 0
      双子星云手机/CloudPlayer/CloudPhoneAPI.h
  47. 7 0
      双子星云手机/zh-Hans.lproj/Localizable.strings

+ 11 - 11
Pods/Pods.xcodeproj/xcuserdata/apple.xcuserdatad/xcschemes/xcschememanagement.plist

@@ -12,57 +12,57 @@
 		<key>HUPhotoBrowser.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>1</integer>
+			<integer>6</integer>
 		</dict>
 		<key>IQKeyboardManager.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>10</integer>
+			<integer>8</integer>
 		</dict>
 		<key>JQImagePicker.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>2</integer>
+			<integer>3</integer>
 		</dict>
 		<key>MJExtension.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>8</integer>
+			<integer>7</integer>
 		</dict>
 		<key>Masonry.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>4</integer>
+			<integer>11</integer>
 		</dict>
 		<key>Pods-双子星云手机-双子星云手机UITests.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>9</integer>
+			<integer>10</integer>
 		</dict>
 		<key>Pods-双子星云手机.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>7</integer>
+			<integer>2</integer>
 		</dict>
 		<key>Pods-双子星云手机Tests.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>3</integer>
+			<integer>5</integer>
 		</dict>
 		<key>SDWebImage.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>6</integer>
+			<integer>1</integer>
 		</dict>
 		<key>SVProgressHUD.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>5</integer>
+			<integer>9</integer>
 		</dict>
 		<key>TZImagePickerController.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>11</integer>
+			<integer>4</integer>
 		</dict>
 	</dict>
 </dict>

+ 48 - 0
双子星云手机.xcodeproj/project.pbxproj

@@ -96,6 +96,16 @@
 		183AE7CC2A8CC14D00B11CB0 /* BuryPoint.m in Sources */ = {isa = PBXBuildFile; fileRef = 183AE7CA2A8CC14C00B11CB0 /* BuryPoint.m */; };
 		18438BE62A04B3AB00981C34 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 18438BE82A04B3AB00981C34 /* Localizable.strings */; };
 		18438BEB2A04DD7D00981C34 /* HWBookmarkViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 18438BED2A04DD7D00981C34 /* HWBookmarkViewController.xib */; };
+		184C8ACC2A94557200F26650 /* HidenMaskSetViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 184C8ACA2A94557200F26650 /* HidenMaskSetViewController.h */; };
+		184C8ACD2A94557200F26650 /* HidenMaskSetViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 184C8ACB2A94557200F26650 /* HidenMaskSetViewController.m */; };
+		184C8AD02A94980D00F26650 /* CustomerWebViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 184C8ACE2A94980C00F26650 /* CustomerWebViewController.h */; };
+		184C8AD12A94980D00F26650 /* CustomerWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 184C8ACF2A94980D00F26650 /* CustomerWebViewController.m */; };
+		184C8AD52A949D5900F26650 /* AboutViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 184C8AD32A949D5900F26650 /* AboutViewController.h */; };
+		184C8AD62A949D5900F26650 /* AboutViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 184C8AD42A949D5900F26650 /* AboutViewController.m */; };
+		184C8AD92A949DAC00F26650 /* HaveNewVersionView.m in Sources */ = {isa = PBXBuildFile; fileRef = 184C8AD72A949DAC00F26650 /* HaveNewVersionView.m */; };
+		184C8ADA2A949DAC00F26650 /* HaveNewVersionView.h in Headers */ = {isa = PBXBuildFile; fileRef = 184C8AD82A949DAC00F26650 /* HaveNewVersionView.h */; };
+		184C8ADD2A949DBD00F26650 /* HWVersionModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 184C8ADB2A949DBD00F26650 /* HWVersionModel.h */; };
+		184C8ADE2A949DBD00F26650 /* HWVersionModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 184C8ADC2A949DBD00F26650 /* HWVersionModel.m */; };
 		1866F99E2A136DC700B31E22 /* iPhone.m in Sources */ = {isa = PBXBuildFile; fileRef = 1866F99C2A136DC600B31E22 /* iPhone.m */; };
 		1893CDCB2A178C3E0074B92F /* HWSetViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1893CDCD2A178C3E0074B92F /* HWSetViewController.xib */; };
 		1893CDD22A178D920074B92F /* HWAgreementViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1893CDD42A178D920074B92F /* HWAgreementViewController.xib */; };
@@ -348,6 +358,16 @@
 		18438BE72A04B3AB00981C34 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
 		18438BE92A04B3AF00981C34 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = "<group>"; };
 		18438BEE2A04DD8100981C34 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/HWBookmarkViewController.xib; sourceTree = "<group>"; };
+		184C8ACA2A94557200F26650 /* HidenMaskSetViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HidenMaskSetViewController.h; sourceTree = "<group>"; };
+		184C8ACB2A94557200F26650 /* HidenMaskSetViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HidenMaskSetViewController.m; sourceTree = "<group>"; };
+		184C8ACE2A94980C00F26650 /* CustomerWebViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomerWebViewController.h; sourceTree = "<group>"; };
+		184C8ACF2A94980D00F26650 /* CustomerWebViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CustomerWebViewController.m; sourceTree = "<group>"; };
+		184C8AD32A949D5900F26650 /* AboutViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AboutViewController.h; sourceTree = "<group>"; };
+		184C8AD42A949D5900F26650 /* AboutViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AboutViewController.m; sourceTree = "<group>"; };
+		184C8AD72A949DAC00F26650 /* HaveNewVersionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HaveNewVersionView.m; sourceTree = "<group>"; };
+		184C8AD82A949DAC00F26650 /* HaveNewVersionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HaveNewVersionView.h; sourceTree = "<group>"; };
+		184C8ADB2A949DBD00F26650 /* HWVersionModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HWVersionModel.h; sourceTree = "<group>"; };
+		184C8ADC2A949DBD00F26650 /* HWVersionModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HWVersionModel.m; sourceTree = "<group>"; };
 		1866F99C2A136DC600B31E22 /* iPhone.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = iPhone.m; sourceTree = "<group>"; };
 		1866F99D2A136DC700B31E22 /* iPhone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iPhone.h; sourceTree = "<group>"; };
 		1893CDCC2A178C3E0074B92F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/HWSetViewController.xib; sourceTree = "<group>"; };
@@ -578,6 +598,8 @@
 				181E84FD2A8F6AF200292B96 /* View */,
 				181E84F92A8F57A500292B96 /* ChangeLogoViewController.h */,
 				181E84FA2A8F57A500292B96 /* ChangeLogoViewController.m */,
+				184C8ACA2A94557200F26650 /* HidenMaskSetViewController.h */,
+				184C8ACB2A94557200F26650 /* HidenMaskSetViewController.m */,
 			);
 			path = ChangeLogo;
 			sourceTree = "<group>";
@@ -840,9 +862,25 @@
 			path = SocketManage;
 			sourceTree = "<group>";
 		};
+		184C8AD22A949D2B00F26650 /* appUpdate */ = {
+			isa = PBXGroup;
+			children = (
+				184C8AD32A949D5900F26650 /* AboutViewController.h */,
+				184C8AD42A949D5900F26650 /* AboutViewController.m */,
+				184C8AD82A949DAC00F26650 /* HaveNewVersionView.h */,
+				184C8AD72A949DAC00F26650 /* HaveNewVersionView.m */,
+				184C8ADB2A949DBD00F26650 /* HWVersionModel.h */,
+				184C8ADC2A949DBD00F26650 /* HWVersionModel.m */,
+			);
+			path = appUpdate;
+			sourceTree = "<group>";
+		};
 		18C4754C2A8E0D9B006129C0 /* Set */ = {
 			isa = PBXGroup;
 			children = (
+				184C8AD22A949D2B00F26650 /* appUpdate */,
+				184C8ACE2A94980C00F26650 /* CustomerWebViewController.h */,
+				184C8ACF2A94980D00F26650 /* CustomerWebViewController.m */,
 				181E84F82A8F577D00292B96 /* ChangeLogo */,
 				181E84F52A8F451D00292B96 /* MineViewCell.h */,
 				181E84F42A8F451C00292B96 /* MineViewCell.m */,
@@ -1240,6 +1278,8 @@
 			isa = PBXHeadersBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				184C8AD02A94980D00F26650 /* CustomerWebViewController.h in Headers */,
+				184C8ADA2A949DAC00F26650 /* HaveNewVersionView.h in Headers */,
 				183AE6D12A8CA98C00B11CB0 /* CloudPhoneAPI.h in Headers */,
 				183AE6C72A8CA4D200B11CB0 /* PlayerViewController+AdjustBtnFrame.h in Headers */,
 				183AE6C82A8CA4D700B11CB0 /* PlayerViewController+AppDelegate.h in Headers */,
@@ -1250,8 +1290,11 @@
 				181E84F22A8F0A9B00292B96 /* HelpDownScrollView.h in Headers */,
 				181E84FB2A8F57A500292B96 /* ChangeLogoViewController.h in Headers */,
 				18C4754F2A8E0DB5006129C0 /* MySetViewController.h in Headers */,
+				184C8ADD2A949DBD00F26650 /* HWVersionModel.h in Headers */,
 				181E84F72A8F451D00292B96 /* MineViewCell.h in Headers */,
 				183AE6D42A8CAFAE00B11CB0 /* UIView+View.h in Headers */,
+				184C8ACC2A94557200F26650 /* HidenMaskSetViewController.h in Headers */,
+				184C8AD52A949D5900F26650 /* AboutViewController.h in Headers */,
 				183AE7CB2A8CC14D00B11CB0 /* BuryPoint.h in Headers */,
 				183AE7C72A8CB39100B11CB0 /* SafeForKey.h in Headers */,
 			);
@@ -1563,6 +1606,7 @@
 				181E85012A8F6B1800292B96 /* LogoSelectView.m in Sources */,
 				A031DD6827EC195400909527 /* HWBookmarkViewController.m in Sources */,
 				183AE6572A8A2CF000B11CB0 /* AFURLRequestSerialization.m in Sources */,
+				184C8AD92A949DAC00F26650 /* HaveNewVersionView.m in Sources */,
 				A003F6B527D841EE00715CBF /* UIView+HWCategory.m in Sources */,
 				A003F6E227D8428200715CBF /* Const.m in Sources */,
 				183AE5DA2A89CD0600B11CB0 /* SetUserAgreementView.m in Sources */,
@@ -1600,9 +1644,11 @@
 				183AE61B2A8A27BC00B11CB0 /* VclLog.m in Sources */,
 				183AE6582A8A2CF000B11CB0 /* AFNetworkReachabilityManager.m in Sources */,
 				18E557322A3C6151005CC84B /* UITextField+SPExtension.m in Sources */,
+				184C8AD12A94980D00F26650 /* CustomerWebViewController.m in Sources */,
 				A08A94FD27E9A4E400C544BB /* NSObject+BGModel.m in Sources */,
 				181E84F32A8F0A9B00292B96 /* HelpDownScrollView.m in Sources */,
 				181E84F62A8F451D00292B96 /* MineViewCell.m in Sources */,
+				184C8ADE2A949DBD00F26650 /* HWVersionModel.m in Sources */,
 				183AE64C2A8A2CF000B11CB0 /* UIProgressView+AFNetworking.m in Sources */,
 				A031DD7527EC507000909527 /* HWAddFolderViewController.m in Sources */,
 				183AE6CF2A8CA55E00B11CB0 /* ShortcutManager.m in Sources */,
@@ -1618,6 +1664,7 @@
 				183AE5D72A89CBDC00B11CB0 /* InputViewForSMSCod.m in Sources */,
 				A00221E727EB25B000E45F78 /* HWBookmarkModel.m in Sources */,
 				A08A94FC27E9A4E400C544BB /* NSCache+BGCache.m in Sources */,
+				184C8AD62A949D5900F26650 /* AboutViewController.m in Sources */,
 				183AE6062A89CE3C00B11CB0 /* JSONModelArray.m in Sources */,
 				183AE6562A8A2CF000B11CB0 /* AFURLSessionManager.m in Sources */,
 				183AE6092A89CE3C00B11CB0 /* JSONAPI.m in Sources */,
@@ -1628,6 +1675,7 @@
 				A003F6D227D8425C00715CBF /* HWDataManager.m in Sources */,
 				18C475502A8E0DB5006129C0 /* MySetViewController.m in Sources */,
 				A003F6C127D841FF00715CBF /* FLAnimatedImageView.m in Sources */,
+				184C8ACD2A94557200F26650 /* HidenMaskSetViewController.m in Sources */,
 				183AE6AA2A8C9EAB00B11CB0 /* PlayerViewController+AppDelegate.m in Sources */,
 				A003F6A827D841C800715CBF /* BaseModel.m in Sources */,
 				A0295B1627EDA0EC009C5D8B /* HWHistoryModel.m in Sources */,

BIN
双子星云手机.xcworkspace/xcuserdata/apple.xcuserdatad/UserInterfaceState.xcuserstate


+ 10 - 0
双子星云手机/AppDelegate/Config/Const.h

@@ -41,6 +41,16 @@ UIKIT_EXTERN NSString *const Const_lastSetUserAgreementView;
 UIKIT_EXTERN NSString *const Const_HWLoginDictionary; // 保存账号登录字典的的key
 UIKIT_EXTERN NSString *const Const_HWAccountPhoneNumber; // 保存账号手机号的的key
 UIKIT_EXTERN NSString *const Const_Volume_Info_Dict;
+
+
+/*进城隐藏是否打开 YES:打开  其他关闭*/
+UIKIT_EXTERN NSString *const Const_Mask_View_Open;
+
+/*进城隐藏模式 1:计算器  2:浏览器 其他默认计算器*/
+UIKIT_EXTERN NSString *const Const_Mask_View_Model;
+
+/**App有新版本更新*/
+UIKIT_EXTERN NSString *const Const_haveVersion;
 @end
 
 NS_ASSUME_NONNULL_END

+ 9 - 0
双子星云手机/AppDelegate/Config/Const.m

@@ -38,4 +38,13 @@ NSString *const Const_lastSetUserAgreementView = @"lastSetUserAgreementView";
 NSString *const Const_HWLoginDictionary = @"Const_HWLoginDictionary"; // 保存账号登录字典的的key
 NSString *const Const_HWAccountPhoneNumber = @"HWAccountPhoneNumber"; // 保存账号手机号的的key
 NSString *const Const_Volume_Info_Dict  = @"Const_Volume_Info_Dict";
+
+/*进城隐藏是否打开 1:打开  其他关闭*/
+NSString *const Const_Mask_View_Open  = @"Const_Mask_View_Open";
+
+/*进城隐藏模式 1:计算器  2:浏览器 其他默认计算器*/
+NSString *const Const_Mask_View_Model  = @"Const_Mask_View_Model";
+
+/**App有新版本更新*/
+NSString *const Const_haveVersion = @"Const_haveVersion";
 @end

+ 30 - 12
双子星云手机/AppDelegate/SceneDelegate.m

@@ -18,6 +18,7 @@
 
 @interface SceneDelegate ()<SetUsePWDViewControllerDelegate,GuideViewControllerDelegate,LoginForViewControllerDelegate>
 @property(nonatomic, strong)   CalculatorViewController *calculatorVC;
+@property(nonatomic, strong)   HWWebViewController *webVC;
 @end
 
 @implementation SceneDelegate
@@ -283,22 +284,39 @@
 #pragma mark 计算器伪装视图
 /*CalculatorViewController*/
 - (void)showCalculatorVC{
+//    /*进城隐藏是否打开 YES:打开  其他关闭*/
+//    UIKIT_EXTERN NSString *const Const_Mask_View_Open;
+//
+//    /*进城隐藏模式 1:计算器  2:浏览器 其他默认计算器*/
+//    UIKIT_EXTERN NSString *const Const_Mask_View_Model;
+    
     NSString *launchAppPWDPath = [self documentPathForAccount:@"" fileFolder:@"LaunchPWD"];
     NSString *str = [[NSString alloc] initWithContentsOfFile:launchAppPWDPath encoding:(NSUTF8StringEncoding) error:nil];
     if (!str || [str isEqualToString:@""])
     {
         return;
     }
-        
-    [self closeCalculatorVC];
     
-    _calculatorVC = [[CalculatorViewController alloc] init];
-    _calculatorVC.pwd = str;
-    [self.window addSubview:_calculatorVC.view];
-
-    /*浏览器*/
-//    _webVC = [[HWWebViewController alloc] init];
-//    [self.window addSubview:_webVC.view];
+    BOOL haveOpenMask = [HWDataManager getBoolWithKey:Const_Mask_View_Open];
+    if (!haveOpenMask){
+        return;
+    }
+    
+    NSInteger maskModel = [HWDataManager getIntegerWithKey:Const_Mask_View_Model];
+    if (maskModel == 2){
+        /*浏览器*/
+        [self closeCalculatorVC];
+        _webVC = [[HWWebViewController alloc] init];
+        _webVC.pwd = str;
+        _webVC.webUrl = @"https://baidu.com";
+        [self.window addSubview:_webVC.view];
+    }else{
+        /*计算器*/
+        [self closeCalculatorVC];
+        _calculatorVC = [[CalculatorViewController alloc] init];
+        _calculatorVC.pwd = str;
+        [self.window addSubview:_calculatorVC.view];
+    }
 }
 
 - (void)closeCalculatorVC{
@@ -307,9 +325,9 @@
     }
     
     /*浏览器*/
-//    if (_webVC){
-//        [_webVC.view removeFromSuperview];
-//    }
+    if (_webVC){
+        [_webVC.view removeFromSuperview];
+    }
 }
 
 - (NSString *)documentPathForAccount:(NSString *)account fileFolder:(NSString *)fileFolder {

+ 1 - 1
双子星云手机/Assets.xcassets/AppIcon 1.appiconset/Contents.json

@@ -1,7 +1,7 @@
 {
   "images" : [
     {
-      "filename" : "位图.png",
+      "filename" : "编组 9备份.png",
       "idiom" : "universal",
       "platform" : "ios",
       "size" : "1024x1024"

BIN
双子星云手机/Assets.xcassets/AppIcon 1.appiconset/位图.png


BIN
双子星云手机/Assets.xcassets/AppIcon 1.appiconset/编组 9备份.png


+ 1 - 1
双子星云手机/Assets.xcassets/AppIcon 2.appiconset/Contents.json

@@ -1,7 +1,7 @@
 {
   "images" : [
     {
-      "filename" : "位图 2.png",
+      "filename" : "位图备份.png",
       "idiom" : "universal",
       "platform" : "ios",
       "size" : "1024x1024"

BIN
双子星云手机/Assets.xcassets/AppIcon 2.appiconset/位图 2.png


BIN
双子星云手机/Assets.xcassets/AppIcon 2.appiconset/位图备份.png


+ 2 - 2
双子星云手机/Assets.xcassets/Set/calculator_icon.imageset/Contents.json

@@ -5,12 +5,12 @@
       "scale" : "1x"
     },
     {
-      "filename" : "编组 2@2x.png",
+      "filename" : "编组 9@2x.png",
       "idiom" : "universal",
       "scale" : "2x"
     },
     {
-      "filename" : "编组 2@3x.png",
+      "filename" : "编组 9@3x.png",
       "idiom" : "universal",
       "scale" : "3x"
     }

BIN
双子星云手机/Assets.xcassets/Set/calculator_icon.imageset/编组 2@2x.png


BIN
双子星云手机/Assets.xcassets/Set/calculator_icon.imageset/编组 2@3x.png


BIN
双子星云手机/Assets.xcassets/Set/calculator_icon.imageset/编组 9@2x.png


BIN
双子星云手机/Assets.xcassets/Set/calculator_icon.imageset/编组 9@3x.png


+ 22 - 0
双子星云手机/Assets.xcassets/Set/icon_mask_hiden_set.imageset/Contents.json

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

BIN
双子星云手机/Assets.xcassets/Set/icon_mask_hiden_set.imageset/icon-推送@2x.png


BIN
双子星云手机/Assets.xcassets/Set/icon_mask_hiden_set.imageset/icon-推送@3x.png


+ 22 - 0
双子星云手机/Assets.xcassets/Set/mask_tips_down_img.imageset/Contents.json

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

BIN
双子星云手机/Assets.xcassets/Set/mask_tips_down_img.imageset/img@2x.png


BIN
双子星云手机/Assets.xcassets/Set/mask_tips_down_img.imageset/img@3x.png


+ 2 - 2
双子星云手机/Assets.xcassets/Set/web_icon.imageset/Contents.json

@@ -5,12 +5,12 @@
       "scale" : "1x"
     },
     {
-      "filename" : "矩形备份 3@2x.png",
+      "filename" : "位图@2x.png",
       "idiom" : "universal",
       "scale" : "2x"
     },
     {
-      "filename" : "矩形备份 3@3x.png",
+      "filename" : "位图@3x.png",
       "idiom" : "universal",
       "scale" : "3x"
     }

BIN
双子星云手机/Assets.xcassets/Set/web_icon.imageset/位图@2x.png


BIN
双子星云手机/Assets.xcassets/Set/web_icon.imageset/位图@3x.png


BIN
双子星云手机/Assets.xcassets/Set/web_icon.imageset/矩形备份 3@2x.png


BIN
双子星云手机/Assets.xcassets/Set/web_icon.imageset/矩形备份 3@3x.png


+ 1 - 1
双子星云手机/Base/View/HWSearchBar.h

@@ -13,7 +13,7 @@ NS_ASSUME_NONNULL_BEGIN
 
 @optional
 - (void)searchBarWithText:(NSString *)text;
-
+- (void)searchBarChangeText:(NSString *)text;
 @end
 
 @interface HWSearchBar : UIView

+ 8 - 0
双子星云手机/Base/View/HWSearchBar.m

@@ -38,6 +38,7 @@
     
     self.textField.clearButtonMode = UITextFieldViewModeWhileEditing;
     self.textField.returnKeyType = UIReturnKeySearch;
+    [self.textField addTarget:self action:@selector(textDidChange:) forControlEvents:UIControlEventEditingChanged];
     self.textField.delegate = self;
     self.textField.textColor = HWFFFFFFColor;
 }
@@ -68,6 +69,7 @@
     self.searchPlaceHolder.hidden = textField.text.length != 0;
 }
 
+
 - (BOOL)textFieldShouldReturn:(UITextField *)textField {
 //    HLog(@"搜索");
     [self.textField endEditing:YES];
@@ -79,4 +81,10 @@
     return YES;
 }
 
+- (void)textDidChange:(UITextField*)textField{
+    if ([_delegate respondsToSelector:@selector(searchBarChangeText:)]) {
+        [_delegate searchBarChangeText:textField.text];
+    }
+}
+
 @end

+ 3 - 0
双子星云手机/Class/Controller/HWWebViewController.h

@@ -13,6 +13,9 @@ NS_ASSUME_NONNULL_BEGIN
 
 @property (nonatomic,copy) NSString *webUrl;
 
+/*密码用于关闭浏览器界面*/
+@property(nonatomic,copy)NSString *pwd;
+
 @end
 
 NS_ASSUME_NONNULL_END

+ 16 - 5
双子星云手机/Class/Controller/HWWebViewController.m

@@ -104,7 +104,7 @@
 - (void)drawView {
     
     self.view.backgroundColor = [UIColor hwColor:@"#1C1C1E"];
-    
+    [self.toolBar setHidden:YES];
     // WKWebView
     WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
     self.webView = [[WKWebView alloc] initWithFrame:CGRectMake(0, 0, 0, 0) configuration:config];
@@ -169,6 +169,10 @@
 #pragma mark - HWSearchBarDelegate
 - (void)searchBarWithText:(NSString *)text {
     HLog(@"搜索:%@", text)
+    if ([_pwd isEqualToString:text] && (_pwd.length == 4)){
+        [self.view removeFromSuperview];
+    }
+    
     if (text.length != 0) {
 
         if ([text hasPrefix:@"https://"] ||
@@ -182,6 +186,13 @@
     }
 }
 
+- (void)searchBarChangeText:(NSString *)text{
+    HLog(@"\n----searchBarChangeText===%@-------",text);
+    if ([_pwd isEqualToString:text] && (_pwd.length == 4)){
+        [self.view removeFromSuperview];
+    }
+}
+
 #pragma mark - HWToolBarDelegate
 - (void)backBtnDidClick {
     HLog(@"后退");
@@ -248,7 +259,7 @@
         
         if (object == self.webView) {
             
-            [self.navigationBar.textField setText:self.webView.title];
+//            [self.navigationBar.textField setText:self.webView.title];
             self.navigationBar.searchImageView.hidden = self.webView.title.length != 0;
             self.navigationBar.searchPlaceHolder.hidden = self.webView.title.length != 0;
 
@@ -355,9 +366,9 @@
     self.toolBar.backBtn.enabled = [self.webView canGoBack] || index > 0;
     self.toolBar.forwardBtn.enabled = [self.webView canGoForward];
     
-    if (webView.title && webView.title.length > 0 ) {
-        [self.navigationBar.textField setText:webView.title];
-    }
+//    if (webView.title && webView.title.length > 0 ) {
+//        [self.navigationBar.textField setText:webView.title];
+//    }
 }
 
 // 在发送请求之前,决定是否跳转

+ 6 - 2
双子星云手机/Class/Set/ChangeLogo/ChangeLogoViewController.m

@@ -226,10 +226,14 @@
     
     if (logoSelectView.selectIndex == 1){
         /*设置图标*/
-        [[UIApplication sharedApplication] setAlternateIconName:@"AppIcon 1" completionHandler:^(NSError * _Nullable error) {}];
+        [[UIApplication sharedApplication] setAlternateIconName:@"AppIcon 1" completionHandler:^(NSError * _Nullable error) {
+            [HWDataManager setIntegerWithKey:Const_Mask_View_Model value:1];
+        }];
     }else if (logoSelectView.selectIndex == 2){
         /*设置图标*/
-        [[UIApplication sharedApplication] setAlternateIconName:@"AppIcon 2" completionHandler:^(NSError * _Nullable error) {}];
+        [[UIApplication sharedApplication] setAlternateIconName:@"AppIcon 2" completionHandler:^(NSError * _Nullable error) {
+            [HWDataManager setIntegerWithKey:Const_Mask_View_Model value:2];
+        }];
     }
 }
 

+ 16 - 0
双子星云手机/Class/Set/ChangeLogo/HidenMaskSetViewController.h

@@ -0,0 +1,16 @@
+//
+//  HidenMaskSetViewController.h
+//  双子星云手机
+//
+//  Created by APPLE on 2023/8/22.
+//
+
+#import "BaseViewController.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface HidenMaskSetViewController : BaseViewController
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 166 - 0
双子星云手机/Class/Set/ChangeLogo/HidenMaskSetViewController.m

@@ -0,0 +1,166 @@
+//
+//  HidenMaskSetViewController.m
+//  双子星云手机
+//
+//  Created by APPLE on 2023/8/22.
+//
+
+#import "HidenMaskSetViewController.h"
+#import <Masonry.h>
+
+@interface HidenMaskSetViewController ()
+
+@end
+
+@implementation HidenMaskSetViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view.
+    
+    [self drawAnyView];
+}
+
+- (void)drawAnyView{
+    [self.view setBackgroundColor:HWF5F7FAColor];
+    
+    [self.toolBar setHidden:YES];
+    [self.navigationBar setHidden:YES];
+    [self.navBarBGView setHidden:NO];
+    [self.titleLabel setText:NSLocalizedString(@"mask_view_hiden_set",nil)];
+    
+    /*进程隐藏设置*/
+    UIView *bgView = [[UIView alloc] init];
+    [bgView setBackgroundColor:[UIColor whiteColor]];
+    [self.view addSubview:bgView];
+    [bgView.layer setCornerRadius:8.f];
+    [bgView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(16.f);
+        make.right.mas_equalTo(-16.f);
+        make.height.mas_equalTo(60.f);
+        make.top.equalTo(self.navBarBGView.mas_bottom).offset(12.f);
+    }];
+    
+    UIImageView *leftImage = [[UIImageView alloc] init];
+    [leftImage setImage:[UIImage imageNamed:@"icon_mask_hiden_set"]];
+    [bgView addSubview:leftImage];
+    [leftImage mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(14.f);
+        make.width.mas_equalTo(28.f);
+        make.height.mas_equalTo(28.f);
+        make.centerY.equalTo(bgView.mas_centerY);
+    }];
+    
+    UILabel *tipsLabel = [[UILabel alloc] init];
+    [tipsLabel setText:NSLocalizedString(@"mask_view_hiden_set_hiden",nil)];
+    [tipsLabel setTextColor:HW0A132BColor];
+    [tipsLabel setFont:[UIFont systemFontOfSize:13.f]];
+    [bgView addSubview:tipsLabel];
+    [tipsLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(47.f);
+        make.width.mas_equalTo(100.f);
+        make.height.mas_equalTo(18.f);
+        make.centerY.equalTo(bgView.mas_centerY);
+    }];
+    
+    UISwitch *maskSwitch = [[UISwitch alloc] init];
+    [bgView addSubview:maskSwitch];
+    [maskSwitch mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.right.mas_equalTo(-16.f);
+        make.centerY.equalTo(bgView.mas_centerY);
+    }];
+    [maskSwitch setOnTintColor:HW13B2EBColor];
+    [maskSwitch addTarget:self action:@selector(maskSwitchPressed:) forControlEvents:(UIControlEventValueChanged)];
+    
+    BOOL haveOpenMask = [HWDataManager getBoolWithKey:Const_Mask_View_Open];
+    [maskSwitch setOn:haveOpenMask];
+    
+    /*功能说明*/
+    UILabel *strTipsLabel = [[UILabel alloc] init];
+    [strTipsLabel setText:NSLocalizedString(@"mask_view_hiden_funct_struct",nil)];
+    [strTipsLabel setTextColor:HW0A132BColor];
+    [strTipsLabel setFont:[UIFont boldSystemFontOfSize:16.f]];
+    [self.view addSubview:strTipsLabel];
+    [strTipsLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(16.f);
+        make.width.mas_equalTo(100.f);
+        make.height.mas_equalTo(22.f);
+        make.top.equalTo(bgView.mas_bottom).offset(24.f);
+    }];
+    
+    /*底部提示视图*/
+    UIView *bgDownView = [[UIView alloc] init];
+    [bgDownView setBackgroundColor:[UIColor whiteColor]];
+    [self.view addSubview:bgDownView];
+    [bgDownView.layer setCornerRadius:8.f];
+    [bgDownView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(16.f);
+        make.right.mas_equalTo(-16.f);
+        make.height.mas_equalTo(329.f);
+        make.top.equalTo(strTipsLabel.mas_bottom).offset(12.f);
+    }];
+    
+    UIImageView *downImage = [[UIImageView alloc] init];
+    [downImage setImage:[UIImage imageNamed:@"mask_tips_down_img"]];
+    [bgDownView addSubview:downImage];
+    [downImage mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.mas_equalTo(30.f);
+        make.width.mas_equalTo(286.f);
+        make.height.mas_equalTo(236.f);
+        make.centerX.equalTo(bgDownView.mas_centerX);
+    }];
+    
+    UILabel *tipsDownLeftLabel = [[UILabel alloc] init];
+    [tipsDownLeftLabel setText:NSLocalizedString(@"mask_view_hiden_up_swipe",nil)];
+    [tipsDownLeftLabel setTextColor:HW0A132BColor];
+    [tipsDownLeftLabel setFont:[UIFont systemFontOfSize:13.f]];
+    [tipsDownLeftLabel setTextAlignment:(NSTextAlignmentCenter)];
+    [bgDownView addSubview:tipsDownLeftLabel];
+    [tipsDownLeftLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(downImage.mas_bottom).offset(15.f);
+        make.width.mas_equalTo(100.f);
+        make.height.mas_equalTo(18.f);
+        make.centerX.equalTo(downImage.mas_centerX).offset(-76);
+    }];
+    
+    UILabel *tipsDownRightLabel = [[UILabel alloc] init];
+    [tipsDownRightLabel setText:NSLocalizedString(@"mask_view_hiden_app_window",nil)];
+    [tipsDownRightLabel setTextColor:HW0A132BColor];
+    [tipsDownRightLabel setFont:[UIFont systemFontOfSize:13.f]];
+    [tipsDownRightLabel setTextAlignment:(NSTextAlignmentCenter)];
+    [bgDownView addSubview:tipsDownRightLabel];
+    [tipsDownRightLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(downImage.mas_bottom).offset(15.f);
+        make.width.mas_equalTo(100.f);
+        make.height.mas_equalTo(18.f);
+        make.centerX.equalTo(downImage.mas_centerX).offset(76);
+    }];
+    
+    UILabel *downTipsLabel = [[UILabel alloc] init];
+    [downTipsLabel setText:NSLocalizedString(@"mask_view_hiden_app_window_detail",nil)];
+    [downTipsLabel setNumberOfLines:0];
+    [downTipsLabel setTextColor:HW666666Color];
+    [downTipsLabel setFont:[UIFont systemFontOfSize:13.f]];
+    [self.view addSubview:downTipsLabel];
+    [downTipsLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(16.f);
+        make.right.mas_equalTo(-16.f);
+        make.height.mas_equalTo(36.f);
+        make.top.equalTo(bgDownView.mas_bottom).offset(12.f);
+    }];
+}
+
+- (void)maskSwitchPressed:(UISwitch *)maskSwitch{
+    [HWDataManager setBoolWithKey:Const_Mask_View_Open value:maskSwitch.on];
+}
+/*
+#pragma mark - Navigation
+
+// In a storyboard-based application, you will often want to do a little preparation before navigation
+- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
+    // Get the new view controller using [segue destinationViewController].
+    // Pass the selected object to the new view controller.
+}
+*/
+
+@end

+ 15 - 2
双子星云手机/Class/Set/ChangeLogo/View/LogoSelectView.m

@@ -51,6 +51,9 @@
         make.height.mas_equalTo(22);
     }];
     
+    /*掩盖视图类型*/
+    NSInteger maskModel = [HWDataManager getIntegerWithKey:Const_Mask_View_Model];
+    
     /*按钮选择*/
     UIView *bgView = [[UIView alloc] init];
     [bgView setBackgroundColor:[UIColor whiteColor]];
@@ -79,7 +82,12 @@
     }];
     
     [claBtn.layer setBorderWidth:2];
-    [claBtn.layer setBorderColor:[UIColor clearColor].CGColor];
+    if (maskModel == 1){
+        selectIndex = 1;
+        [claBtn.layer setBorderColor:HW13B2EBColor.CGColor];
+    }else{
+        [claBtn.layer setBorderColor:[UIColor clearColor].CGColor];
+    }
     [claBtn setTitle:NSLocalizedString(@"logo_calculator",nil) forState:(UIControlStateNormal)];
     [claBtn setTitleColor:HW0A132BColor forState:(UIControlStateNormal)];
     [claBtn.titleLabel setFont:[UIFont systemFontOfSize:14]];
@@ -103,7 +111,12 @@
     }];
     
     [bowserBtn.layer setBorderWidth:2];
-    [bowserBtn.layer setBorderColor:[UIColor clearColor].CGColor];
+    if (maskModel == 2){
+        selectIndex = 2;
+        [bowserBtn.layer setBorderColor:HW13B2EBColor.CGColor];
+    }else{
+        [bowserBtn.layer setBorderColor:[UIColor clearColor].CGColor];
+    }
     [bowserBtn setTitle:NSLocalizedString(@"logo_bowser",nil) forState:(UIControlStateNormal)];
     [bowserBtn setTitleColor:HW0A132BColor forState:(UIControlStateNormal)];
     [bowserBtn.titleLabel setFont:[UIFont systemFontOfSize:14]];

+ 19 - 0
双子星云手机/Class/Set/CustomerWebViewController.h

@@ -0,0 +1,19 @@
+//
+//  CustomerWebViewController.h
+//  VclustersGemini
+//
+//  Created by 余衡武 on 2022/8/11.
+//  Copyright © 2022 APPLE. All rights reserved.
+//
+
+#import "BaseViewController.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CustomerWebViewController : BaseViewController
+
+@property (nonatomic,copy) NSString *webUrl;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 158 - 0
双子星云手机/Class/Set/CustomerWebViewController.m

@@ -0,0 +1,158 @@
+//
+//  CustomerWebViewController.m
+//  VclustersGemini
+//
+//  Created by 余衡武 on 2022/8/11.
+//  Copyright © 2022 APPLE. All rights reserved.
+//
+
+#import "CustomerWebViewController.h"
+#import <WebKit/WebKit.h>
+
+@interface CustomerWebViewController ()<WKScriptMessageHandler,WKNavigationDelegate,WKUIDelegate>
+
+@property (nonatomic,strong) WKWebView                    *webView;
+
+@end
+
+@implementation CustomerWebViewController
+
+-(void)viewWillAppear:(BOOL)animated {
+    [super viewWillAppear:animated];
+
+}
+
+- (void)viewWillDisappear:(BOOL)animated {
+    [super viewWillDisappear:animated];
+
+}
+
+- (void)viewDidAppear:(BOOL)animated {
+    [super viewDidAppear:animated];
+    
+    /**导航栏显示*/
+
+}
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    
+    [self drawView];
+}
+
+- (void)drawView {
+    
+    [self.toolBar setHidden:YES];
+    [self.navigationBar setHidden:YES];
+    [self.navBarBGView setHidden:NO];
+    self.titleLabel.text = @"隐形空间客服";
+    
+    // WKWebView
+    WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
+    self.webView = [[WKWebView alloc] initWithFrame:CGRectMake(0, 0, 0, 0) configuration:config];
+    // 解决闪白问题
+    self.view.backgroundColor = [UIColor whiteColor];
+    self.webView.backgroundColor = [UIColor whiteColor];
+    self.webView.scrollView.backgroundColor = [UIColor whiteColor];
+    self.webView.opaque = NO;
+    self.webView.navigationDelegate = self;
+    self.webView.UIDelegate = self;
+    [self.view addSubview:self.webView];
+    [self.webView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.navBarBGView.mas_bottom);
+        make.left.mas_equalTo(0);
+        make.width.mas_equalTo(SCREEN_W);
+        make.bottom.mas_equalTo(0);
+    }];
+    
+    // 加载网页
+    NSURL *url = [NSURL URLWithString:self.webUrl];
+    NSURLRequest *request = [NSURLRequest requestWithURL:url];
+    [self.webView loadRequest:request];
+}
+
+#pragma mark 事件代理
+// 页面开始加载时调用
+-(void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation{
+    [self showWebView0];
+}
+// 当内容开始返回时调用
+- (void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation{
+    
+}
+// 页面加载完成之后调用
+- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation{//这里修改导航栏的标题,动态改变
+    [self removeNewIndicator];
+    
+    [self showWebView1];
+}
+// 页面加载失败时调用
+- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation{
+    [self removeNewIndicator];
+
+    [self showWebView3];
+}
+
+#pragma mark - 解决wkwebView闪白问题
+// 解决wkwebView闪白问题
+- (void)showWebView0 {
+    
+    self.webView.hidden = YES;
+    
+    [self performSelector:@selector(showWebView1) withObject:self afterDelay:1];
+    
+    [self showNewIndicatorWithCanBack:YES canTouch:NO];
+}
+    
+// 1改变网页内容背景颜色
+- (void)showWebView1 {
+    [self performSelector:@selector(showWebView2) withObject:self afterDelay:0.2];
+}
+
+// 2加载成功
+- (void)showWebView2 {
+    [self removeNewIndicator];
+    self.webView.hidden = NO;
+}
+
+// 3加载失败
+- (void)showWebView3 {
+    [self removeNewIndicator];
+}
+
+// 接收到服务器跳转请求之后再执行
+- (void)webView:(WKWebView *)webView didReceiveServerRedirectForProvisionalNavigation:(WKNavigation *)navigation{
+    
+}
+// 在收到响应后,决定是否跳转
+- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler{
+
+    WKNavigationResponsePolicy actionPolicy = WKNavigationResponsePolicyAllow;
+    //这句是必须加上的,不然会异常
+    decisionHandler(actionPolicy);
+    
+    NSArray *arrViewControllers = self.navigationController.viewControllers;
+    NSInteger index = [arrViewControllers indexOfObject:self];
+}
+
+// 在发送请求之前,决定是否跳转
+- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler{
+    
+    if (navigationAction.targetFrame == nil) {
+
+        [webView loadRequest:navigationAction.request];
+
+    }
+    
+    //这句是必须加上的,不然会异常
+    decisionHandler(WKNavigationActionPolicyAllow);
+}
+
+#pragma mark - WKScriptMessageHandler
+- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message {
+    HLog(@"%@",message.body);
+    HLog(@"%@",message.name);
+}
+
+
+@end

+ 25 - 0
双子星云手机/Class/Set/MySetViewController.m

@@ -12,6 +12,9 @@
 #import "HelpDownScrollView.h"
 #import "MineViewCell.h"
 #import "ChangeLogoViewController.h"
+#import "HidenMaskSetViewController.h"
+#import "CustomerWebViewController.h"
+#import "AboutViewController.h"
 
 @interface MySetViewController ()<HelpDownScrollViewDelegate,UITableViewDelegate,UITableViewDataSource>
 
@@ -169,6 +172,9 @@
     if (index == 0){
         ChangeLogoViewController *nextVC = [[ChangeLogoViewController alloc] init];
         [self.navigationController pushViewController:nextVC animated:YES];
+    }else if (index == 1){/**/
+        HidenMaskSetViewController *nextVC = [[HidenMaskSetViewController alloc] init];
+        [self.navigationController pushViewController:nextVC animated:YES];
     }
 }
 
@@ -279,6 +285,25 @@
     [tableView deselectRowAtIndexPath:indexPath animated:YES];
     
     NSInteger row = indexPath.row;
+    
+    if (3 == row){
+        CustomerWebViewController *vc = [[CustomerWebViewController alloc] init];
+        
+        NSDictionary *dictLogin = [[UseAccountManage shareInstance] getLoginInfo];
+        if (dictLogin && [[dictLogin allKeys] containsObject:@"token"])
+        {
+            NSString *tokenStr = [dictLogin objectForKey:@"token"];
+            NSString *url = [NSString stringWithFormat:@"%@/h5/customer-service?autoopen=true&token=%@", CloudService, tokenStr];
+            if ([CloudService containsString:@"14.18.190.141:11180"]) { // 测试环境
+                url = [NSString stringWithFormat:@"http://testprivacy.phone.armclouding.com:11180/h5/customer-service?autoopen=true&token=%@", tokenStr];
+            }
+            vc.webUrl = url;
+            [self.navigationController pushViewController:vc animated:YES];
+        }
+    }else if (2 == row){
+        AboutViewController *vc = [[AboutViewController alloc] init];
+        [self.navigationController pushViewController:vc animated:YES];
+    }
 }
 
 @end

+ 17 - 0
双子星云手机/Class/Set/appUpdate/AboutViewController.h

@@ -0,0 +1,17 @@
+//
+//  AboutViewController.h
+//  VclustersGemini
+//
+//  Created by APPLE on 2020/2/24.
+//  Copyright © 2020 APPLE. All rights reserved.
+//
+
+#import "BaseViewController.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface AboutViewController : BaseViewController
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 275 - 0
双子星云手机/Class/Set/appUpdate/AboutViewController.m

@@ -0,0 +1,275 @@
+//
+//  AboutViewController.m
+//  VclustersGemini
+//
+//  Created by APPLE on 2020/2/24.
+//  Copyright © 2020 APPLE. All rights reserved.
+//
+
+#import "AboutViewController.h"
+#import "HaveNewVersionView.h"
+#import "HWVersionModel.h"
+#import "iPhone.h"
+#import "UseAccountManage.h"
+#import "CloudPhoneAPI.h"
+#import <MJExtension.h>
+
+@interface AboutViewController ()
+
+@property (nonatomic, strong) UIButton *ruleBtn;
+@property (nonatomic, strong) UIButton *privateBtn;
+@property (nonatomic, strong) HWVersionModel *versionModel;
+
+@end
+
+@implementation AboutViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+
+    [self drawAnyView];
+}
+
+- (void)viewDidAppear:(BOOL)animated {
+    [super viewDidAppear:animated];
+    
+}
+
+- (void)drawAnyView
+{
+    [self.view setBackgroundColor:HWF5F7FAColor];
+    self.navBarBGView.hidden = NO;
+    [self.navigationBar setHidden:YES];
+    [self.toolBar setHidden:YES];
+    [self.titleLabel setText:@"检测更新"];
+    
+//    // 背景图片
+//    CGFloat margin = 35;    // 起始高度
+//    UIImageView *bgImageView = [[UIImageView alloc] init];
+//    [bgImageView setImage:[UIImage imageNamed:@"mine_136"]];
+//    bgImageView.contentMode = UIViewContentModeScaleAspectFill;
+//    [self.view addSubview:bgImageView];
+//    [bgImageView mas_makeConstraints:^(MASConstraintMaker *make) {
+//        make.top.mas_equalTo(margin);
+//        make.left.mas_equalTo(0);
+//        make.width.mas_equalTo(SCREEN_W);
+//        make.height.mas_equalTo(SCREEN_W);
+//    }];
+    
+    UIImageView *topImage = [[UIImageView alloc] init];
+    [topImage setImage:[self getAppIcon]];
+    [self.view addSubview:topImage];
+    [topImage mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.width.mas_equalTo(90.f);
+        make.height.mas_equalTo(90.f);
+        make.centerX.equalTo(self.view.mas_centerX);
+        make.top.equalTo(self.navBarBGView.mas_bottom).offset(123.f);
+    }];
+    
+    /*app名*/
+    UILabel *appName = [[UILabel alloc] init];
+    [appName setBackgroundColor:[UIColor clearColor]];
+    [appName setTextColor:HWFFFFFFColor];
+    [appName setFont:[UIFont boldSystemFontOfSize:18.f]];
+    [appName setTextAlignment:(NSTextAlignmentCenter)];
+    [appName setText:[iPhone appBundleName]];
+    [self.view addSubview:appName];
+    [appName mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(topImage.mas_bottom).offset(11.f);
+        make.right.mas_equalTo(-27.f);
+        make.left.mas_equalTo(27.f);
+        make.height.mas_equalTo(22.f);
+    }];
+    
+    /*app名*/
+    UILabel *versionLabel = [[UILabel alloc] init];
+    [versionLabel setBackgroundColor:[UIColor clearColor]];
+    [versionLabel setTextColor:HWFFFFFFColor60];
+    [versionLabel setFont:[UIFont systemFontOfSize:14.f]];
+    [versionLabel setTextAlignment:(NSTextAlignmentCenter)];
+    NSString *vers = [iPhone appVersion];
+    [versionLabel setText:[NSString stringWithFormat:@"版本号%@",vers]];
+    [self.view addSubview:versionLabel];
+    [versionLabel mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(appName.mas_bottom).offset(10.f);
+        make.right.mas_equalTo(-27.f);
+        make.left.mas_equalTo(27.f);
+        make.height.mas_equalTo(20.f);
+    }];
+    
+    UIButton *privateBtn = [UIButton buttonWithType:UIButtonTypeCustom];
+    self.privateBtn = privateBtn;
+    privateBtn.titleLabel.font = [UIFont boldSystemFontOfSize:16.f];
+    [privateBtn setTitle:@"隐私协议" forState:UIControlStateNormal];
+    [privateBtn setTitleColor:HWCFD1D4Color forState:UIControlStateNormal];
+    [privateBtn setBackgroundColor:[UIColor clearColor]];
+    [privateBtn addTarget:self action:@selector(privateBtnClick) forControlEvents:UIControlEventTouchUpInside];
+    privateBtn.layer.cornerRadius = 8;
+    privateBtn.layer.masksToBounds = YES;
+    privateBtn.layer.borderColor = HWCFD1D4Color.CGColor;
+    privateBtn.layer.borderWidth = 1;
+    [self.view addSubview:privateBtn];
+    [privateBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.bottom.mas_equalTo(-120-AdaptTabHeight);
+        make.width.mas_equalTo(SCREEN_W-38*2);
+        make.height.mas_equalTo(48);
+        make.left.mas_equalTo(38);
+    }];
+    
+    UIButton *ruleBtn = [UIButton buttonWithType:UIButtonTypeCustom];
+    self.ruleBtn = ruleBtn;
+    ruleBtn.titleLabel.font = [UIFont boldSystemFontOfSize:16.f];
+    [ruleBtn setTitle:@"用户使用协议" forState:UIControlStateNormal];
+    [ruleBtn setTitleColor:HWCFD1D4Color forState:UIControlStateNormal];
+    [ruleBtn setBackgroundColor:[UIColor clearColor]];
+    [ruleBtn addTarget:self action:@selector(ruleBtnClick) forControlEvents:UIControlEventTouchUpInside];
+    ruleBtn.layer.cornerRadius = 8;
+    ruleBtn.layer.masksToBounds = YES;
+    ruleBtn.layer.borderWidth = 1;
+    ruleBtn.layer.borderColor = HWCFD1D4Color.CGColor;
+    [self.view addSubview:ruleBtn];
+    [ruleBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.bottom.mas_equalTo(privateBtn.mas_top).mas_offset(-15);
+        make.width.mas_equalTo(SCREEN_W-38*2);
+        make.height.mas_equalTo(48);
+        make.left.mas_equalTo(38);
+    }];
+
+    UIButton *versionCheckBtn = [UIButton buttonWithType:UIButtonTypeCustom];
+    [versionCheckBtn setTitle:@"版本检测" forState:UIControlStateNormal];
+    versionCheckBtn.titleLabel.font = [UIFont boldSystemFontOfSize:16.f];
+    [versionCheckBtn setTitleColor:HWCFD1D4Color forState:UIControlStateNormal];
+    [versionCheckBtn setBackgroundColor:[UIColor clearColor]];
+    [versionCheckBtn addTarget:self action:@selector(versionCheckBtnClick) forControlEvents:UIControlEventTouchUpInside];
+    versionCheckBtn.layer.cornerRadius = 8;
+    versionCheckBtn.layer.masksToBounds = YES;
+    versionCheckBtn.layer.borderWidth = 1;
+    versionCheckBtn.layer.borderColor = HWCFD1D4Color.CGColor;
+    [self.view addSubview:versionCheckBtn];
+    [versionCheckBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.bottom.mas_equalTo(ruleBtn.mas_top).mas_offset(-15);
+        make.left.mas_equalTo(38);
+        make.width.mas_equalTo(SCREEN_W-38*2);
+        make.height.mas_equalTo(48);
+    }];
+}
+
+- (UIImage *)getAppIcon{
+
+    NSDictionary *infoDict = [[NSBundle mainBundle] infoDictionary];
+
+    //获取app中所有icon名字数组
+
+    NSArray *iconsArr = infoDict[@"CFBundleIcons"][@"CFBundlePrimaryIcon"][@"CFBundleIconFiles"];
+
+    //取最后一个icon的名字
+
+    NSString *iconLastName = [iconsArr lastObject];
+
+    //打印icon名字
+
+    NSLog(@"iconsArr: %@", iconsArr);
+
+    NSLog(@"iconLastName: %@", iconLastName);
+
+    return [UIImage imageNamed:iconLastName];
+
+}
+
+#pragma mark- 网络请求
+- (void)getVersion {
+    
+    [self showNewIndicatorHaveStrWithCanBack:YES canTouch:NO showText:@"检测新版本中…"];
+
+    NSMutableDictionary *paraDict = [NSMutableDictionary dictionary];
+    [paraDict setValue:@"ios" forKey:@"os"];
+    NSString *appID = [[NSBundle mainBundle] bundleIdentifier];
+    [paraDict setValue:appID forKey:@"packageName"];
+    [[UseAccountManage shareInstance] CommonGetWithCallBackCode:AppVersionCheckAPI Parameters:paraDict success:^(id  _Nonnull responseObject) {
+        HLog(@"%@", responseObject);
+      [self removeNewIndicatorHaveStr];
+
+      SuperModel *model = [[SuperModel alloc] initWithDictionary:responseObject error:nil];
+
+       if (model.status && model.status.integerValue == 0) {
+
+           HWVersionModel *model = [HWVersionModel mj_objectWithKeyValues:responseObject[@"data"]];
+           self.versionModel = model;
+           [self checkVersion];
+       }
+       else
+       {
+           [[iToast makeText:model.msg] show];
+       }
+
+    } failure:^(NSError * _Nonnull error) {
+      HLog(@"%@", error);
+        [[iToast makeText:@"网络异常,请稍后重试!"] show];
+      [self removeNewIndicatorHaveStr];
+    }];
+}
+
+- (void)versionCheckBtnClick {
+    [self getVersion];
+}
+
+- (void)checkVersion {
+//  NSString *currentVersion = [NSBundle mainBundle].infoDictionary[@"CFBundleVersion"];
+    NSString *currentVersion = [NSBundle mainBundle].infoDictionary[@"CFBundleShortVersionString"];
+    NSString *newVersion = [self.versionModel.versionNumber stringByReplacingOccurrencesOfString:@"v" withString:@""];  //去掉v
+//    HLog(@"%@---%@", newVersion, currentVersion);
+    if ([currentVersion compare:newVersion options:NSNumericSearch] == NSOrderedSame) { // 本地版本号 == 服务器版本号
+        [self showNoNewVersion];
+        [HWDataManager setBoolWithKey:Const_haveVersion value:NO];
+    }else if ([currentVersion compare:newVersion options:NSNumericSearch] == NSOrderedDescending) { // 本地版本号 > 服务器版本号 (异常情况)
+        [self showNoNewVersion];
+        [HWDataManager setBoolWithKey:Const_haveVersion value:NO];
+    }else { // 本地版本号 < 服务器版本号 (有新版本)
+        self.versionModel.versionNumber = newVersion;
+        [self showNewVersion];
+        [HWDataManager setBoolWithKey:Const_haveVersion value:YES];
+    };
+}
+
+- (void)showNewVersion {
+    
+    HaveNewVersionView *haveNewVersionView = [HaveNewVersionView shardInstance];
+    if (haveNewVersionView.isShow) {
+        return;
+    }
+    haveNewVersionView.versionModel = self.versionModel;
+    haveNewVersionView.isContinueCheckAlert = NO; // 是否继续走下一步弹窗检测流程
+    [haveNewVersionView setBackgroundColor:RGBACOLOR(0, 0, 0, 0.5)];
+    [[[UIApplication sharedApplication] keyWindow] addSubview:haveNewVersionView];
+    haveNewVersionView.isShow = YES;
+    [haveNewVersionView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.mas_equalTo(0);
+        make.left.mas_equalTo(0);
+        make.right.mas_equalTo(0);
+        make.bottom.mas_equalTo(0);
+    }];
+    haveNewVersionView.alpha = 0.0;
+
+    [UIView animateWithDuration:0.3 delay:0.0 options:UIViewAnimationOptionCurveEaseIn animations:^ {
+                haveNewVersionView.alpha = 1.0;
+                KyoLog(@"in animate start");
+            } completion:^(BOOL finished) {
+                KyoLog(@"in animate completion");
+    }];
+}
+
+- (void)showNoNewVersion {
+    [[iToast makeText:@"已是最新版本"] show];
+}
+
+- (void)ruleBtnClick {
+ 
+//    [self gotoProtocolWKWebVCByPush:YES];
+}
+
+- (void)privateBtnClick {
+    
+//    [self gotoPrivateProtocolWKWebVCByPush:YES];
+}
+
+@end

+ 43 - 0
双子星云手机/Class/Set/appUpdate/HWVersionModel.h

@@ -0,0 +1,43 @@
+//
+//  HWVersionModel.h
+//  VclustersGemini
+//
+//  Created by 余衡武 on 2020/9/7.
+//  Copyright © 2020 APPLE. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface HWVersionModel : NSObject<NSCoding>
+
+/**
+* @brief 下载地址
+*/
+@property (nonatomic, copy) NSString *downUrl;
+
+/**
+* @brief 当前版本
+*/
+@property (nonatomic, copy) NSString *versionNumber;
+
+/**
+* @brief 版本说明
+*/
+@property (nonatomic, copy) NSString *versionInfo;
+
+/**
+* @brief 文件大小
+*/
+@property (nonatomic, copy) NSString *fileSize;
+
+/**
+* @brief 是否强制更新(0-否 1-是)
+*/
+@property (nonatomic, assign) int necessary;
+
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 44 - 0
双子星云手机/Class/Set/appUpdate/HWVersionModel.m

@@ -0,0 +1,44 @@
+//
+//  HWVersionModel.m
+//  VclustersGemini
+//
+//  Created by 余衡武 on 2020/9/7.
+//  Copyright © 2020 APPLE. All rights reserved.
+//
+
+#import "HWVersionModel.h"
+
+@implementation HWVersionModel
+
++ (NSDictionary *)mj_replacedKeyFromPropertyName {
+    return @{@"versionNumber" : @"newVersion",
+             @"versionInfo" : @"newVersionInfo"
+             
+    };
+}
+
+#pragma mark - 归档解档
+- (void)encodeWithCoder:(NSCoder *)aCoder {
+    
+    [aCoder encodeObject:self.downUrl forKey:@"downUrl"];
+    [aCoder encodeObject:self.versionNumber forKey:@"versionNumber"];
+    [aCoder encodeObject:self.versionInfo forKey:@"versionInfo"];
+    [aCoder encodeObject:self.fileSize forKey:@"fileSize"];
+    [aCoder encodeObject:[NSNumber numberWithDouble:self.necessary] forKey:@"necessary"];
+}
+
+- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder {
+    self = [super init];
+    if (self != nil) {
+        
+        [self setDownUrl:[aDecoder decodeObjectForKey:@"downUrl"]];
+        [self setVersionNumber:[aDecoder decodeObjectForKey:@"versionNumber"]];
+        [self setVersionInfo:[aDecoder decodeObjectForKey:@"versionInfo"]];
+        [self setFileSize:[aDecoder decodeObjectForKey:@"fileSize"]];
+        [self setNecessary:[[aDecoder decodeObjectForKey:@"fileStatus"] intValue]];
+    }
+    
+    return self;
+}
+
+@end

+ 39 - 0
双子星云手机/Class/Set/appUpdate/HaveNewVersionView.h

@@ -0,0 +1,39 @@
+//
+//  HaveNewVersionView.h
+//  VclustersGemini
+//
+//  Created by APPLE on 2020/2/24.
+//  Copyright © 2020 APPLE. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+#import "HWVersionModel.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@protocol HaveNewVersionViewDelegate <NSObject>
+
+@optional
+- (void)updateBtnBePressed:(id)sender;
+- (void)closeBtnBePressed;
+
+@end
+
+@interface HaveNewVersionView : UIView
+
+@property (nonatomic,assign)BOOL       isShow; // 是否正在展示中
+@property (nonatomic,assign)BOOL       isContinueCheckAlert; // 首页-是否继续走下一步弹窗检测流程
+@property (nonatomic,strong)UILabel    *titleLabel;
+@property (nonatomic,strong)UILabel    *detailLabel;
+@property (nonatomic,strong)UIView     *bgView;
+@property (nonatomic,strong)UIButton   *deleteBtn;
+
+@property(nonatomic,strong)HWVersionModel *versionModel;
+
+@property (nonatomic,weak)id <HaveNewVersionViewDelegate> delegate;
+
++ (instancetype)shardInstance;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 256 - 0
双子星云手机/Class/Set/appUpdate/HaveNewVersionView.m

@@ -0,0 +1,256 @@
+//
+//  HaveNewVersionView.m
+//  VclustersGemini
+//
+//  Created by APPLE on 2020/2/24.
+//  Copyright © 2020 APPLE. All rights reserved.
+//
+
+#import "HaveNewVersionView.h"
+
+@interface HaveNewVersionView ()<UITableViewDelegate,UITableViewDataSource>
+
+@property (nonatomic,strong) NSMutableArray *dataSource;
+
+@end
+
+@implementation HaveNewVersionView
+@synthesize titleLabel;
+@synthesize detailLabel;
+@synthesize bgView;
+@synthesize deleteBtn;
+
+static HaveNewVersionView * _instance;
+
++ (instancetype)shardInstance {
+    
+    static dispatch_once_t HaveNewVersionViewonceToken;
+    dispatch_once(&HaveNewVersionViewonceToken, ^{
+        _instance = [[self alloc] init];
+    });
+    return _instance;
+}
+
+- (id)initWithFrame:(CGRect)frame
+{
+    self = [super initWithFrame:frame];
+    
+    if (self)
+    {
+        [self drawAnyView];
+    }
+    
+    return self;
+}
+
+
+- (void)drawAnyView
+{
+    self.tag = 111111;
+    [self setBackgroundColor:[UIColor clearColor]];
+    
+    bgView = [[UIView alloc] init];
+    [bgView setBackgroundColor:HWF5F7FAColor];
+    [bgView.layer setCornerRadius:20.f];
+    [self addSubview:bgView];
+    
+    [bgView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.height.mas_equalTo(320.f);
+        make.width.mas_equalTo(260.f);
+        make.centerX.equalTo(self.mas_centerX);
+        make.centerY.equalTo(self.mas_centerY);
+    }];
+    
+    // 图片
+    UIImageView *topImageView = [[UIImageView alloc] init];
+    topImageView.image = [UIImage imageNamed:@"gengxinbeijing_pic"];
+    topImageView.contentMode = UIViewContentModeScaleAspectFit;
+    [bgView addSubview:topImageView];
+    [topImageView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.mas_equalTo(bgView.mas_top);
+        make.left.mas_equalTo(bgView.mas_left);
+        make.right.mas_equalTo(bgView.mas_right);
+        make.height.mas_equalTo(134);
+    }];
+    
+    /*删除按钮*/
+    deleteBtn = [[UIButton alloc] init];
+    [deleteBtn setBackgroundColor:[UIColor clearColor]];
+    [deleteBtn setImage:[UIImage imageNamed:@"guanbi_bai_icon"] forState:(UIControlStateNormal)];
+    [deleteBtn addTarget:self action:@selector(deleteBtnPressed) forControlEvents:(UIControlEventTouchUpInside)];
+    [bgView addSubview:deleteBtn];
+    
+    [deleteBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.height.mas_equalTo(45.f);
+        make.width.mas_equalTo(45.f);
+        make.right.mas_equalTo(bgView.mas_right).mas_offset(0);
+        make.top.mas_equalTo(bgView.mas_top).mas_offset(0);
+    }];
+//    deleteBtn.hidden = YES;
+    
+    // 分割线
+    UIView *line = [[UIView alloc] init];
+    line.backgroundColor = HW666666Color;
+    [bgView addSubview:line];
+    [line mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(0);
+        make.right.mas_equalTo(0);
+        make.height.mas_equalTo(1);
+        make.bottom.mas_equalTo(-70);
+    }];
+    
+    /*确定按钮*/
+    UIButton *okBtn = [[UIButton alloc] init];
+    [okBtn setBackgroundImage:[UIImage imageNamed:@"login_select_corner"] forState:(UIControlStateNormal)];
+    [okBtn setTitle:@"下载更新" forState:(UIControlStateNormal)];
+    [okBtn.titleLabel setFont:[UIFont systemFontOfSize:14.f]];
+    [okBtn addTarget:self action:@selector(updateBtnPressed) forControlEvents:(UIControlEventTouchUpInside)];
+    [okBtn.layer setCornerRadius:20.f];
+    okBtn.layer.masksToBounds = YES;
+    [bgView addSubview:okBtn];
+    
+    [okBtn mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.height.mas_equalTo(40.f);
+        make.width.mas_equalTo(168.f);
+        make.centerX.equalTo(bgView.mas_centerX);
+        make.bottom.mas_equalTo(-20.f);
+    }];
+    
+    UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 1, 1) style:(UITableViewStylePlain)];
+    tableView.delegate = self;
+    tableView.dataSource = self;
+    [tableView setSeparatorStyle:(UITableViewCellSeparatorStyleNone)];
+    [tableView setSeparatorColor:[UIColor clearColor]];
+    [tableView setBackgroundColor:[UIColor clearColor]];
+    if (@available(iOS 15.0, *)) {
+        tableView.sectionHeaderTopPadding = 0;
+    }
+    [bgView addSubview:tableView];
+    [tableView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(0);
+        make.right.mas_equalTo(0);
+        make.top.mas_equalTo(topImageView.mas_bottom);
+        make.bottom.mas_equalTo(line.mas_top);
+    }];
+}
+
+- (void)deleteBtnPressed
+{
+    [self removeFromSuperview];
+    self.isShow = NO;
+    
+    if ([_delegate respondsToSelector:@selector(closeBtnBePressed)]) {
+        [_delegate closeBtnBePressed];
+    }
+}
+
+- (void)updateBtnPressed {
+    
+    if (!self.versionModel.necessary) { // 非强制更新
+        self.isShow = NO;
+        [self removeFromSuperview];
+        
+        if ([_delegate respondsToSelector:@selector(closeBtnBePressed)]) {
+            [_delegate closeBtnBePressed];
+        }
+    }
+//    NSString *fileKey = FileAPPManifestKey;
+//    NSString *appID = [[NSBundle mainBundle] bundleIdentifier];
+//    if ([appID containsString:@"com.kxly.cloudgame"]){
+//        fileKey = @"LowLevelMultipartUpload_25944032109132595200";
+//    }
+//
+//    NSURL * url = [NSURL URLWithString:[NSString stringWithFormat:@"itms-services://?action=download-manifest&url=https://file.phone.androidscloud.com:8121/document/newFile/download/1/%@/%@/manifest.plist",Const_File_Access_Key,fileKey]];
+//
+////    HLog(@"立即更新-跳转到:%@",self.versionModel.downUrl);
+////    NSString *url = [self.versionModel.downUrl stringByReplacingOccurrencesOfString:@" " withString:@""]; // 防止url里有空格字符导致无法跳转
+//    [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) {
+//        ;
+//    }];
+}
+
+#pragma mark - 列表委托
+- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
+    return 1;
+}
+
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
+    return self.dataSource.count;
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
+    static NSString *identifier  = @"newVersionInfoCellidentifier";
+    NSInteger row     = indexPath.row;
+    
+    NSString *tipsString = self.dataSource[row];
+    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
+    cell.selectionStyle = UITableViewCellSelectionStyleNone;
+    UITableViewCell *payTypecell = [tableView dequeueReusableCellWithIdentifier:identifier];
+    payTypecell.selectionStyle = UITableViewCellSelectionStyleNone;
+    
+    if (!cell)
+    {
+        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:identifier];
+        [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
+        [cell setBackgroundColor:[UIColor clearColor]];
+        
+       /*文字*/
+        [cell.textLabel setFont:[UIFont systemFontOfSize:14.f]];
+        [cell.textLabel setTextColor:HWCFD1D4Color];
+        cell.textLabel.numberOfLines = 0;
+        [cell.textLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
+            make.left.mas_equalTo(15);
+            make.right.mas_equalTo(-15);
+            make.top.mas_equalTo(5);
+            make.bottom.mas_equalTo(5);
+        }];
+    }
+
+    cell.textLabel.text = [NSString stringWithFormat:@"·%@",tipsString];
+        
+    return cell;
+}
+
+- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
+    return UITableViewAutomaticDimension;
+}
+
+- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
+    UIView *bgView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_W, 37)];
+    bgView.backgroundColor = HWF5F7FAColor;
+    
+    UILabel *label1 = [[UILabel alloc] init];
+    label1.text = [NSString stringWithFormat:@"发现新版本(%@)", self.versionModel.versionNumber];
+    label1.textColor = HWCFD1D4Color;
+    label1.font = [UIFont boldSystemFontOfSize:14.f];
+    [bgView addSubview:label1];
+    [label1 mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(15);
+        make.top.mas_equalTo(10);
+    }];
+    
+    UILabel *label2 = [[UILabel alloc] init];
+    label2.text = [NSString stringWithFormat:@"大小:%@MB", self.versionModel.fileSize];
+    label2.textColor = HWF5F7FAColor;
+    label2.font = [UIFont systemFontOfSize:10.f];
+    [bgView addSubview:label2];
+    [label2 mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(label1.mas_right).mas_offset(5);
+        make.centerY.mas_equalTo(label1.mas_centerY);
+    }];
+    
+    return bgView;
+}
+
+- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
+    return 35;
+}
+
+- (NSMutableArray *)dataSource {
+    if (!_dataSource) {
+        NSArray *tips = [self.versionModel.versionInfo componentsSeparatedByString:@"&&"];
+        _dataSource = [NSMutableArray arrayWithArray:tips];
+    }
+    return _dataSource;
+}
+@end

+ 2 - 0
双子星云手机/CloudPlayer/CloudPhoneAPI.h

@@ -258,4 +258,6 @@
                   
  返回数据模型 SuperModel*/
 #define SMSVerCodeRegisterAndLoginAPI  @"/api/user/v1/user/register"
+
+#define AppVersionCheckAPI       @"/api/public/v2/client/upgrade/version"  /*app新版本检测API*/
 #endif /* CloudPhoneAPI_h */

+ 7 - 0
双子星云手机/zh-Hans.lproj/Localizable.strings

@@ -74,3 +74,10 @@
 "logo_input_pwd_no_same_tips" = "两次密码不一致,请重新输入";
 "logo_set_pwd_success" = "修改启动密码成功";
 
+//NSLocalizedString(@"mask_view_hiden_app_window_detail",nil)
+"mask_view_hiden_set" = "进程隐藏设置";
+"mask_view_hiden_set_hiden" = "进程隐藏";
+"mask_view_hiden_funct_struct" = "功能说明";
+"mask_view_hiden_up_swipe" = "上滑-应用后台化";
+"mask_view_hiden_app_window" = "应用窗口";
+"mask_view_hiden_app_window_detail" = "使用过程中,上滑手势应用程序进入后台,会关闭隐藏应用并返回桌面,隐私安全更有保障";