zhengkun 2 жил өмнө
parent
commit
d98ffd0e71
44 өөрчлөгдсөн 3721 нэмэгдсэн , 233 устгасан
  1. 44 6
      ios/JianYuIOS/JianYuIOS.xcodeproj/project.pbxproj
  2. BIN
      ios/JianYuIOS/JianYuIOS.xcworkspace/xcuserdata/zhengkun.xcuserdatad/UserInterfaceState.xcuserstate
  3. 9 9
      ios/JianYuIOS/JianYuIOS.xcworkspace/xcuserdata/zhengkun.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
  4. 26 174
      ios/JianYuIOS/JianYuIOS/AppDelegate.m
  5. 17 0
      ios/JianYuIOS/JianYuIOS/AppDelegateCopy.h
  6. 692 0
      ios/JianYuIOS/JianYuIOS/AppDelegateCopy.m
  7. 3 5
      ios/JianYuIOS/JianYuIOS/Base.lproj/LaunchScreen.storyboard
  8. 11 6
      ios/JianYuIOS/JianYuIOS/BaseClass1/PrefixHeader.pch
  9. 1759 1
      ios/JianYuIOS/JianYuIOS/Classes(新模块)/JYBaseViewController.m
  10. 4 25
      ios/JianYuIOS/JianYuIOS/JYWKNewWebController.m
  11. BIN
      ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/ATAuthSDK
  12. BIN
      ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/ATAuthSDK.bundle/icon_check@2x.png
  13. BIN
      ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/ATAuthSDK.bundle/icon_check@3x.png
  14. BIN
      ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/ATAuthSDK.bundle/icon_close_gray@2x.png
  15. BIN
      ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/ATAuthSDK.bundle/icon_close_gray@3x.png
  16. BIN
      ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/ATAuthSDK.bundle/icon_nav_back_gray@2x.png
  17. BIN
      ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/ATAuthSDK.bundle/icon_nav_back_gray@3x.png
  18. BIN
      ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/ATAuthSDK.bundle/icon_nav_back_light@2x.png
  19. BIN
      ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/ATAuthSDK.bundle/icon_nav_back_light@3x.png
  20. BIN
      ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/ATAuthSDK.bundle/icon_uncheck@2x.png
  21. BIN
      ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/ATAuthSDK.bundle/icon_uncheck@3x.png
  22. 24 0
      ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/Headers/ATAuthSDK.h
  23. 37 0
      ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/Headers/PNSReporter.h
  24. 86 0
      ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/Headers/PNSReturnCode.h
  25. 123 0
      ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/Headers/TXCommonHandler.h
  26. 81 0
      ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/Headers/TXCommonUtils.h
  27. 420 0
      ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/Headers/TXCustomModel.h
  28. BIN
      ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/Info.plist
  29. 6 0
      ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/Modules/module.modulemap
  30. 48 0
      ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/YTXMonitor.framework/Headers/ACMLogger.h
  31. 55 0
      ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/YTXMonitor.framework/Headers/ACMManager.h
  32. 40 0
      ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/YTXMonitor.framework/Headers/ACMMonitor.h
  33. 17 0
      ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/YTXMonitor.framework/Headers/ACMProtocol.h
  34. 3 0
      ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/YTXMonitor.framework/Headers/YTXMonitor.h
  35. BIN
      ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/YTXMonitor.framework/Info.plist
  36. 6 0
      ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/YTXMonitor.framework/Modules/module.modulemap
  37. BIN
      ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/YTXMonitor.framework/YTXMonitor
  38. 100 0
      ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/YTXOperators.framework/Headers/YTXNetUtils.h
  39. 20 0
      ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/YTXOperators.framework/Headers/YTXOperators.h
  40. 83 0
      ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/YTXOperators.framework/Headers/YTXVendorService.h
  41. BIN
      ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/YTXOperators.framework/Info.plist
  42. 6 0
      ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/YTXOperators.framework/Modules/module.modulemap
  43. BIN
      ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/YTXOperators.framework/YTXOperators
  44. 1 7
      ios/JianYuIOS/JianYuIOS/guide/ZKGuideView.m

+ 44 - 6
ios/JianYuIOS/JianYuIOS.xcodeproj/project.pbxproj

@@ -59,7 +59,12 @@
 		761BCA63272A816900259676 /* JYNewMessViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 761BCA62272A816900259676 /* JYNewMessViewController.m */; };
 		761BCA72272AA0CE00259676 /* README.txt in Resources */ = {isa = PBXBuildFile; fileRef = 761BCA6F272AA0CE00259676 /* README.txt */; };
 		761BCA73272AA0CE00259676 /* libWeChatSDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 761BCA71272AA0CE00259676 /* libWeChatSDK.a */; };
+		76A2914D2A8B1DC00030E63A /* AppDelegateCopy.m in Sources */ = {isa = PBXBuildFile; fileRef = 76A2914C2A8B1DBF0030E63A /* AppDelegateCopy.m */; };
+		76A2914E2A8B423A0030E63A /* Network.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 76AAC3C92A8A203F002C1D4F /* Network.framework */; };
 		76AAC3C12A89D771002C1D4F /* JYBaseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 76AAC3C02A89D771002C1D4F /* JYBaseViewController.m */; };
+		76AAC3D02A8A245C002C1D4F /* YTXOperators.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 76AAC3CD2A8A245C002C1D4F /* YTXOperators.framework */; };
+		76AAC3D12A8A245C002C1D4F /* YTXMonitor.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 76AAC3CE2A8A245C002C1D4F /* YTXMonitor.framework */; };
+		76AAC3D22A8A245C002C1D4F /* ATAuthSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 76AAC3CF2A8A245C002C1D4F /* ATAuthSDK.framework */; };
 		76ED394028813ACC00B211C9 /* JhtDownloadRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 76ED391B28813ACC00B211C9 /* JhtDownloadRequest.m */; };
 		76ED394128813ACC00B211C9 /* JhtDocFileOperations.m in Sources */ = {isa = PBXBuildFile; fileRef = 76ED391E28813ACC00B211C9 /* JhtDocFileOperations.m */; };
 		76ED394228813ACC00B211C9 /* JhtNetworkCheckTools.m in Sources */ = {isa = PBXBuildFile; fileRef = 76ED392128813ACC00B211C9 /* JhtNetworkCheckTools.m */; };
@@ -199,8 +204,14 @@
 		761BCA6F272AA0CE00259676 /* README.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README.txt; sourceTree = "<group>"; };
 		761BCA70272AA0CE00259676 /* WechatAuthSDK.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WechatAuthSDK.h; sourceTree = "<group>"; };
 		761BCA71272AA0CE00259676 /* libWeChatSDK.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libWeChatSDK.a; sourceTree = "<group>"; };
+		76A2914B2A8B1DBF0030E63A /* AppDelegateCopy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegateCopy.h; sourceTree = "<group>"; };
+		76A2914C2A8B1DBF0030E63A /* AppDelegateCopy.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegateCopy.m; sourceTree = "<group>"; };
 		76AAC3BF2A89D771002C1D4F /* JYBaseViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JYBaseViewController.h; sourceTree = "<group>"; };
 		76AAC3C02A89D771002C1D4F /* JYBaseViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = JYBaseViewController.m; sourceTree = "<group>"; };
+		76AAC3C92A8A203F002C1D4F /* Network.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Network.framework; path = System/Library/Frameworks/Network.framework; sourceTree = SDKROOT; };
+		76AAC3CD2A8A245C002C1D4F /* YTXOperators.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = YTXOperators.framework; sourceTree = "<group>"; };
+		76AAC3CE2A8A245C002C1D4F /* YTXMonitor.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = YTXMonitor.framework; sourceTree = "<group>"; };
+		76AAC3CF2A8A245C002C1D4F /* ATAuthSDK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = ATAuthSDK.framework; sourceTree = "<group>"; };
 		76ED391728813ACC00B211C9 /* JhtDocViewer_Define.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JhtDocViewer_Define.h; sourceTree = "<group>"; };
 		76ED391A28813ACC00B211C9 /* JhtDownloadRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JhtDownloadRequest.h; sourceTree = "<group>"; };
 		76ED391B28813ACC00B211C9 /* JhtDownloadRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JhtDownloadRequest.m; sourceTree = "<group>"; };
@@ -267,6 +278,8 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				76A2914E2A8B423A0030E63A /* Network.framework in Frameworks */,
+				76AAC3D12A8A245C002C1D4F /* YTXMonitor.framework in Frameworks */,
 				185F510A23A76765009F9022 /* CoreLocation.framework in Frameworks */,
 				188A144923273CB400D39E7E /* UserNotificationsUI.framework in Frameworks */,
 				188A144723273CAD00D39E7E /* UserNotifications.framework in Frameworks */,
@@ -281,9 +294,11 @@
 				18E05D0222F11D62001E5B44 /* libc++.tbd in Frameworks */,
 				18E05CFE22F11D4E001E5B44 /* CoreMotion.framework in Frameworks */,
 				C550BF362018591400F0BC2A /* CoreGraphics.framework in Frameworks */,
+				76AAC3D22A8A245C002C1D4F /* ATAuthSDK.framework in Frameworks */,
 				761BCA73272AA0CE00259676 /* libWeChatSDK.a in Frameworks */,
 				182493C1255B8A3100BF4AB2 /* libc.tbd in Frameworks */,
 				18E05CFC22F11CDE001E5B44 /* AlipaySDK.framework in Frameworks */,
+				76AAC3D02A8A245C002C1D4F /* YTXOperators.framework in Frameworks */,
 				C550BF342018590A00F0BC2A /* libsqlite3.tbd in Frameworks */,
 				1849F8FA248B6E94008F9023 /* JavaScriptCore.framework in Frameworks */,
 				9ADF6A094C6E01A55F2E47CC /* libPods-JianYuIOS.a in Frameworks */,
@@ -393,6 +408,7 @@
 		18E05CEF22F11CDD001E5B44 /* Libs(第三方) */ = {
 			isa = PBXGroup;
 			children = (
+				76AAC3CC2A8A245C002C1D4F /* NumberAuthSDK */,
 				76ED391628813ACC00B211C9 /* JhtDocViewer_SDK */,
 				761BCA6C272AA0CE00259676 /* WeChatSDK1.9.2 */,
 				18E05CF622F11CDD001E5B44 /* AlipaySDK */,
@@ -439,6 +455,16 @@
 			path = "Classes(新模块)";
 			sourceTree = "<group>";
 		};
+		76AAC3CC2A8A245C002C1D4F /* NumberAuthSDK */ = {
+			isa = PBXGroup;
+			children = (
+				76AAC3CD2A8A245C002C1D4F /* YTXOperators.framework */,
+				76AAC3CE2A8A245C002C1D4F /* YTXMonitor.framework */,
+				76AAC3CF2A8A245C002C1D4F /* ATAuthSDK.framework */,
+			);
+			path = NumberAuthSDK;
+			sourceTree = "<group>";
+		};
 		76ED391628813ACC00B211C9 /* JhtDocViewer_SDK */ = {
 			isa = PBXGroup;
 			children = (
@@ -604,6 +630,7 @@
 		954256EB2ECEF2507E4350ED /* Frameworks */ = {
 			isa = PBXGroup;
 			children = (
+				76AAC3C92A8A203F002C1D4F /* Network.framework */,
 				189917382500889E003990B7 /* CloudKit.framework */,
 				1849F8F9248B6E94008F9023 /* JavaScriptCore.framework */,
 				185F510923A76765009F9022 /* CoreLocation.framework */,
@@ -715,6 +742,8 @@
 				18BCAEB024F3C2980027921D /* JYWKNewWebController.m */,
 				C550BEF520180AF000F0BC2A /* AppDelegate.h */,
 				C550BEF620180AF000F0BC2A /* AppDelegate.m */,
+				76A2914B2A8B1DBF0030E63A /* AppDelegateCopy.h */,
+				76A2914C2A8B1DBF0030E63A /* AppDelegateCopy.m */,
 				C5BE6E402011D99100F28B36 /* Main.storyboard */,
 				C5BE6E432011D99100F28B36 /* Assets.xcassets */,
 				C5BE6E452011D99100F28B36 /* LaunchScreen.storyboard */,
@@ -943,6 +972,7 @@
 				18EF1114232F683C006D4579 /* UIDevice+Hardware.m in Sources */,
 				C519972D2020238D007946E8 /* LXMD5.m in Sources */,
 				18C9D8E7219A5F9F001AC829 /* UITabBar+badge.m in Sources */,
+				76A2914D2A8B1DC00030E63A /* AppDelegateCopy.m in Sources */,
 				76ED394128813ACC00B211C9 /* JhtDocFileOperations.m in Sources */,
 				C555EC282047DC5E0084642F /* LXNetworkManager.m in Sources */,
 				1899174125009A62003990B7 /* ZKDocument.m in Sources */,
@@ -1158,19 +1188,22 @@
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 775098970477D1E68FB48E59 /* Pods-JianYuIOS.debug.xcconfig */;
 			buildSettings = {
-				ARCHS = "$(ARCHS_STANDARD)";
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO;
 				CODE_SIGN_ENTITLEMENTS = "JianYuIOS/剑鱼标讯Debug.entitlements";
 				CODE_SIGN_IDENTITY = "Apple Development";
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 76;
+				CURRENT_PROJECT_VERSION = 77;
 				DEVELOPMENT_TEAM = WN4RUJ6RHX;
 				ENABLE_BITCODE = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
 					"$(PROJECT_DIR)/JianYuIOS/ThirdSDK/UMSocial/UMSocialUI",
 					"$(PROJECT_DIR)/JianYuIOS/ThirdSDK/UMSocial/UMSocialSDK",
 					"$(PROJECT_DIR)/JianYuIOS/Libs(第三方)/AlipaySDK",
+					"$(PROJECT_DIR)/JianYuIOS/Libs(第三方)/numberAuthSDK",
+					"$(PROJECT_DIR)/JianYuIOS/Libs(第三方)/NumberAuthSDK",
 				);
 				GCC_INCREASE_PRECOMPILED_HEADER_SHARING = YES;
 				GCC_PREFIX_HEADER = "$(SRCROOT)/JianYuIOS/BaseClass1/PrefixHeader.pch";
@@ -1187,8 +1220,9 @@
 					"$(PROJECT_DIR)/JianYuIOS/Libs(第三方)/UMSPosPayOnly",
 					"$(PROJECT_DIR)/JianYuIOS/Libs(第三方)/UPPaymentControl",
 				);
-				MARKETING_VERSION = 3.0.5;
+				MARKETING_VERSION = 3.0.6;
 				ONLY_ACTIVE_ARCH = YES;
+				OTHER_CFLAGS = "";
 				OTHER_LDFLAGS = (
 					"$(inherited)",
 					"-ObjC",
@@ -1244,19 +1278,22 @@
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 10D9BC27D00CB4DF3F791728 /* Pods-JianYuIOS.release.xcconfig */;
 			buildSettings = {
-				ARCHS = "$(ARCHS_STANDARD)";
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO;
 				CODE_SIGN_ENTITLEMENTS = JianYuIOS/JianYuIOS.entitlements;
 				CODE_SIGN_IDENTITY = "Apple Development";
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 76;
+				CURRENT_PROJECT_VERSION = 77;
 				DEVELOPMENT_TEAM = WN4RUJ6RHX;
 				ENABLE_BITCODE = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
 					"$(PROJECT_DIR)/JianYuIOS/ThirdSDK/UMSocial/UMSocialUI",
 					"$(PROJECT_DIR)/JianYuIOS/ThirdSDK/UMSocial/UMSocialSDK",
 					"$(PROJECT_DIR)/JianYuIOS/Libs(第三方)/AlipaySDK",
+					"$(PROJECT_DIR)/JianYuIOS/Libs(第三方)/numberAuthSDK",
+					"$(PROJECT_DIR)/JianYuIOS/Libs(第三方)/NumberAuthSDK",
 				);
 				GCC_INCREASE_PRECOMPILED_HEADER_SHARING = YES;
 				GCC_PREFIX_HEADER = "$(SRCROOT)/JianYuIOS/BaseClass1/PrefixHeader.pch";
@@ -1273,8 +1310,9 @@
 					"$(PROJECT_DIR)/JianYuIOS/Libs(第三方)/UMSPosPayOnly",
 					"$(PROJECT_DIR)/JianYuIOS/Libs(第三方)/UPPaymentControl",
 				);
-				MARKETING_VERSION = 3.0.5;
+				MARKETING_VERSION = 3.0.6;
 				ONLY_ACTIVE_ARCH = NO;
+				OTHER_CFLAGS = "";
 				OTHER_LDFLAGS = (
 					"$(inherited)",
 					"-ObjC",

BIN
ios/JianYuIOS/JianYuIOS.xcworkspace/xcuserdata/zhengkun.xcuserdatad/UserInterfaceState.xcuserstate


+ 9 - 9
ios/JianYuIOS/JianYuIOS.xcworkspace/xcuserdata/zhengkun.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -7,32 +7,32 @@
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "D186671A-183F-4AE7-84A1-E63060E8EF21"
+            uuid = "8BB949AC-E9E0-4D36-A2FF-8AC531272071"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "JianYuIOS/Classes&#xff08;&#x6a21;&#x5757;&#xff09;/JYNewSubViewController.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "1467"
-            endingLineNumber = "1467"
-            landmarkName = "-notNetReloadWebVIew:"
+            startingLineNumber = "539"
+            endingLineNumber = "539"
+            landmarkName = "-webView:didFailProvisionalNavigation:withError:"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "8BB949AC-E9E0-4D36-A2FF-8AC531272071"
+            uuid = "C62474D5-CF97-4B90-9514-2D462F40ED4E"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "JianYuIOS/Classes&#xff08;&#x6a21;&#x5757;&#xff09;/JYNewSubViewController.m"
+            filePath = "JianYuIOS/AppDelegate.m"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "539"
-            endingLineNumber = "539"
-            landmarkName = "-webView:didFailProvisionalNavigation:withError:"
+            startingLineNumber = "271"
+            endingLineNumber = "271"
+            landmarkName = "-clickNotification:"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>

+ 26 - 174
ios/JianYuIOS/JianYuIOS/AppDelegate.m

@@ -9,8 +9,6 @@
 #import "AppDelegate.h"
 // 引入JPush功能所需头文件
 //#import "JPUSHService.h"
-#import "JYTabBarController.h"
-
 // iOS10注册APNs所需头文件
 #ifdef NSFoundationVersionNumber_iOS_9_x_Max
 #import <UserNotifications/UserNotifications.h>
@@ -18,13 +16,14 @@
 // 如果需要使用idfa功能所需要引入的头文件(可选)
 #import <AdSupport/AdSupport.h>
 #import <UMSocialCore/UMSocialCore.h>
+#import "JYBaseViewController.h"
 
-#import "JYTabBarController.h"
 #import "ZKGuideView.h"
 #import "JYKeyCustom.h"
 #import <WebKit/WebKit.h>
 #import "WXApi.h"
 
+
 //JPUSHRegisterDelegate
 @interface AppDelegate ()<UIApplicationDelegate, WXApiDelegate,UNUserNotificationCenterDelegate>
 
@@ -42,36 +41,26 @@
     // 启动图片延时: 2秒
 //    [NSThread sleepForTimeInterval:2];
     self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
-    JYTabBarController *tabBarVc = [[JYTabBarController alloc] init];
-    self.window.rootViewController = tabBarVc;
+    JYBaseViewController *baseVC =[[JYBaseViewController alloc] init];
+    self.window.rootViewController = baseVC;
     [self.window makeKeyAndVisible];
-    
-//    [self initJYBXKey]; //注册协议
-    
     NSURLCache *URLCache = [[NSURLCache alloc] initWithMemoryCapacity:1000 * 1024 * 1024 diskCapacity:1000 * 1024 * 1024 diskPath:nil];
     [NSURLCache setSharedURLCache:URLCache];
-    
     NSString *isProvacy = [[NSUserDefaults standardUserDefaults] objectForKey:@"FirstPrivacy"];
     if ([isProvacy isEqualToString:@"1"]) {
-        
-    }else {
-        //设置启动页
+    }else {//设置启动页
         ZKGuideView *guideView = [[ZKGuideView alloc]initWithFrame:self.window.frame];
         NSLog(@"%f",guideView.frame.size.width);
     }
-
     NSLog(@"初始化");
     [GlobalData shareInstance];
     [JYgRPCClient shareInstance];
     [LXViewControllerManager shareViewControllerManager];
-   
-//    NSLog(@"sdk version:%@",[[WBOCRService sharedService] sdkVersion]);
-//    NSLog(@"%@",[[GlobalData shareInstance] getDocumentPath]);
-//    NSLog(@"%@",[[GlobalData shareInstance] getfsCachedData]);
-   
+    
     [self initUM];
     [self registeredPush]; //注册原生推送
-
+    [self registeredATAuth];//
+    
     if (launchOptions) {
         [GlobalData shareInstance].isWakeUpStatus = YES;//唤醒启动
         // 不是空 就是推送点击
@@ -100,8 +89,6 @@
     #pragma clang diagnostic pop
     }
 }
-
-
 -(void)initUM {
     /* 打开调试日志 */
     [[UMSocialManager defaultManager] openLog:YES];
@@ -109,11 +96,8 @@
     [[UMSocialManager defaultManager] setUmSocialAppkey:@"5a685423f43e4833e500003e"];
     [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_WechatSession appKey:@"wx0e6a5b18f4cfd10d" appSecret:@"bf12200554cb6edeb2be69d49dc11a3e" redirectURL:nil];
     [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_QQ appKey:@"1106703118"appSecret:@"MYFVJZhtygWy5hzh" redirectURL:@"http://mobile.umeng.com/social"];
-    
-    
     [WXApi registerApp:@"wx0e6a5b18f4cfd10d" universalLink:@"https:www.jianyu360.cn/"];
-    
-//    [UMSPPPayUnifyPayPlugin registerApp:@"wx0e6a5b18f4cfd10d" universalLink:@"https:www.jianyu360.cn/"];
+
 }
 
 #pragma mark   ****处理接收通知情况****
@@ -131,9 +115,6 @@
     
 }
 
-
-
-
 #pragma mark 原生推送
 -(void)registeredPush
 {
@@ -165,6 +146,12 @@
     
 }
 
+#pragma mark 注册手机一键
+-(void)registeredATAuth{
+    [[TXCommonHandler sharedInstance] setAuthSDKInfo:@"ofSiUlw/wTNRCfGu1m8VGPWVk8G7LfnJEQPaod9peceHQOS46AJkcbON9Xf0Heb4fs3zd7z1aOAYwB0eQRtzJpewigEewvttWIc852nd6dwxgW0N9I9nUqNF3GhVOnWM1aM0nHqjiMycz4PHlDjnLB2V3c7DfUOLQYe9kM9DqnurR0bB/+uqn7mo6/vznGSl5K2wSk8hcf94epFr0c2iWtSlViPlgyPloxELoDkkiSze8J8uWy7Aeuv01TPm5bduze94UkPCuOI=" complete:^(NSDictionary * _Nonnull resultDic) {
+        NSLog(@"设置秘钥结果:%@", resultDic);
+    }];
+}
 
 - (void)applicationWillResignActive:(UIApplication *)application {
     // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
@@ -188,11 +175,7 @@
     //后台进入前台
     [self removeImgView];
     [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
-
-    //查看粘贴板数据
     NSString  *content = [UIPasteboard generalPasteboard].string;
-    //发通知
-    //你身边的人都在用剑鱼标讯超级订阅找商机就差你了!%20复制这条信息:AEWYJJLKN,打开【剑鱼标讯APP】识别复制口令,快速获取全国招标项目!
     NSLog(@"粘贴板内容:%@",content);
     if ([content containsString:@"剑鱼标讯"]&&[GlobalData shareInstance].isOpen == YES) {
         //如果符合条件发送通知
@@ -205,32 +188,8 @@
     // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
 }
 
--(NSString*)getCurrentTimes{
-
-    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
-
-    // ----------设置你想要的格式,hh与HH的区别:分别表示12小时制,24小时制
-
-    [formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
-
-    //现在时间,你可以输出来看下是什么格式
-
-    NSDate *datenow = [NSDate date];
-
-   
-
-    NSString *currentTimeString = [formatter stringFromDate:datenow];
-
-   
-
-    return currentTimeString;
-
-}
-
-
 - (void)application:(UIApplication *)application
 didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{
-
     //Xcode11打的包,iOS13获取Token有变化
     if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 13) {
         if (![deviceToken isKindOfClass:[NSData class]]) {
@@ -315,87 +274,16 @@ didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{
     if ([infoDict objectForKey:@"url"]) {//数据正常
         NSString * urlStr = [LXMD5 dealWithPushUrl:[NSString stringWithFormat:@"%@",infoDict[@"url"]] type:[NSString stringWithFormat:@"%@",userInfo[@"type"]]];
         NSString * menuname = [NSString stringWithFormat:@"%@",infoDict[@"menuname"]];
-        //切换底部栏
-        AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
-        JYTabBarController *tab = (JYTabBarController *)delegate.window.rootViewController;
         NSDictionary *user_info = @{@"url":urlStr};
-        if ([menuname isEqualToString:@"search"]) {
-            [GlobalData shareInstance].isClickNotiStatus = YES;
-            tab.selectedIndex = 0;//切换底部栏
-            if ([GlobalData shareInstance].isSearchToLoad) {
-                [[NSNotificationCenter defaultCenter] postNotificationName:OpenPushUrlMethodsOne object:nil userInfo:user_info];
-            }else {
-                [self waitingToBeClickNoti:user_info withIndex:@"0" isOpenLinke:NO];
-            }
-        }else if ([menuname isEqualToString:@"subscribe"]) {
-            if ([LXUserDefaults isExistToken]) {
-                [GlobalData shareInstance].isClickNotiStatus = YES;
-                tab.selectedIndex = 1;//切换底部栏
-                if ([GlobalData shareInstance].isSubToLoad) {
-                    [[NSNotificationCenter defaultCenter] postNotificationName:OpenPushUrlMethodsTwo object:nil userInfo:user_info];
-                }else {
-                    [self waitingToBeClickNoti:user_info withIndex:@"1" isOpenLinke:NO];
-                }
-            }else {
-                [self waitingToBeClickNoti:user_info withIndex:@"1" isOpenLinke:NO];
-            }
-        }else if ([menuname isEqualToString:@"message"]) {
-            if ([LXUserDefaults isExistToken]) {
-                [GlobalData shareInstance].isClickNotiStatus = YES;
-                tab.selectedIndex = 2;//切换底部栏
-                if ([GlobalData shareInstance].isMessToLoad) {
-                    [[NSNotificationCenter defaultCenter] postNotificationName:OpenPushUrlMethodsThree object:nil userInfo:user_info];
-                }else {
-                    [self waitingToBeClickNoti:user_info withIndex:@"2" isOpenLinke:NO];
-                }
-            }else {
-                [self waitingToBeClickNoti:user_info withIndex:@"2" isOpenLinke:NO];
-            }
-        }else if ([menuname isEqualToString:@"box"]) {
-            if ([LXUserDefaults isExistToken]) {
-                [GlobalData shareInstance].isClickNotiStatus = YES;
-                tab.selectedIndex = 3;//切换底部栏
-                if ([GlobalData shareInstance].isBoxToLoad) {
-                    [[NSNotificationCenter defaultCenter] postNotificationName:OpenPushUrlMethodsFour object:nil userInfo:user_info];
-                }else {
-                    [self waitingToBeClickNoti:user_info withIndex:@"3" isOpenLinke:NO];
-                }
-            }else {
-                [self waitingToBeClickNoti:user_info withIndex:@"3" isOpenLinke:NO];
-            }
-        }else if ([menuname isEqualToString:@"me"]) {
-            if ([LXUserDefaults isExistToken]) {
-                [GlobalData shareInstance].isClickNotiStatus = YES;
-                tab.selectedIndex = 4;//切换底部栏
-                if ([GlobalData shareInstance].isMineToLoad) {
-                    [[NSNotificationCenter defaultCenter] postNotificationName:OpenPushUrlMethodsFive object:nil userInfo:user_info];
-                }else {
-                    [self waitingToBeClickNoti:user_info withIndex:@"4" isOpenLinke:NO];
-                }
-            }else {
-                [self waitingToBeClickNoti:user_info withIndex:@"4" isOpenLinke:NO];
-            }
-
-        }else if ([menuname isEqualToString:@"other"]) {
-            //打开外链
+        if ([menuname isEqualToString:@"other"]) {//打开外链
             if ([GlobalData shareInstance].isWakeUpStatus) {
-                [self waitingToBeClickNoti:user_info withIndex:@"0" isOpenLinke:YES];
+                [self waitingToBeClickNoti:user_info isOpenLinke:YES];
             }else {
                 [[NSNotificationCenter defaultCenter] postNotificationName:OpenPushLinkUrlMethods object:nil userInfo:user_info];
             }
         }else {
-            if ([GlobalData shareInstance].isWakeUpStatus) {
-                [self waitingToBeClickNoti:user_info withIndex:@"0" isOpenLinke:NO];
-            }else {
-                [[NSNotificationCenter defaultCenter] postNotificationName:OpenPushUrlOtherMethods object:nil userInfo:user_info];
-            }
+            [[NSNotificationCenter defaultCenter] postNotificationName:OpenPushUrlOtherMethods object:nil userInfo:user_info];
         }
-        
-    
-//        if(self.wakeUpBool) {//刚启动
-//            [[NSUserDefaults standardUserDefaults]setObject:userInfo forKey:RemoteNotifications];
-//            self.wakeUpBool = NO;
-//        }
         if([userInfo[@"type"] isEqualToString:@"message"]||[userInfo[@"type"] isEqualToString:@"titleMessage"]) {
             NSDictionary * infoDic;
             if([GlobalData shareInstance].isWakeUpStatus) {//刚启动
@@ -421,68 +309,33 @@ didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{
     [GlobalData shareInstance].isWakeUpStatus = NO;
 }
 
--(void)waitingToBeClickNoti:(NSDictionary *)userInfo withIndex:(NSString *)index isOpenLinke:(BOOL)isLinks {
+-(void)waitingToBeClickNoti:(NSDictionary *)userInfo isOpenLinke:(BOOL)isLinks {
     NSLog(@"点击通知-延迟监听处理");
     NSString *linksStr = (isLinks==NO)?@"0":@"1";
     NSDictionary *dict = @{
         @"userInfo":userInfo,
-        @"index":index,
         @"links":linksStr,
     };
     self.timerClick = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerClickMethod:) userInfo:dict repeats:YES];
     [self.timerClick fire];
 }
-
 -(void)timerClickMethod:(NSTimer *)timer {
     self.timerIndex++;
     NSDictionary *infoDict = [timer userInfo];
-    NSInteger index = [infoDict[@"index"] integerValue];
     BOOL isLinks = [infoDict[@"links"] integerValue]==0?NO:YES;
     NSDictionary *userInfo = infoDict[@"userInfo"];
-    
     if ([LXUserDefaults isExistToken]) {//登录正常状态
-        if (index==0) {
-            if ([GlobalData shareInstance].isSearchToLoad) {
-                if (isLinks) {
-                    [[NSNotificationCenter defaultCenter] postNotificationName:OpenPushLinkUrlMethods object:nil userInfo:userInfo];
-                }else {
-                    [[NSNotificationCenter defaultCenter] postNotificationName:OpenPushUrlMethodsOne object:nil userInfo:userInfo];
-                }
-                [self clearTimer];
-            }
-        }else if (index==1) {
-            if ([GlobalData shareInstance].isSubToLoad) {
-                [[NSNotificationCenter defaultCenter] postNotificationName:OpenPushUrlMethodsTwo object:nil userInfo:userInfo];
-                [self clearTimer];
-            }
-        }else if (index==2) {
-            if ([GlobalData shareInstance].isMessToLoad) {
-                [[NSNotificationCenter defaultCenter] postNotificationName:OpenPushUrlMethodsThree object:nil userInfo:userInfo];
-                [self clearTimer];
-            }
-        }else if (index==3) {
-            if ([GlobalData shareInstance].isBoxToLoad) {
-                [[NSNotificationCenter defaultCenter] postNotificationName:OpenPushUrlMethodsFour object:nil userInfo:userInfo];
-                [self clearTimer];
-            }
-        }else if (index==4) {
-            if ([GlobalData shareInstance].isMineToLoad) {
-                [[NSNotificationCenter defaultCenter] postNotificationName:OpenPushUrlMethodsFive object:nil userInfo:userInfo];
-                [self clearTimer];
-            }
+        if (isLinks) {
+            [[NSNotificationCenter defaultCenter] postNotificationName:OpenPushLinkUrlMethods object:nil userInfo:userInfo];
         }else {
-           
+            [[NSNotificationCenter defaultCenter] postNotificationName:OpenPushUrlOtherMethods object:nil userInfo:userInfo];
         }
+        [self clearTimer];
     }else { //未登录异常状态
-        if ([GlobalData shareInstance].isSearchToLoad) {
-            NSLog(@"未登录状态-等待:%@",infoDict[@"index"]);
-            [[NSNotificationCenter defaultCenter] postNotificationName:LoginIndexTabBar object:nil userInfo:@{@"item_index":infoDict[@"index"]}];
-            [self clearTimer];
-        }
+        NSLog(@"未登录状态-等待:%@",infoDict[@"index"]);
+        [[NSNotificationCenter defaultCenter] postNotificationName:LoginIndexTabBar object:nil userInfo:@{@"item_index":infoDict[@"index"]}];
+        [self clearTimer];
     }
-    
-    
-    
     if (self.timerIndex>10) {
         [self clearTimer];
     }
@@ -543,7 +396,6 @@ didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{
         }
 
     }
-    
 }
 // NOTE: 9.0以后使用新API接口
 - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url

+ 17 - 0
ios/JianYuIOS/JianYuIOS/AppDelegateCopy.h

@@ -0,0 +1,17 @@
+//
+//  AppDelegateCopy.h
+//  JianYuIOS
+//
+//  Created by 郑坤 on 2023/8/15.
+//  Copyright © 2023 lixianglan. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface AppDelegateCopy : UIResponder
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 692 - 0
ios/JianYuIOS/JianYuIOS/AppDelegateCopy.m

@@ -0,0 +1,692 @@
+#import "AppDelegateCopy.h"
+// 引入JPush功能所需头文件
+//#import "JPUSHService.h"
+#import "JYTabBarController.h"
+
+// iOS10注册APNs所需头文件
+#ifdef NSFoundationVersionNumber_iOS_9_x_Max
+#import <UserNotifications/UserNotifications.h>
+#endif
+// 如果需要使用idfa功能所需要引入的头文件(可选)
+#import <AdSupport/AdSupport.h>
+#import <UMSocialCore/UMSocialCore.h>
+
+//#import "JYTabBarController.h"
+#import "JYBaseViewController.h"
+
+#import "ZKGuideView.h"
+#import "JYKeyCustom.h"
+#import <WebKit/WebKit.h>
+#import "WXApi.h"
+
+
+//JPUSHRegisterDelegate
+@interface AppDelegateCopy ()<UIApplicationDelegate, WXApiDelegate,UNUserNotificationCenterDelegate>
+//
+//@property(nonatomic, strong)UIImageView *imgView;
+//@property (nonatomic,weak)NSTimer *timerClick;
+//@property (nonatomic,assign)NSInteger timerIndex;
+
+@end
+
+@implementation AppDelegateCopy
+
+
+//- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
+//    // Override point for customization after application launch.
+//    // 启动图片延时: 2秒
+////    [NSThread sleepForTimeInterval:2];
+//    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
+////    JYTabBarController *tabBarVc = [[JYTabBarController alloc] init];
+////    self.window.rootViewController = tabBarVc;
+//
+//    JYBaseViewController *baseVC =[[JYBaseViewController alloc] init];
+//    self.window.rootViewController = baseVC;
+//
+//    [self.window makeKeyAndVisible];
+////    [self initJYBXKey]; //注册协议
+//
+//    NSURLCache *URLCache = [[NSURLCache alloc] initWithMemoryCapacity:1000 * 1024 * 1024 diskCapacity:1000 * 1024 * 1024 diskPath:nil];
+//    [NSURLCache setSharedURLCache:URLCache];
+//
+//    NSString *isProvacy = [[NSUserDefaults standardUserDefaults] objectForKey:@"FirstPrivacy"];
+//    if ([isProvacy isEqualToString:@"1"]) {
+//
+//    }else {
+//        //设置启动页
+//        ZKGuideView *guideView = [[ZKGuideView alloc]initWithFrame:self.window.frame];
+//        NSLog(@"%f",guideView.frame.size.width);
+//    }
+//    NSLog(@"初始化");
+//    [GlobalData shareInstance];
+//    [JYgRPCClient shareInstance];
+//    [LXViewControllerManager shareViewControllerManager];
+//
+////    NSLog(@"sdk version:%@",[[WBOCRService sharedService] sdkVersion]);
+////    NSLog(@"%@",[[GlobalData shareInstance] getDocumentPath]);
+////    NSLog(@"%@",[[GlobalData shareInstance] getfsCachedData]);
+//
+//    [self initUM];
+//    [self registeredPush]; //注册原生推送
+//    [self registeredATAuth];//
+//
+//    if (launchOptions) {
+//        [GlobalData shareInstance].isWakeUpStatus = YES;//唤醒启动
+//        // 不是空 就是推送点击
+//        NSDictionary * remoteNotification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; //这个判断是在程序没有运行的情况下收到通知,点击通知跳转页面
+//        if ([[UIDevice currentDevice].systemVersion floatValue] < 10.0 && remoteNotification) {
+//            // iOS 10 不必走此方法
+//            [self dealWithReceiveApns:remoteNotification type:@"2"];
+//            [self clickNotification:remoteNotification];
+//        }
+//    }else {//图标启动
+//        [GlobalData shareInstance].isWakeUpStatus = NO;
+//    }
+//
+//    return YES;
+//}
+//
+//-(void)initJYBXKey {
+//    [NSURLProtocol registerClass:[JYKeyCustom class]];
+//    Class cls = [[[WKWebView new] valueForKey:[LXMD5 decodeString:@"YnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcg=="]] class];
+//    SEL sel = NSSelectorFromString([LXMD5 decodeString:@"cmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbDo="]);
+//    if([(id)cls respondsToSelector:sel]) {
+//    #pragma clang diagnostic push
+//
+//    #pragma clang diagnostic ignored"-Warc-performSelector-leaks"
+//        [(id)cls performSelector:sel withObject:@"res"];
+//    #pragma clang diagnostic pop
+//    }
+//}
+//
+//
+//-(void)initUM {
+//    /* 打开调试日志 */
+//    [[UMSocialManager defaultManager] openLog:YES];
+//    /* 设置友盟appkey */
+//    [[UMSocialManager defaultManager] setUmSocialAppkey:@"5a685423f43e4833e500003e"];
+//    [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_WechatSession appKey:@"wx0e6a5b18f4cfd10d" appSecret:@"bf12200554cb6edeb2be69d49dc11a3e" redirectURL:nil];
+//    [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_QQ appKey:@"1106703118"appSecret:@"MYFVJZhtygWy5hzh" redirectURL:@"http://mobile.umeng.com/social"];
+//
+//
+//    [WXApi registerApp:@"wx0e6a5b18f4cfd10d" universalLink:@"https:www.jianyu360.cn/"];
+//
+////    [UMSPPPayUnifyPayPlugin registerApp:@"wx0e6a5b18f4cfd10d" universalLink:@"https:www.jianyu360.cn/"];
+//}
+//
+//#pragma mark   ****处理接收通知情况****
+//-(void)dealWithReceiveApns:(NSDictionary *)userInfo type:(NSString *)act{
+//    //gRPC接收  act = 1 接收 act = 2 点击
+//    NSDictionary *infoDict = userInfo[@"info"];
+//    if ([infoDict isKindOfClass:[NSString class]]) {
+//        infoDict = [[LXViewControllerManager shareViewControllerManager] dictionaryWithJsonString:userInfo[@"info"]];
+//    }
+//    [[JYgRPCClient shareInstance] grpcCallbackServer:@{
+//        @"msgid":[NSString stringWithFormat:@"%@",infoDict[@"msgid"]],
+//        @"userid":[NSString stringWithFormat:@"%@",infoDict[@"userid"]],
+//        @"type":act,
+//    }];
+//
+//}
+//
+//
+//
+//#pragma mark 原生推送
+//-(void)registeredPush
+//{
+//    if (@available(iOS 10.0, *)) {
+//        UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
+//        center.delegate = self;
+//        // 小角标、声音、弹窗
+//        if (@available(iOS 10.0, *)) {
+//            [center requestAuthorizationWithOptions:(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionCarPlay) completionHandler:^(BOOL granted, NSError *_Nullable error) {
+//                if (!error) {
+//                    NSLog(@"request authorization succeeded!");
+//                }
+//            }];
+//        } else {
+//            // Fallback on earlier versions
+//        }
+//
+//        [[UIApplication sharedApplication] registerForRemoteNotifications];
+//
+//    }  else if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0){
+//        UIUserNotificationType types = (UIUserNotificationTypeAlert | UIUserNotificationTypeSound | UIUserNotificationTypeBadge);
+//        UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:types categories:nil];
+//        [[UIApplication sharedApplication] registerForRemoteNotifications];
+//        [[UIApplication sharedApplication] registerUserNotificationSettings:settings];
+//    }else {
+//        UIRemoteNotificationType apn_type = (UIRemoteNotificationType)(UIRemoteNotificationTypeAlert |UIRemoteNotificationTypeSound |UIRemoteNotificationTypeBadge);
+//        [[UIApplication sharedApplication] registerForRemoteNotificationTypes:apn_type];
+//    }
+//
+//}
+//
+//#pragma mark 注册手机一键
+//-(void)registeredATAuth{
+//
+//    [[TXCommonHandler sharedInstance] setAuthSDKInfo:@"秘钥" complete:^(NSDictionary * _Nonnull resultDic) {
+//        NSLog(@"设置秘钥结果:%@", resultDic);
+//    }];
+//}
+//
+//
+//
+//
+//- (void)applicationWillResignActive:(UIApplication *)application {
+//    // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
+//    // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
+//}
+//
+//
+//- (void)applicationDidEnterBackground:(UIApplication *)application {
+//    [self addImgView];
+//    //断gRPC连接?
+//
+//}
+//
+//- (void)applicationWillEnterForeground:(UIApplication *)application {
+//    // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
+//}
+//
+//
+//- (void)applicationDidBecomeActive:(UIApplication *)application {
+//    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
+//    //后台进入前台
+//    [self removeImgView];
+//    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
+//
+//    //查看粘贴板数据
+//    NSString  *content = [UIPasteboard generalPasteboard].string;
+//    //发通知
+//    //你身边的人都在用剑鱼标讯超级订阅找商机就差你了!%20复制这条信息:AEWYJJLKN,打开【剑鱼标讯APP】识别复制口令,快速获取全国招标项目!
+//    NSLog(@"粘贴板内容:%@",content);
+//    if ([content containsString:@"剑鱼标讯"]&&[GlobalData shareInstance].isOpen == YES) {
+//        //如果符合条件发送通知
+//        [[NSNotificationCenter defaultCenter] postNotificationName:UpdateClipboard object:nil userInfo:@{@"content":content}];
+//    }
+//}
+//
+//
+//- (void)applicationWillTerminate:(UIApplication *)application {
+//    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
+//}
+//
+//-(NSString*)getCurrentTimes{
+//
+//    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
+//
+//    // ----------设置你想要的格式,hh与HH的区别:分别表示12小时制,24小时制
+//
+//    [formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
+//
+//    //现在时间,你可以输出来看下是什么格式
+//
+//    NSDate *datenow = [NSDate date];
+//
+//
+//
+//    NSString *currentTimeString = [formatter stringFromDate:datenow];
+//
+//
+//
+//    return currentTimeString;
+//
+//}
+//
+//
+//- (void)application:(UIApplication *)application
+//didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{
+//
+//    //Xcode11打的包,iOS13获取Token有变化
+//    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 13) {
+//        if (![deviceToken isKindOfClass:[NSData class]]) {
+//            //记录获取token失败的描述
+//            return;
+//        }
+//        const unsigned *tokenBytes = (const unsigned *)[deviceToken bytes];
+//        NSString *strToken = [NSString stringWithFormat:@"%08x%08x%08x%08x%08x%08x%08x%08x",
+//                              ntohl(tokenBytes[0]), ntohl(tokenBytes[1]), ntohl(tokenBytes[2]),
+//                              ntohl(tokenBytes[3]), ntohl(tokenBytes[4]), ntohl(tokenBytes[5]),
+//                              ntohl(tokenBytes[6]), ntohl(tokenBytes[7])];
+//        NSLog(@"deviceToken1:%@", strToken);
+//        // 保存到后台-用于推送
+//        [LXUserDefaults saveDeviceToken:strToken];
+//    } else {
+//        NSString *token = [NSString
+//                       stringWithFormat:@"%@",deviceToken];
+//        token = [token stringByReplacingOccurrencesOfString:@"<" withString:@""];
+//        token = [token stringByReplacingOccurrencesOfString:@">" withString:@""];
+//        token = [token stringByReplacingOccurrencesOfString:@" " withString:@""];
+//        NSLog(@"deviceToken2 is: %@", token);
+//        // 保存到后台-用于推送
+//        [LXUserDefaults saveDeviceToken:token];
+//    }
+//}
+//
+//- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
+//    //Optional
+//   NSLog(@"注册APNS失败:%@",error);
+//}
+//
+//
+//
+//#pragma mark  原生通知---相关
+//#pragma mark  ***** 原生接收通知 *****
+////  iOS 10: App在前台获取到通知
+//- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler  API_AVAILABLE(ios(10.0)){
+//    NSDictionary *contentDic=notification.request.content.userInfo;
+//    NSLog(@"原生前台刚收到通知");
+//    [self dealWithReceiveApns:contentDic type:@"1"];
+//    [self receiveNotification:contentDic];
+//    // 根据APP需要,判断是否要提示用户Badge、Sound、Alert
+//    if (@available(iOS 10.0, *)) {
+//        completionHandler(UNNotificationPresentationOptionAlert);
+//    } else {
+//        // Fallback on earlier versions
+//    }
+//}
+////  iOS 10: 点击通知进入App时触发
+//- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)(void))completionHandler  API_AVAILABLE(ios(10.0)){
+//    NSLog(@"原生点击通知方法");
+//    NSDictionary *contentDic=response.notification.request.content.userInfo;
+//    [self dealWithReceiveApns:contentDic type:@"2"];
+//    [self clickNotification:contentDic];
+//    completionHandler();
+//}
+//
+//// 收到推送时调用(iOS7-iOS9)
+//- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
+//    NSLog(@"********** ios7.0~~~~~ios9.0 **********");
+//    [self dealWithReceiveApns:userInfo type:@"1"];
+//    [self receiveNotification:userInfo];
+//    completionHandler(UIBackgroundFetchResultNewData);
+//}
+//
+//// 收到推送时调用(iOS6及以下)
+//-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
+//    // App 收到推送的通知
+//    NSLog(@"********** ios7.0之前 **********");
+//    [self dealWithReceiveApns:userInfo type:@"2"];
+//    [self clickNotification:userInfo];
+//}
+//
+//
+//#pragma mark  ***** 点击通知 *****
+//-(void)clickNotification:(NSDictionary *)userInfo{
+//    NSLog(@"点击通知Appdelegate:%@",userInfo);
+//    NSDictionary *infoDict = userInfo[@"info"];
+//    if ([infoDict isKindOfClass:[NSString class]]) {
+//        infoDict = [[LXViewControllerManager shareViewControllerManager] dictionaryWithJsonString:userInfo[@"info"]];
+//    }
+//    if ([infoDict objectForKey:@"url"]) {//数据正常
+//        NSString * urlStr = [LXMD5 dealWithPushUrl:[NSString stringWithFormat:@"%@",infoDict[@"url"]] type:[NSString stringWithFormat:@"%@",userInfo[@"type"]]];
+//        NSString * menuname = [NSString stringWithFormat:@"%@",infoDict[@"menuname"]];
+//        //切换底部栏
+//        AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
+//        JYTabBarController *tab = (JYTabBarController *)delegate.window.rootViewController;
+//        NSDictionary *user_info = @{@"url":urlStr};
+//        if ([menuname isEqualToString:@"search"]) {
+//            [GlobalData shareInstance].isClickNotiStatus = YES;
+//            tab.selectedIndex = 0;//切换底部栏
+//            if ([GlobalData shareInstance].isSearchToLoad) {
+//                [[NSNotificationCenter defaultCenter] postNotificationName:OpenPushUrlMethodsOne object:nil userInfo:user_info];
+//            }else {
+//                [self waitingToBeClickNoti:user_info withIndex:@"0" isOpenLinke:NO];
+//            }
+//        }else if ([menuname isEqualToString:@"subscribe"]) {
+//            if ([LXUserDefaults isExistToken]) {
+//                [GlobalData shareInstance].isClickNotiStatus = YES;
+//                tab.selectedIndex = 1;//切换底部栏
+//                if ([GlobalData shareInstance].isSubToLoad) {
+//                    [[NSNotificationCenter defaultCenter] postNotificationName:OpenPushUrlMethodsTwo object:nil userInfo:user_info];
+//                }else {
+//                    [self waitingToBeClickNoti:user_info withIndex:@"1" isOpenLinke:NO];
+//                }
+//            }else {
+//                [self waitingToBeClickNoti:user_info withIndex:@"1" isOpenLinke:NO];
+//            }
+//        }else if ([menuname isEqualToString:@"message"]) {
+//            if ([LXUserDefaults isExistToken]) {
+//                [GlobalData shareInstance].isClickNotiStatus = YES;
+//                tab.selectedIndex = 2;//切换底部栏
+//                if ([GlobalData shareInstance].isMessToLoad) {
+//                    [[NSNotificationCenter defaultCenter] postNotificationName:OpenPushUrlMethodsThree object:nil userInfo:user_info];
+//                }else {
+//                    [self waitingToBeClickNoti:user_info withIndex:@"2" isOpenLinke:NO];
+//                }
+//            }else {
+//                [self waitingToBeClickNoti:user_info withIndex:@"2" isOpenLinke:NO];
+//            }
+//        }else if ([menuname isEqualToString:@"box"]) {
+//            if ([LXUserDefaults isExistToken]) {
+//                [GlobalData shareInstance].isClickNotiStatus = YES;
+//                tab.selectedIndex = 3;//切换底部栏
+//                if ([GlobalData shareInstance].isBoxToLoad) {
+//                    [[NSNotificationCenter defaultCenter] postNotificationName:OpenPushUrlMethodsFour object:nil userInfo:user_info];
+//                }else {
+//                    [self waitingToBeClickNoti:user_info withIndex:@"3" isOpenLinke:NO];
+//                }
+//            }else {
+//                [self waitingToBeClickNoti:user_info withIndex:@"3" isOpenLinke:NO];
+//            }
+//        }else if ([menuname isEqualToString:@"me"]) {
+//            if ([LXUserDefaults isExistToken]) {
+//                [GlobalData shareInstance].isClickNotiStatus = YES;
+//                tab.selectedIndex = 4;//切换底部栏
+//                if ([GlobalData shareInstance].isMineToLoad) {
+//                    [[NSNotificationCenter defaultCenter] postNotificationName:OpenPushUrlMethodsFive object:nil userInfo:user_info];
+//                }else {
+//                    [self waitingToBeClickNoti:user_info withIndex:@"4" isOpenLinke:NO];
+//                }
+//            }else {
+//                [self waitingToBeClickNoti:user_info withIndex:@"4" isOpenLinke:NO];
+//            }
+//
+//        }else if ([menuname isEqualToString:@"other"]) {
+//            //打开外链
+//            if ([GlobalData shareInstance].isWakeUpStatus) {
+//                [self waitingToBeClickNoti:user_info withIndex:@"0" isOpenLinke:YES];
+//            }else {
+//                [[NSNotificationCenter defaultCenter] postNotificationName:OpenPushLinkUrlMethods object:nil userInfo:user_info];
+//            }
+//        }else {
+//            if ([GlobalData shareInstance].isWakeUpStatus) {
+//                [self waitingToBeClickNoti:user_info withIndex:@"0" isOpenLinke:NO];
+//            }else {
+//                [[NSNotificationCenter defaultCenter] postNotificationName:OpenPushUrlOtherMethods object:nil userInfo:user_info];
+//            }
+//        }
+//
+//
+////        if(self.wakeUpBool) {//刚启动
+////            [[NSUserDefaults standardUserDefaults]setObject:userInfo forKey:RemoteNotifications];
+////            self.wakeUpBool = NO;
+////        }
+//        if([userInfo[@"type"] isEqualToString:@"message"]||[userInfo[@"type"] isEqualToString:@"titleMessage"]) {
+//            NSDictionary * infoDic;
+//            if([GlobalData shareInstance].isWakeUpStatus) {//刚启动
+//                infoDic = @{@"url":infoDict[@"url"],
+//                            @"rectype":@"A",
+//                            @"openid":infoDict[@"openid"],
+//                            };
+//            }else {
+//                infoDic = @{@"url":infoDict[@"url"],
+//                            @"rectype":@"C",
+//                            @"openid":infoDict[@"openid"],
+//                            };
+//            }
+//            [[LXNetworkManager shareLXNetworkManager]postWithURLStr:[NSString stringWithFormat:@"%@jyapp/free/message/receive",kHost] parameters:infoDic progress:^(NSProgress *progress) {
+//            } success:^(id responseObject) {
+//                NSLog(@"responseObject=%@",responseObject);
+//            } failure:^(NSError *error) {
+//                NSLog(@"error=%@",error);
+//            }];
+//        }
+//    }
+//    //刚启动-置空
+//    [GlobalData shareInstance].isWakeUpStatus = NO;
+//}
+//
+//-(void)waitingToBeClickNoti:(NSDictionary *)userInfo withIndex:(NSString *)index isOpenLinke:(BOOL)isLinks {
+//    NSLog(@"点击通知-延迟监听处理");
+//    NSString *linksStr = (isLinks==NO)?@"0":@"1";
+//    NSDictionary *dict = @{
+//        @"userInfo":userInfo,
+//        @"index":index,
+//        @"links":linksStr,
+//    };
+//    self.timerClick = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerClickMethod:) userInfo:dict repeats:YES];
+//    [self.timerClick fire];
+//}
+//
+//-(void)timerClickMethod:(NSTimer *)timer {
+//    self.timerIndex++;
+//    NSDictionary *infoDict = [timer userInfo];
+//    NSInteger index = [infoDict[@"index"] integerValue];
+//    BOOL isLinks = [infoDict[@"links"] integerValue]==0?NO:YES;
+//    NSDictionary *userInfo = infoDict[@"userInfo"];
+//
+//    if ([LXUserDefaults isExistToken]) {//登录正常状态
+//        if (index==0) {
+//            if ([GlobalData shareInstance].isSearchToLoad) {
+//                if (isLinks) {
+//                    [[NSNotificationCenter defaultCenter] postNotificationName:OpenPushLinkUrlMethods object:nil userInfo:userInfo];
+//                }else {
+//                    [[NSNotificationCenter defaultCenter] postNotificationName:OpenPushUrlMethodsOne object:nil userInfo:userInfo];
+//                }
+//                [self clearTimer];
+//            }
+//        }else if (index==1) {
+//            if ([GlobalData shareInstance].isSubToLoad) {
+//                [[NSNotificationCenter defaultCenter] postNotificationName:OpenPushUrlMethodsTwo object:nil userInfo:userInfo];
+//                [self clearTimer];
+//            }
+//        }else if (index==2) {
+//            if ([GlobalData shareInstance].isMessToLoad) {
+//                [[NSNotificationCenter defaultCenter] postNotificationName:OpenPushUrlMethodsThree object:nil userInfo:userInfo];
+//                [self clearTimer];
+//            }
+//        }else if (index==3) {
+//            if ([GlobalData shareInstance].isBoxToLoad) {
+//                [[NSNotificationCenter defaultCenter] postNotificationName:OpenPushUrlMethodsFour object:nil userInfo:userInfo];
+//                [self clearTimer];
+//            }
+//        }else if (index==4) {
+//            if ([GlobalData shareInstance].isMineToLoad) {
+//                [[NSNotificationCenter defaultCenter] postNotificationName:OpenPushUrlMethodsFive object:nil userInfo:userInfo];
+//                [self clearTimer];
+//            }
+//        }else {
+//
+//        }
+//    }else { //未登录异常状态
+//        if ([GlobalData shareInstance].isSearchToLoad) {
+//            NSLog(@"未登录状态-等待:%@",infoDict[@"index"]);
+//            [[NSNotificationCenter defaultCenter] postNotificationName:LoginIndexTabBar object:nil userInfo:@{@"item_index":infoDict[@"index"]}];
+//            [self clearTimer];
+//        }
+//    }
+//
+//
+//
+//    if (self.timerIndex>10) {
+//        [self clearTimer];
+//    }
+//}
+//
+//-(void)clearTimer {
+//    self.timerIndex = 0;
+//    [self.timerClick invalidate];
+//    self.timerClick = nil;
+//}
+//
+//
+//
+//-(void)receiveNotification:(NSDictionary *)userInfo {
+//
+//    NSDictionary *infoDict = userInfo[@"info"];
+//    if ([infoDict isKindOfClass:[NSString class]]) {
+//        infoDict = [[LXViewControllerManager shareViewControllerManager] dictionaryWithJsonString:userInfo[@"info"]];
+//    }
+//    if ([infoDict objectForKey:@"url"]) {//数据正常
+//        NSString * reddot = [NSString stringWithFormat:@"%@",infoDict[@"reddot"]];
+//        NSString *index = @"";
+//        if ([reddot isEqualToString:@"search"]) {
+//            [GlobalData shareInstance].searchIsRed = YES;
+//            index = @"0";
+//        }else if ([reddot isEqualToString:@"subscribe"]) {
+//            [GlobalData shareInstance].subIsRed = YES;
+//            index = @"1";
+//        }else if ([reddot isEqualToString:@"box"]) {
+//            [GlobalData shareInstance].boxIsRed = YES;
+//            index = @"3";
+//        }else if ([reddot isEqualToString:@"me"]) {
+//            [GlobalData shareInstance].mineIsRed = YES;
+//            index = @"4";
+//        }else if ([reddot isEqualToString:@"message"]) {
+//            [GlobalData shareInstance].messIsRed = YES;
+//            index = @"2";
+//
+//        }else {
+//
+//        }
+//
+//        [[NSNotificationCenter defaultCenter] postNotificationName:JYReceiveNewsRedPoint object:nil userInfo:@{@"index":index,@"typeMsg":userInfo[@"type"],@"url":infoDict[@"url"]}];
+//
+//        if([userInfo[@"type"] isEqualToString:@"message"]||[userInfo[@"type"] isEqualToString:@"titleMessage"]) {
+//
+//            NSDictionary * infoDic = @{@"url":infoDict[@"url"],
+//                                       @"rectype":@"D",
+//                                       @"openid":infoDict[@"openid"],
+//            };
+//            [[LXNetworkManager shareLXNetworkManager]postWithURLStr:[NSString stringWithFormat:@"%@jyapp/free/message/receive",kHost] parameters:infoDic progress:^(NSProgress *progress) {
+//            } success:^(id responseObject) {
+//                NSLog(@"responseObject=%@",responseObject);
+//            } failure:^(NSError *error) {
+//                NSLog(@"error=%@",error);
+//            }];
+//
+//        }
+//
+//    }
+//}
+//// NOTE: 9.0以后使用新API接口
+//- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
+//{
+//    BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url];
+//    if (!result) {
+//        // 其他如支付等SDK的回调
+//        if ([url.scheme isEqualToString:@"wx0e6a5b18f4cfd10d"]) {
+//            return  [WXApi handleOpenURL:url delegate:(id<WXApiDelegate>)self];
+//        }
+//        if ([url.host isEqualToString:@"safepay"]) {
+//            //跳转支付宝钱包进行支付,处理支付结果
+//            [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
+//                NSLog(@"app-reslut = %@",resultDic);
+//                NSInteger orderState=[resultDic[@"resultStatus"] integerValue];
+//                NSString *paystatus =@"";
+//                if (orderState==9000) {
+//                    //成功
+//                    paystatus = @"1";
+//                    NSLog(@"订单支付成功");
+//                } else if(orderState==6001){
+//                    //取消
+//                    paystatus = @"0";
+//                    NSLog(@"取消支付");
+//                }else {
+//                    //失败
+//                    paystatus = @"-1";
+//                    NSLog(@"订单支付失败");
+//                }
+//
+//                [[NSNotificationCenter defaultCenter] postNotificationName:AlipayWXpayStatus object:paystatus userInfo:nil];
+//            }];
+//        }
+//    }
+//    return result;
+//}
+//
+//#pragma mark UM 回调
+//- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
+//{
+//    BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url sourceApplication:sourceApplication annotation:annotation];
+//    if (!result) {
+//        // 其他如支付等SDK的回调
+//        if ([url.scheme isEqualToString:@"wx0e6a5b18f4cfd10d"]) {
+//            return  [WXApi handleOpenURL:url delegate:(id<WXApiDelegate>)self];
+//        }
+//
+//        if ([url.host isEqualToString:@"safepay"]) {
+//
+//
+//            /*
+//             9000    订单支付成功
+//             8000    正在处理中,支付结果未知(有可能已经支付成功),请查询商户订单列表中订单的支付状态
+//             4000    订单支付失败
+//             5000    重复请求
+//             6001    用户中途取消
+//             6002    网络连接出错
+//             6004    支付结果未知(有可能已经支付成功),请查询商户订单列表中订单的支付状态
+//             其它    其它支付错误
+//             */
+//
+//            //跳转支付宝钱包进行支付,处理支付结果
+//            [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
+//                NSLog(@"app-reslut = %@",resultDic);
+//                NSInteger orderState=[resultDic[@"resultStatus"] integerValue];
+//                NSString *paystatus =@"";
+//                if (orderState==9000) {
+//                    //成功
+//                    paystatus = @"1";
+//                    NSLog(@"订单支付成功");
+//                } else if(orderState==6001){
+//                    //取消
+//                    paystatus = @"0";
+//                    NSLog(@"取消支付");
+//                }else {
+//                    //失败
+//                    paystatus = @"-1";
+//                    NSLog(@"订单支付失败");
+//                }
+//
+//                [[NSNotificationCenter defaultCenter] postNotificationName:AlipayWXpayStatus object:paystatus userInfo:nil];
+//
+//            }];
+//        }
+//    }
+//    return result;
+//}
+//
+//#pragma mark 微信支付代理方法
+//-(void)onResp:(BaseResp*)resp{
+//    NSLog(@"收到 微信 回执");
+//    if ([resp isKindOfClass:[PayResp class]]){
+//        PayResp*response=(PayResp*)resp;
+//        NSString *paystatus =@"";
+//        switch(response.errCode){
+//            case WXSuccess:
+//                paystatus = @"1";
+//                NSLog(@"微信支付成功");
+//                break;
+//
+//            case WXErrCodeUserCancel:
+//                paystatus = @"0";
+//                NSLog(@"微信支付取消");
+//                break;
+//
+//            default:
+//                paystatus = @"-1";
+//                NSLog(@"微信支付失败");
+//                break;
+//        }
+//
+//
+//        [[NSNotificationCenter defaultCenter] postNotificationName:AlipayWXpayStatus object:paystatus userInfo:nil];
+//    }
+//
+//}
+//
+//
+//
+//
+//-(void)addImgView{
+//    [self removeImgView];
+//    self.imgView = [[UIImageView alloc] init];
+//    self.imgView.backgroundColor = [UIColor whiteColor];
+//    self.imgView.frame = [UIScreen mainScreen].bounds;
+//    [self.window addSubview:self.imgView];
+//}
+//
+//-(void)removeImgView{
+//    if (self.imgView) {
+//        [self.imgView removeFromSuperview];
+//        self.imgView = nil;
+//    }
+//}
+
+
+
+
+
+@end

+ 3 - 5
ios/JianYuIOS/JianYuIOS/Base.lproj/LaunchScreen.storyboard

@@ -1,11 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
-    <device id="retina4_7" orientation="portrait">
-        <adaptation id="fullscreen"/>
-    </device>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
+    <device id="retina4_7" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14460.20"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <scenes>

+ 11 - 6
ios/JianYuIOS/JianYuIOS/BaseClass1/PrefixHeader.pch

@@ -139,6 +139,11 @@ _Pragma("clang diagnostic pop")\
 //内购
 #import <StoreKit/StoreKit.h>
 
+//
+#import <ATAuthSDK/ATAuthSDK.h>
+#import <YTXOperators/YTXOperators.h>
+#import <YTXMonitor/YTXMonitor.h>
+
 //加载图片
 #import <SDWebImage/UIButton+WebCache.h>
 #import "UIImageView+WebCache.h"
@@ -170,15 +175,15 @@ _Pragma("clang diagnostic pop")\
 #import "JhtFileModel.h"
 #import "LoadDocViewController.h"
 
-
-//#define kHost @"https://app-jytest.jydev.jianyu360.com/"  //测试1
-//#define kHost @"https://app2-jytest.jydev.jianyu360.com/"  //测试2
-#define kHost @"https://app5-jytest.jydev.jianyu360.com/"  //测试5
-
+//测试1
+#define kHost @"https://app-jytest.jydev.jianyu360.com/"
+//测试2
+//#define kHost @"https://app2-jytest.jydev.jianyu360.com/"
+//测试5
+//#define kHost @"https://app5-jytest.jydev.jianyu360.com/"
 
 //#define kHost @"https://ios.jianyu360.cn/"   //正式版
 
-
 /*
  18613717801    123456
  */

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 1759 - 1
ios/JianYuIOS/JianYuIOS/Classes(新模块)/JYBaseViewController.m


+ 4 - 25
ios/JianYuIOS/JianYuIOS/JYWKNewWebController.m

@@ -167,14 +167,11 @@
 
 }
 
-
--(void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler
-{
+-(void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
     //如果是跳转一个新页面
     if (navigationAction.targetFrame == nil) {
         [webView loadRequest:navigationAction.request];
     }
- 
     //如果当前页面是三级页面-
     NSString *curUrl = [webView.URL absoluteString];
     if ([curUrl containsString:@"apps.apple.com"]&&[curUrl containsString:@"1354897149"]){
@@ -183,14 +180,11 @@
     }else {
         decisionHandler(WKNavigationActionPolicyAllow);
     }
-    
 }
 
-- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script
-{
+- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script {
     __block NSString *resultString = nil;
     __block BOOL finished = NO;
-
     [self.webView evaluateJavaScript:script completionHandler:^(id result, NSError *error) {
         if (error == nil) {
             if (result != nil) {
@@ -201,26 +195,20 @@
         }
         finished = YES;
     }];
-
     while (!finished) {
         [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
     }
     return resultString;
 }
 
-
-
-
--(void)backBtn1Click
-{
+-(void)backBtn1Click{
     if (self.webView.canGoBack) {// web能退 就后退
         [self.webView goBack];
     }else{// 跳回上级页面
         [self dismissViewControllerAnimated:YES completion:nil];
     }
 }
--(void)backBtn2Click
-{
+-(void)backBtn2Click{
     if (self.webView.canGoBack) {// web能退 就后退
         [self.webView goBack];
     }else{// 跳回上级页面
@@ -234,15 +222,6 @@
     });
 }
 
-
-
-//-(void)dealloc {
-//    NSLog(@"释放");
-//}
-
-
-
-
 /*
 #pragma mark - Navigation
 

BIN
ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/ATAuthSDK


BIN
ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/ATAuthSDK.bundle/icon_check@2x.png


BIN
ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/ATAuthSDK.bundle/icon_check@3x.png


BIN
ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/ATAuthSDK.bundle/icon_close_gray@2x.png


BIN
ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/ATAuthSDK.bundle/icon_close_gray@3x.png


BIN
ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/ATAuthSDK.bundle/icon_nav_back_gray@2x.png


BIN
ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/ATAuthSDK.bundle/icon_nav_back_gray@3x.png


BIN
ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/ATAuthSDK.bundle/icon_nav_back_light@2x.png


BIN
ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/ATAuthSDK.bundle/icon_nav_back_light@3x.png


BIN
ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/ATAuthSDK.bundle/icon_uncheck@2x.png


BIN
ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/ATAuthSDK.bundle/icon_uncheck@3x.png


+ 24 - 0
ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/Headers/ATAuthSDK.h

@@ -0,0 +1,24 @@
+//
+//  ATAuthSDK.h
+//  ATAuthSDK
+//
+//  Created by yangli on 2020/11/11.
+//  Copyright © 2020. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+//! Project version number for ATAuthSDK.
+FOUNDATION_EXPORT double ATAuthSDKVersionNumber;
+
+//! Project version string for ATAuthSDK.
+FOUNDATION_EXPORT const unsigned char ATAuthSDKVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import <ATAuthSDK/PublicHeader.h>
+
+#import "TXCommonHandler.h"
+#import "TXCommonUtils.h"
+#import "PNSReturnCode.h"
+#import "TXCustomModel.h"
+#import "PNSReporter.h"
+

+ 37 - 0
ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/Headers/PNSReporter.h

@@ -0,0 +1,37 @@
+//
+//  PNSReporter.h
+//  ATAuthSDK
+//
+//  Created by 刘超的MacBook on 2020/5/21.
+//  Copyright © 2020. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+typedef NS_ENUM(NSInteger, PNSLoggerLevel) {
+    PNSLoggerLevelVerbose = 1,
+    PNSLoggerLevelDebug,
+    PNSLoggerLevelInfo,
+    PNSLoggerLevelWarn,
+    PNSLoggerLevelError
+};
+
+@interface PNSReporter : NSObject
+
+/**
+ *  控制台日志输出开关,若开启会以PNS_LOGGER为开始标记对日志进行输出,Release模式记得关闭!
+ *  @param enable 开关参数,默认为NO
+ */
+- (void)setConsolePrintLoggerEnable:(BOOL)enable;
+
+/**
+ *  设置埋点上传开关,但不会对通过 setupUploader: 接口实现的自定义上传方法起作用
+ *  @param  enable 开关设置BOOL值,默认为YES
+ */
+- (void)setUploadEnable:(BOOL)enable DEPRECATED_MSG_ATTRIBUTE("日志不再上传");;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 86 - 0
ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/Headers/PNSReturnCode.h

@@ -0,0 +1,86 @@
+//
+//  PNSReturnCode.h
+//  ATAuthSDK
+//
+//  Created by 刘超的MacBook on 2019/9/4.
+//  Copyright © 2019. All rights reserved.
+//
+
+#ifndef PNSReturnCode_h
+#define PNSReturnCode_h
+
+#import <Foundation/Foundation.h>
+
+#pragma mark - 该返回码为阿里云号码认证SDK⾃身的返回码,请注意600011及600012错误内均含有运营商返回码,具体错误在碰到之后查阅 https://help.aliyun.com/document_detail/85351.html?spm=a2c4g.11186623.6.561.32a7360cxvWk6H
+
+
+/// 接口成功
+static NSString * const PNSCodeSuccess = @"600000";
+/// 获取运营商配置信息失败
+static NSString * const PNSCodeGetOperatorInfoFailed = @"600004";
+/// 未检测到sim卡
+static NSString * const PNSCodeNoSIMCard = @"600007";
+/// 蜂窝网络未开启或不稳定
+static NSString * const PNSCodeNoCellularNetwork = @"600008";
+/// 无法判运营商
+static NSString * const PNSCodeUnknownOperator = @"600009";
+/// 未知异常
+static NSString * const PNSCodeUnknownError = @"600010";
+/// 获取token失败
+static NSString * const PNSCodeGetTokenFailed = @"600011";
+/// 预取号失败
+static NSString * const PNSCodeGetMaskPhoneFailed = @"600012";
+/// 运营商维护升级,该功能不可用
+static NSString * const PNSCodeInterfaceDemoted = @"600013";
+/// 运营商维护升级,该功能已达最大调用次数
+static NSString * const PNSCodeInterfaceLimited = @"600014";
+/// 接口超时
+static NSString * const PNSCodeInterfaceTimeout = @"600015";
+/// AppID、Appkey解析失败
+static NSString * const PNSCodeDecodeAppInfoFailed = @"600017";
+/// 该号码已被运营商管控,目前只有联通号码有该功能
+static NSString * const PNSCodePhoneBlack = @"600018";
+/// 运营商已切换
+static NSString * const PNSCodeCarrierChanged = @"600021";
+/// 终端环境检测失败(终端不支持认证 / 终端检测参数错误)
+static NSString * const PNSCodeEnvCheckFail = @"600025";
+
+/*************** 号码认证授权页相关返回码 START ***************/
+
+/// 唤起授权页成功
+static NSString * const PNSCodeLoginControllerPresentSuccess = @"600001";
+/// 唤起授权页失败
+static NSString * const PNSCodeLoginControllerPresentFailed = @"600002";
+/// 授权页已加载时不允许调用加速或预取号接口
+static NSString * const PNSCodeCallPreLoginInAuthPage = @"600026";
+/// 点击返回,⽤户取消一键登录
+static NSString * const PNSCodeLoginControllerClickCancel = @"700000";
+/// 点击切换按钮,⽤户取消免密登录
+static NSString * const PNSCodeLoginControllerClickChangeBtn = @"700001";
+/// 点击登录按钮事件
+static NSString * const PNSCodeLoginControllerClickLoginBtn = @"700002";
+/// 点击CheckBox事件
+static NSString * const PNSCodeLoginControllerClickCheckBoxBtn = @"700003";
+/// 点击协议富文本文字
+static NSString * const PNSCodeLoginControllerClickProtocol = @"700004";
+/// 中断页面消失的时候,也就是suspendDisMissVC设置为YES的时候,点击左上角返回按钮时透出的状态码
+static NSString * const PNSCodeLoginControllerSuspendDisMissVC = @"700010";
+
+/*************** 号码认证授权页相关返回码 FINISH ***************/
+
+
+/*************** 二次授权页返回code码 START ***************/
+
+/// 点击一键登录拉起授权页二次弹窗
+static NSString * const PNSCodeLoginClickPrivacyAlertView = @"700006";
+/// 隐私协议二次弹窗关闭
+static NSString * const PNSCodeLoginPrivacyAlertViewClose = @"700007";
+/// 隐私协议二次弹窗点击确认并继续
+static NSString * const PNSCodeLoginPrivacyAlertViewClickContinue = @"700008";
+/// 点击隐私协议二次弹窗上的协议富文本文字
+static NSString * const PNSCodeLoginPrivacyAlertViewPrivacyContentClick = @"700009";
+
+/*************** 二次授权页返回code码 FINISH ***************/
+
+
+#endif /* PNSReturnCode_h */

+ 123 - 0
ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/Headers/TXCommonHandler.h

@@ -0,0 +1,123 @@
+//
+//  TXCommonHandler.h
+//  ATAuthSDK
+//
+//  Created by yangli on 15/03/2018.
+
+#import <Foundation/Foundation.h>
+#import "TXCustomModel.h"
+#import "PNSReporter.h"
+
+typedef NS_ENUM(NSInteger, PNSAuthType) {
+    PNSAuthTypeVerifyToken = 1,  //本机号码校验
+    PNSAuthTypeLoginToken = 2    //一键登录
+};
+
+@interface TXCommonHandler : NSObject
+
+/**
+ *  获取该类的单例实例对象
+ *  @return  单例实例对象
+ */
++ (instancetype _Nonnull )sharedInstance;
+
+/**
+ *  获取当前SDK版本号
+ *  @return  字符串,sdk版本号
+ */
+- (NSString *_Nonnull)getVersion;
+
+/**
+ *  初始化SDK调用参数,app生命周期内调用一次
+ *  @param  info app对应的秘钥
+ *  @param  complete 结果异步回调到主线程,成功时resultDic=@{resultCode:600000, msg:...},其他情况时"resultCode"值请参考PNSReturnCode
+ */
+- (void)setAuthSDKInfo:(NSString * _Nonnull)info complete:(void(^_Nullable)(NSDictionary * _Nonnull resultDic))complete;
+
+/**
+ *  检查当前环境是否支持一键登录或号码认证,resultDic 返回 PNSCodeSuccess 说明当前环境支持
+ *  @param  authType 服务类型 PNSAuthTypeVerifyToken 本机号码校验流程,PNSAuthTypeLoginToken 一键登录流程
+ *  @param  complete 结果异步回调到主线程,成功时resultDic=@{resultCode:600000, msg:...},其他情况时"resultCode"值请参考PNSReturnCode,只有成功回调才能保障后续接口调用
+ */
+- (void)checkEnvAvailableWithAuthType:(PNSAuthType)authType complete:(void (^_Nullable)(NSDictionary * _Nullable resultDic))complete;
+
+/**
+ *  加速获取本机号码校验token,防止调用 getVerifyTokenWithTimeout:complete: 获取token时间过长
+ *  @param  timeout 接口超时时间,单位s,默认为3.0s
+ *  @param  complete 结果异步回调到主线程,成功时resultDic=@{resultCode:600000, token:..., msg:...},其他情况时"resultCode"值请参考PNSReturnCode
+ */
+- (void)accelerateVerifyWithTimeout:(NSTimeInterval)timeout complete:(void (^_Nullable)(NSDictionary * _Nonnull resultDic))complete;
+
+/**
+ *  获取本机号码校验Token
+ *  @param  timeout 接口超时时间,单位s,默认为3.0s
+ *  @param  complete 结果异步回调到主线程,成功时resultDic=@{resultCode:600000, token:..., msg:...},其他情况时"resultCode"值请参考PNSReturnCode
+ */
+- (void)getVerifyTokenWithTimeout:(NSTimeInterval)timeout complete:(void (^_Nullable)(NSDictionary * _Nonnull resultDic))complete;
+
+/**
+ *  加速一键登录授权页弹起,防止调用 getLoginTokenWithTimeout:controller:model:complete: 等待弹起授权页时间过长
+ *  @param  timeout 接口超时时间,单位s,默认为3.0s
+ *  @param  complete 结果异步回调到主线程,成功时resultDic=@{resultCode:600000, msg:...},其他情况时"resultCode"值请参考PNSReturnCode
+ */
+- (void)accelerateLoginPageWithTimeout:(NSTimeInterval)timeout complete:(void (^_Nullable)(NSDictionary * _Nonnull resultDic))complete;
+
+/**
+ *  获取一键登录Token,调用该接口首先会弹起授权页,点击授权页的登录按钮获取Token
+ *  @warning 注意的是,如果前面没有调用 accelerateLoginPageWithTimeout:complete: 接口,该接口内部会自动先帮我们调用,成功后才会弹起授权页,所以有一个明显的等待过程
+ *  @param  timeout 接口超时时间,单位s,默认为3.0s
+ *  @param  controller 唤起自定义授权页的容器,内部会对其进行验证,检查是否符合条件
+ *  @param  model 自定义授权页面选项,可为nil,采用默认的授权页面,具体请参考TXCustomModel.h文件
+ *  @param  complete 结果异步回调到主线程,"resultDic"里面的"resultCode"值请参考PNSReturnCode,如下:
+ *
+ *          授权页控件点击事件:700000(点击授权页返回按钮)、700001(点击切换其他登录方式)、
+ *          700002(点击登录按钮事件,根据返回字典里面的 "isChecked"字段来区分check box是否被选中,只有被选中的时候内部才会去获取Token)、700003(点击check box事件)、700004(点击协议富文本文字)
+ 接口回调其他事件:600001(授权页唤起成功)、600002(授权页唤起失败)、600000(成功获取Token)、600011(获取Token失败)、
+ *          600015(获取Token超时)、600013(运营商维护升级,该功能不可用)、600014(运营商维护升级,该功能已达最大调用次数).....
+ */
+- (void)getLoginTokenWithTimeout:(NSTimeInterval)timeout controller:(UIViewController *_Nonnull)controller model:(TXCustomModel *_Nullable)model complete:(void (^_Nullable)(NSDictionary * _Nonnull resultDic))complete;
+
+/**
+ *  此接口仅用于开发期间用于一键登录页面不同机型尺寸适配调试(可支持模拟器),非正式页面,手机掩码为0,不能正常登录,请开发者注意下
+ *  @param  controller 唤起自定义授权页的容器,内部会对其进行验证,检查是否符合条件
+ *  @param  model 自定义授权页面选项,可为nil,采用默认的授权页面,具体请参考TXCustomModel.h文件
+ *  @param  complete 结果异步回调到主线程,"resultDic"里面的"resultCode"值请参考PNSReturnCode
+ */
+- (void)debugLoginUIWithController:(UIViewController *_Nonnull)controller model:(TXCustomModel *_Nullable)model complete:(void (^_Nullable)(NSDictionary * _Nonnull resultDic))complete;
+
+/**
+ *  授权页弹起后,修改checkbox按钮选中状态,当checkout按钮隐藏时,设置不生效
+ */
+- (void)setCheckboxIsChecked:(BOOL)isChecked;
+
+/**
+ *  手动隐藏一键登录获取登录Token之后的等待动画,默认为自动隐藏,当设置 TXCustomModel 实例 autoHideLoginLoading = NO 时, 可调用该方法手动隐藏
+ */
+- (void)hideLoginLoading;
+
+/**
+ *  注销授权页,建议用此方法,对于移动卡授权页的消失会清空一些数据
+ *  @param flag 是否添加动画
+ *  @param complete 成功返回
+ */
+- (void)cancelLoginVCAnimated:(BOOL)flag complete:(void (^_Nullable)(void))complete;
+
+/**
+ *  获取日志埋点相关控制对象
+ */
+- (PNSReporter * _Nonnull)getReporter;
+
+/**
+ 关闭二次授权弹窗页
+ */
+- (void)closePrivactAlertView;
+
+
+
+/**
+ *  检查及准备调用环境,resultDic返回PNSCodeSuccess才能调用下面的功能接口
+ *  @param  complete 结果异步回调到主线程,成功时resultDic=@{resultCode:600000, msg:...},其他情况时"resultCode"值请参考PNSReturnCode,只有成功回调才能保障后续接口调用
+ */
+- (void)checkEnvAvailableWithComplete:(void (^_Nullable)(NSDictionary * _Nullable resultDic))complete DEPRECATED_MSG_ATTRIBUTE("Please use checkEnvAvailableWithAuthType:complete: instead");
+
+@end

+ 81 - 0
ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/Headers/TXCommonUtils.h

@@ -0,0 +1,81 @@
+//
+//  TXCommonUtils.h
+//  authsdk
+//
+//  Created by yangli on 12/03/2018.
+
+#import <Foundation/Foundation.h>
+
+@interface TXCommonUtils : NSObject
+
+/**
+ 判断当前设备蜂窝数据网络是否开启,即3G/4G
+ @return 结果
+ */
++ (BOOL)checkDeviceCellularDataEnable;
+
+/**
+ 判断当前上网卡运营商是否是中国联通
+ @return 结果
+ */
++ (BOOL)isChinaUnicom;
+
+/**
+ 判断当前上网卡运营商是否是中国移动
+ @return 结果
+ */
++ (BOOL)isChinaMobile;
+
+/**
+ 判断当前上网卡运营商是否是中国电信
+ @return 结果
+ */
++ (BOOL)isChinaTelecom;
+
+/**
+ 获取当前上网卡运营商名称,比如中国移动、中国电信、中国联通
+ @return 结果
+ */
++ (NSString *)getCurrentCarrierName;
+
+/**
+ 获取当前上网卡网络类型,比如WiFi,4G
+ @return 结果
+ */
++ (NSString *)getNetworktype;
+
+/**
+ 判断当前设备是否有SIM卡
+ @return 结果
+ */
++ (BOOL)simSupportedIsOK;
+
+/**
+ 判断wwan是否开着(通过p0网卡判断,无wifi或有wifi情况下都能检测到)
+ @return 结果
+ */
++ (BOOL)isWWANOpen;
+
+/**
+ 判断wwan是否开着(仅无wifi情况下)
+ @return 结果
+ */
++ (BOOL)reachableViaWWAN;
+
+/**
+ 获取设备当前网络私网IP地址
+ @return 结果
+ */
++ (NSString *)getMobilePrivateIPAddress:(BOOL)preferIPv4;
+
+/**
+ 获取当前设备的唯一标识ID
+ */
++ (NSString *)getUniqueID;
+
+/**
+ 通过颜色设置生成图片,支持弧度设置,比如一键登录按钮背景图片
+ */
++ (UIImage *)imageWithColor:(UIColor *)color size:(CGSize)size isRoundedCorner:(BOOL )isRounded radius:(CGFloat)radius;
+
+@end

+ 420 - 0
ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/Headers/TXCustomModel.h

@@ -0,0 +1,420 @@
+//
+//  TXCustomModel.h
+//  ATAuthSDK
+//
+//  Created by yangli on 2019/4/4.
+//  Copyright © 2019. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+typedef NS_ENUM(NSUInteger, PNSPresentationDirection){
+    PNSPresentationDirectionBottom = 0,
+    PNSPresentationDirectionRight,
+    PNSPresentationDirectionTop,
+    PNSPresentationDirectionLeft,
+};
+
+/**
+ *  构建控件的frame,view布局时会调用该block得到控件的frame
+ *  @param  screenSize 屏幕的size,可以通过该size来判断是横屏还是竖屏
+ *  @param  superViewSize 该控件的super view的size,可以通过该size,辅助该控件重新布局
+ *  @param  frame 控件默认的位置
+ *  @return 控件新设置的位置
+ */
+typedef CGRect(^PNSBuildFrameBlock)(CGSize screenSize, CGSize superViewSize, CGRect frame);
+
+@interface TXCustomModel : NSObject
+
+/**
+ * 说明,可设置的Y轴距离,waring: 以下所有关于Y轴的设置<=0都将不生效,请注意
+ * 全屏模式:默认是以375x667pt为基准,其他屏幕尺寸可以根据(ratio = 屏幕高度/667)比率来适配,比如 Y*ratio
+ */
+
+#pragma mark- 全屏、弹窗模式设置
+/**
+ *  授权页面中,渲染并显示所有控件的view,称content view,不实现该block默认为全屏模式
+ *  实现弹窗的方案 x >= 0 || y >= 0 width <= 屏幕宽度 || height <= 屏幕高度
+ */
+@property (nonatomic, copy) PNSBuildFrameBlock contentViewFrameBlock;
+
+#pragma mark- 竖屏、横屏模式设置
+/** 屏幕是否支持旋转方向,默认UIInterfaceOrientationMaskPortrait,注意:在刘海屏,UIInterfaceOrientationMaskPortraitUpsideDown属性慎用! */
+@property (nonatomic, assign) UIInterfaceOrientationMask supportedInterfaceOrientations;
+
+#pragma mark- 仅弹窗模式属性
+/** 底部蒙层背景颜色,默认黑色 */
+@property (nonatomic, strong) UIColor *alertBlurViewColor;
+/** 底部蒙层背景透明度,默认0.5 */
+@property (nonatomic, assign) CGFloat alertBlurViewAlpha;
+/** contentView背景颜色,默认白色 */
+@property (nonatomic, strong) UIColor *alertContentViewColor;
+/** contentView背景透明度,默认1.0 ,即不透明*/
+@property (nonatomic, assign) CGFloat alertContentViewAlpha;
+/** contentView的四个圆角值,顺序为左上,左下,右下,右上,需要填充4个值,不足4个值则无效,如果值<=0则为直角 */
+@property (nonatomic, copy) NSArray<NSNumber *> *alertCornerRadiusArray;
+/** 标题栏背景颜色 */
+@property (nonatomic, strong) UIColor *alertTitleBarColor;
+/** 标题栏是否隐藏,默认NO */
+@property (nonatomic, assign) BOOL alertBarIsHidden;
+/** 标题栏标题,内容、字体、大小、颜色 */
+@property (nonatomic, copy) NSAttributedString *alertTitle;
+/** 标题栏右侧关闭按钮图片设置*/
+@property (nonatomic, strong) UIImage *alertCloseImage;
+/** 标题栏右侧关闭按钮是否显示,默认NO*/
+@property (nonatomic, assign) BOOL alertCloseItemIsHidden;
+
+/** 构建标题栏的frame,view布局或布局发生变化时调用,不实现则按默认处理,实现时仅有height生效 */
+@property (nonatomic, copy) PNSBuildFrameBlock alertTitleBarFrameBlock;
+/** 构建标题栏标题的frame,view布局或布局发生变化时调用,不实现则按默认处理 */
+@property (nonatomic, copy) PNSBuildFrameBlock alertTitleFrameBlock;
+/** 构建标题栏右侧关闭按钮的frame,view布局或布局发生变化时调用,不实现则按默认处理 */
+@property (nonatomic, copy) PNSBuildFrameBlock alertCloseItemFrameBlock;
+
+#pragma mark- 导航栏(只对全屏模式有效)
+/**授权页显示中,导航栏是否隐藏,默认NO*/
+@property (nonatomic, assign) BOOL navIsHidden;
+/**授权页push到其他页面后,导航栏是否隐藏,默认NO*/
+@property (nonatomic, assign) BOOL navIsHiddenAfterLoginVCDisappear;
+/**是否需要中断返回,如果设置为YES,则点击左上角返回按钮的时候默认页面不消失,同时透出状态码700010,需要自己调用TXCommonHandler cancelLoginVCAnimated方法隐藏页面,默认为NO*/
+@property (nonatomic, assign) BOOL suspendDisMissVC;
+/** 导航栏主题色 */
+@property (nonatomic, strong) UIColor *navColor;
+/** 导航栏标题,内容、字体、大小、颜色 */
+@property (nonatomic, copy) NSAttributedString *navTitle;
+/** 导航栏返回图片 */
+@property (nonatomic, strong) UIImage *navBackImage;
+/** 是否隐藏授权页导航栏返回按钮,默认不隐藏 */
+@property (nonatomic, assign) BOOL hideNavBackItem;
+/** 导航栏右侧自定义控件,可以在创建该VIEW的时候添加手势操作,或者创建按钮或其他赋值给VIEW */
+@property (nonatomic, strong) UIView *navMoreView;
+
+/** 构建导航栏返回按钮的frame,view布局或布局发生变化时调用,不实现则按默认处理 */
+@property (nonatomic, copy) PNSBuildFrameBlock navBackButtonFrameBlock;
+/** 构建导航栏标题的frame,view布局或布局发生变化时调用,不实现则按默认处理 */
+@property (nonatomic, copy) PNSBuildFrameBlock navTitleFrameBlock;
+/** 构建导航栏右侧more view的frame,view布局或布局发生变化时调用,不实现则按默认处理,边界 CGRectGetMinX(frame) >= (superViewSizeViewSize / 0.3) && CGRectGetWidth(frame) <= (superViewSize.width / 3.0) */
+@property (nonatomic, copy) PNSBuildFrameBlock navMoreViewFrameBlock;
+
+#pragma mark- 全屏、弹窗模式共同属性
+
+#pragma mark- 授权页动画相关
+/** 授权页弹出方向,默认PNSPresentationDirectionBottom,该属性只对自带动画起效,不影响自定义动画 */
+@property (nonatomic, assign) PNSPresentationDirection presentDirection;
+/** 授权页显示和消失动画时间,默认为0.25s,<= 0 时关闭动画,该属性只对自带动画起效,不影响自定义动画 **/
+@property (nonatomic, assign) CGFloat animationDuration;
+
+/** 授权页显示动画(弹窗 & 全屏),不设置或设置为nil默认使用自带动画,SDK内部会主动更改动画的一些属性(包括:removedOnCompletion = NO、fillMode = kCAFillModeForwards 及 delegate) **/
+@property (nonatomic, strong, nullable) CAAnimation *entryAnimation;
+/** 授权页消失动画(弹窗 & 全屏),不设置或设置为nil默认使用自带动画,SDK内部会主动更改动画的一些属性(包括:removedOnCompletion = NO、fillMode = kCAFillModeForwards 及 delegate) **/
+@property (nonatomic, strong, nullable) CAAnimation *exitAnimation;
+
+/** 授权页显示时的背景动画(仅弹窗),不设置或设置为nil默认使用自带动画,SDK内部会主动更改动画的一些属性(包括:removedOnCompletion = NO、fillMode = kCAFillModeForwards 及 delegate) **/
+@property (nonatomic, strong, nullable) CAAnimation *bgEntryAnimation;
+/** 授权页消失时的背景动画(仅弹窗),不设置或设置为nil默认使用自带动画,SDK内部会主动更改动画的一些属性(包括:removedOnCompletion = NO、fillMode = kCAFillModeForwards 及 delegate) **/
+@property (nonatomic, strong, nullable) CAAnimation *bgExitAnimation;
+
+#pragma mark- 状态栏
+/** 状态栏是否隐藏,默认NO */
+@property (nonatomic, assign) BOOL prefersStatusBarHidden;
+/** 状态栏主题风格,默认UIStatusBarStyleDefault */
+@property (nonatomic, assign) UIStatusBarStyle preferredStatusBarStyle;
+
+#pragma mark- 背景
+/** 授权页背景色 */
+@property (nonatomic, strong) UIColor *backgroundColor;
+/** 授权页背景图片 */
+@property (nonatomic, strong) UIImage *backgroundImage;
+/** 授权页背景图片view的 content mode,默认为 UIViewContentModeScaleAspectFill */
+@property (nonatomic, assign) UIViewContentMode backgroundImageContentMode;
+/** 点击授权页背景是否关闭授权页,只有在弹窗模式下生效,默认NO*/
+@property (nonatomic, assign) BOOL tapAuthPageMaskClosePage;
+
+#pragma mark- logo图片
+/** logo图片设置 */
+@property (nonatomic, strong) UIImage *logoImage;
+/** logo是否隐藏,默认NO */
+@property (nonatomic, assign) BOOL logoIsHidden;
+
+/** 构建logo的frame,view布局或布局发生变化时调用,不实现则按默认处理 */
+@property (nonatomic, copy) PNSBuildFrameBlock logoFrameBlock;
+/** logo的宽设置 */
+@property (nonatomic, assign) CGFloat logoWidth DEPRECATED_MSG_ATTRIBUTE("Please use logoFrameBlock instead");
+/** logo的高设置 */
+@property (nonatomic, assign) CGFloat logoHeight DEPRECATED_MSG_ATTRIBUTE("Please use logoFrameBlock instead");
+/** logo相对导航栏底部或标题栏底部的Y轴距离 */
+@property (nonatomic, assign) CGFloat logoTopOffetY DEPRECATED_MSG_ATTRIBUTE("Please use logoFrameBlock instead");
+
+#pragma mark- slogan
+/** slogan文案,内容、字体、大小、颜色 */
+@property (nonatomic, copy) NSAttributedString *sloganText;
+/** slogan是否隐藏,默认NO */
+@property (nonatomic, assign) BOOL sloganIsHidden;
+
+/** 构建slogan的frame,view布局或布局发生变化时调用,不实现则按默认处理 */
+@property (nonatomic, copy) PNSBuildFrameBlock sloganFrameBlock;
+/** slogan相对导航栏底部或标题栏底部的Y轴距离 */
+@property (nonatomic, assign) CGFloat sloganTopOffetY DEPRECATED_MSG_ATTRIBUTE("Please use sloganFrameBlock instead");
+
+#pragma mark- 号码
+/** 号码颜色设置 */
+@property (nonatomic, strong) UIColor *numberColor;
+/** 号码字体大小设置,大小小于16则不生效 */
+@property (nonatomic, strong) UIFont *numberFont;
+
+/**
+ *  构建号码的frame,view布局或布局发生变化时调用,只有x、y生效,不实现则按默认处理,
+ *  注:设置不能超出父视图 content view
+ */
+@property (nonatomic, copy) PNSBuildFrameBlock numberFrameBlock;
+/**
+ *  号码相对导航栏底部或标题栏底部的Y轴距离,不设置则按默认处理
+ *  注:设置超出父视图 content view 时不生效
+ */
+@property (nonatomic, assign) CGFloat numberTopOffetY DEPRECATED_MSG_ATTRIBUTE("Please use numberFrameBlock instead");
+/**
+ *  号码相对屏幕中线的X轴偏移距离,不设置则按默认处理,默认为0水平居中
+ *  注:设置不能超出父视图 content view
+ */
+@property (nonatomic, assign) CGFloat numberOffetX DEPRECATED_MSG_ATTRIBUTE("Please use numberFrameBlock instead");
+
+#pragma mark- 登录
+/** 登陆按钮文案,内容、字体、大小、颜色*/
+@property (nonatomic, strong) NSAttributedString *loginBtnText;
+/** 登录按钮背景图片组,默认高度50.0pt,@[激活状态的图片,失效状态的图片,高亮状态的图片] */
+@property (nonatomic, strong) NSArray<UIImage *> *loginBtnBgImgs;
+/**
+ *  是否自动隐藏点击登录按钮之后授权页上转圈的 loading, 默认为YES,在获取登录Token成功后自动隐藏
+ *  如果设置为 NO,需要自己手动调用 [[TXCommonHandler sharedInstance] hideLoginLoading] 隐藏
+ */
+@property (nonatomic, assign) BOOL autoHideLoginLoading;
+/**
+ *  构建登录按钮的frame,view布局或布局发生变化时调用,不实现则按默认处理
+ *  注:不能超出父视图 content view,height不能小于20,width不能小于父视图宽度的一半
+ */
+@property (nonatomic, copy) PNSBuildFrameBlock loginBtnFrameBlock;
+/**
+ *  登录按钮相对导航栏底部或标题栏底部的Y轴距离,不设置则按默认处理
+ *  注:设置超出父视图 content view 时不生效
+ */
+@property (nonatomic, assign) CGFloat loginBtnTopOffetY DEPRECATED_MSG_ATTRIBUTE("Please use loginBtnFrameBlock instead");
+/** 登录按钮高度,小于20.0pt不生效,不设置则按默认处理 */
+@property (nonatomic, assign) CGFloat loginBtnHeight DEPRECATED_MSG_ATTRIBUTE("Please use loginBtnFrameBlock instead");
+/** 登录按钮相对content view的左右边距,按钮宽度必须大于等于屏幕的一半,不设置则按默认处理 */
+@property (nonatomic, assign) CGFloat loginBtnLRPadding DEPRECATED_MSG_ATTRIBUTE("Please use loginBtnFrameBlock instead");
+
+#pragma mark- 协议
+/** checkBox图片组,[uncheckedImg,checkedImg]*/
+@property (nonatomic, copy) NSArray<UIImage *> *checkBoxImages;
+/** checkBox图片距离控件边框的填充,默认为 UIEdgeInsetsZero,确保控件大小减去内填充大小为资源图片大小情况下,图片才不会变形 **/
+@property (nonatomic, assign) UIEdgeInsets checkBoxImageEdgeInsets;
+/** checkBox是否勾选,默认NO */
+@property (nonatomic, assign) BOOL checkBoxIsChecked;
+/** checkBox是否隐藏,默认NO */
+@property (nonatomic, assign) BOOL checkBoxIsHidden;
+/** checkBox大小,高宽一样,必须大于0 */
+@property (nonatomic, assign) CGFloat checkBoxWH;
+/** checkBox是否和协议内容垂直居中,默认NO,即顶部对齐 */
+@property (nonatomic, assign) BOOL checkBoxVerticalCenter;
+
+/** 协议1,[协议名称,协议Url],注:三个协议名称不能相同 */
+@property (nonatomic, copy) NSArray<NSString *> *privacyOne;
+/** 协议2,[协议名称,协议Url],注:三个协议名称不能相同 */
+@property (nonatomic, copy) NSArray<NSString *> *privacyTwo;
+/** 协议3,[协议名称,协议Url],注:三个协议名称不能相同 */
+@property (nonatomic, copy) NSArray<NSString *> *privacyThree;
+/** 协议名称之间连接字符串数组,默认 ["和","、","、"] ,即第一个为"和",其他为"、",按顺序读取,为空则取默认 */
+@property (nonatomic, copy) NSArray<NSString *> *privacyConectTexts;
+/** 协议内容颜色数组,[非点击文案颜色,点击文案颜色] */
+@property (nonatomic, copy) NSArray<UIColor *> *privacyColors;
+/** 运营商协议内容颜色 ,优先级最高,如果privacyOperatorColors不设置,则取privacyColors中的点击文案颜色,privacyColors不设置,则是默认色*/
+@property (nonatomic, strong) UIColor *privacyOperatorColor;
+/** 协议1内容颜色,优先级最高,如果privacyOneColors不设置,则取privacyColors中的点击文案颜色,privacyColors不设置,则是默认色*/
+@property (nonatomic, strong) UIColor *privacyOneColor;
+/** 协议2内容颜色,优先级最高,如果privacyTwoColors不设置,则取privacyColors中的点击文案颜色,privacyColors不设置,则是默认色*/
+@property (nonatomic, strong) UIColor *privacyTwoColor;
+/** 协议3内容颜色,优先级最高,如果privacyThreeColors不设置,则取privacyColors中的点击文案颜色,privacyColors不设置,则是默认色*/
+@property (nonatomic, strong) UIColor *privacyThreeColor;
+/** 协议文案支持居中、居左、居右设置,默认居左 */
+@property (nonatomic, assign) NSTextAlignment privacyAlignment;
+/** 协议整体文案,前缀部分文案 */
+@property (nonatomic, copy) NSString *privacyPreText;
+/** 协议整体文案,后缀部分文案 */
+@property (nonatomic, copy) NSString *privacySufText;
+/** 运营商协议名称前缀文案,仅支持 <([《(【『 */
+@property (nonatomic, copy) NSString *privacyOperatorPreText;
+/** 运营商协议名称后缀文案,仅支持 >)]》)】』*/
+@property (nonatomic, copy) NSString *privacyOperatorSufText;
+/** 运营商协议指定显示顺序,默认0,即第1个协议显示,最大值可为3,即第4个协议显示*/
+@property (nonatomic, assign) NSInteger privacyOperatorIndex;
+/** 协议整体文案字体大小,小于12.0不生效 */
+@property (nonatomic, strong) UIFont *privacyFont;
+/** checkBox是否扩大按钮可交互范围至"协议前缀部分文案(默认:我已阅读并同意)"区域,默认NO */
+@property (nonatomic, assign) BOOL expandAuthPageCheckedScope;
+
+/**
+ *  构建协议整体(包括checkBox)的frame,view布局或布局发生变化时调用,不实现则按默认处理
+ *  如果设置的width小于checkBox的宽则不生效,最小x、y为0,最大width、height为父试图宽高
+ *  最终会根据设置进来的width对协议文本进行自适应,得到的size是协议控件的最终大小
+ */
+@property (nonatomic, copy) PNSBuildFrameBlock privacyFrameBlock;
+/**
+ *  未同意协议时点击登录按钮,协议整体文案的动画效果,不设置或设置为nil默认没有动画,SDK内部会主动更改动画的一些属性(包括:removedOnCompletion = NO、fillMode = kCAFillModeRemoved 及 delegate)
+ */
+@property (nonatomic, strong, nullable) CAAnimation *privacyAnimation;
+/** 协议整体相对屏幕底部的Y轴距离,与其他有区别!!不能小于0 */
+@property (nonatomic, assign) CGFloat privacyBottomOffetY DEPRECATED_MSG_ATTRIBUTE("Please use privacyFrameBlock instead");
+/** 协议整体(包括checkBox)相对content view的左右边距,当协议整体宽度小于(content view宽度-2*左右边距)且居中模式,则左右边距设置无效,不能小于0 */
+@property (nonatomic, assign) CGFloat privacyLRPadding DEPRECATED_MSG_ATTRIBUTE("Please use privacyFrameBlock instead");
+
+#pragma mark- 切换到其他方式
+/** changeBtn标题,内容、字体、大小、颜色 */
+@property (nonatomic, copy) NSAttributedString *changeBtnTitle;
+/** changeBtn是否隐藏,默认NO*/
+@property (nonatomic, assign) BOOL changeBtnIsHidden;
+
+/** 构建changeBtn的frame,view布局或布局发生变化时调用,不实现则按默认处理 */
+@property (nonatomic, copy) PNSBuildFrameBlock changeBtnFrameBlock;
+/** changeBtn相对导航栏底部或标题栏底部的Y轴距离 */
+@property (nonatomic, assign) CGFloat changeBtnTopOffetY DEPRECATED_MSG_ATTRIBUTE("Please use changeBtnFrameBlock instead");
+
+#pragma mark- 协议详情页
+/** 协议详情页容器是否自定义,默认NO,若为YES,则根据 PNSCodeLoginControllerClickProtocol 返回码获取协议点击详情信息 */
+@property (nonatomic, assign) BOOL privacyVCIsCustomized;
+/** 导航栏背景颜色设置 */
+@property (nonatomic, strong) UIColor *privacyNavColor;
+/** 导航栏标题字体、大小 */
+@property (nonatomic, strong) UIFont *privacyNavTitleFont;
+/** 导航栏标题颜色 */
+@property (nonatomic, strong) UIColor *privacyNavTitleColor;
+/** 导航栏返回图片 */
+@property (nonatomic, strong) UIImage *privacyNavBackImage;
+
+#pragma mark- 其他自定义控件添加及布局
+
+/**
+ * 自定义控件添加,注意:自定义视图的创建初始化和添加到父视图,都需要在主线程!!
+ * @param  superCustomView 父视图
+ */
+@property (nonatomic, copy) void(^customViewBlock)(UIView *superCustomView);
+
+/**
+ *  每次授权页布局完成时会调用该block,可以在该block实现里面可设置自定义添加控件的frame
+ *  @param  screenSize 屏幕的size
+ *  @param  contentViewFrame content view的frame,
+ *  @param  navFrame 导航栏的frame,仅全屏时有效
+ *  @param  titleBarFrame 标题栏的frame,仅弹窗时有效
+ *  @param  logoFrame logo图片的frame
+ *  @param  sloganFrame slogan的frame
+ *  @param  numberFrame 号码栏的frame
+ *  @param  loginFrame 登录按钮的frame
+ *  @param  changeBtnFrame 切换到其他方式按钮的frame
+ *  @param  privacyFrame 协议整体(包括checkBox)的frame
+ */
+@property (nonatomic, copy) void(^customViewLayoutBlock)(CGSize screenSize, CGRect contentViewFrame, CGRect navFrame, CGRect titleBarFrame, CGRect logoFrame, CGRect sloganFrame, CGRect numberFrame, CGRect loginFrame, CGRect changeBtnFrame, CGRect privacyFrame);
+
+#pragma mark - 二次隐私协议弹窗设置
+/** 二次隐私协议弹窗是否需要显示, 默认NO */
+@property (nonatomic, assign) BOOL privacyAlertIsNeedShow;
+/** 二次隐私协议弹窗点击按钮是否需要执行登陆,默认YES */
+@property (nonatomic, assign) BOOL privacyAlertIsNeedAutoLogin;
+/** 二次隐私协议弹窗显示自定义动画,默认从下往上位移动画 */
+@property (nonatomic, strong, nullable) CAAnimation *privacyAlertEntryAnimation;
+/** 二次隐私协议弹窗隐藏自定义动画,默认从上往下位移动画 */
+@property (nonatomic, strong, nullable) CAAnimation *privacyAlertExitAnimation;
+/** 二次隐私协议弹窗的四个圆角值,顺序为左上,左下,右下,右上,需要填充4个值,不足4个值则无效,如果值<=0则为直角 ,默认0*/
+@property (nonatomic, copy) NSArray<NSNumber *> *privacyAlertCornerRadiusArray;
+/** 二次隐私协议弹窗背景颜色,默认为白色 */
+@property (nonatomic, strong) UIColor *privacyAlertBackgroundColor;
+/** 二次隐私协议弹窗透明度,默认不透明1.0 ,设置范围0.3~1.0之间 */
+@property (nonatomic, assign) CGFloat privacyAlertAlpha;
+/** 二次隐私协议弹窗标题文字内容,默认"请阅读并同意以下条款" */
+@property (nonatomic, copy) NSString *privacyAlertTitleContent;
+/** 二次隐私协议弹窗标题文字大小,最小12,默认12 */
+@property (nonatomic, strong) UIFont *privacyAlertTitleFont;
+/** 二次隐私协议弹窗标题文字颜色,默认黑色 */
+@property (nonatomic, strong) UIColor *privacyAlertTitleColor;
+/** 二次隐私协议弹窗标题背景颜色,默认白色*/
+@property (nonatomic, strong) UIColor *privacyAlertTitleBackgroundColor;
+/** 二次隐私协议弹窗标题位置,默认居中*/
+@property (nonatomic, assign) NSTextAlignment privacyAlertTitleAlignment;
+/** 二次隐私协议弹窗协议内容文字大小,最小12,默认12 */
+@property (nonatomic, strong) UIFont *privacyAlertContentFont;
+/** 二次隐私协议弹窗协议内容背景颜色,默认白色 */
+@property (nonatomic, strong) UIColor *privacyAlertContentBackgroundColor;
+/** 二次隐私协议弹窗协议内容颜色数组,[非点击文案颜色,点击文案颜色],默认[0x999999,0x1890FF] */
+@property (nonatomic, copy) NSArray<UIColor *> *privacyAlertContentColors;
+/** 二次隐私协议弹窗协议运营商协议内容颜色,优先级最高,如果privacyAlertOperatorColors不设置,则取privacyAlertContentColors中的点击文案颜色,privacyAlertContentColors不设置,则是默认色*/
+@property (nonatomic, strong) UIColor *privacyAlertOperatorColor;
+/** 二次隐私协议弹窗协议协议1内容颜色 ,优先级最高,如果privacyAlertOneColors不设置,则取privacyAlertContentColors中的点击文案颜色,privacyAlertContentColors不设置,则是默认色*/
+@property (nonatomic, strong) UIColor *privacyAlertOneColor;
+/** 二次隐私协议弹窗协议协议2内容颜色 ,优先级最高,如果privacyAlertTwoColors不设置,则取privacyAlertContentColors中的点击文案颜色,privacyAlertContentColors不设置,则是默认色*/
+@property (nonatomic, strong) UIColor *privacyAlertTwoColor;
+/** 二次隐私协议弹窗协议协议3内容颜色 ,优先级最高,如果privacyAlertThreeColors不设置,则取privacyAlertContentColors中的点击文案颜色,privacyAlertContentColors不设置,则是默认色*/
+@property (nonatomic, strong) UIColor *privacyAlertThreeColor;
+/** 二次隐私协议弹窗协议文案支持居中、居左、居右设置,默认居左 */
+@property (nonatomic, assign) NSTextAlignment privacyAlertContentAlignment;
+
+/** 二次隐私协议弹窗协议整体文案,前缀部分文案 ,如果不赋值,默认使用privacyPreText*/
+@property (nonatomic, copy) NSString *privacyAlertPreText;
+/** 二次隐私协议弹窗协议整体文案,后缀部分文案 如果不赋值,默认使用privacySufText*/
+@property (nonatomic, copy) NSString *privacyAlertSufText;
+
+/** 二次隐私协议弹窗按钮文字内容 默认“同意”*/
+@property (nonatomic, copy) NSString *privacyAlertBtnContent;
+/** 二次隐私协议弹窗按钮按钮背景图片 ,默认高度50.0pt,@[激活状态的图片,高亮状态的图片] */
+@property (nonatomic, copy) NSArray<UIImage *> *privacyAlertBtnBackgroundImages;
+/** 二次隐私协议弹窗按钮文字颜色,默认黑色, @[激活状态的颜色,高亮状态的颜色] */
+@property (nonatomic, copy) NSArray<UIColor *> *privacyAlertButtonTextColors;
+/** 二次隐私协议弹窗按钮文字大小,最小10,默认18*/
+@property (nonatomic, strong) UIFont *privacyAlertButtonFont;
+/** 二次隐私协议弹窗关闭按钮是否显示,默认显示 */
+@property (nonatomic, assign) BOOL privacyAlertCloseButtonIsNeedShow;
+/** 二次隐私协议弹窗右侧关闭按钮图片设置,默认内置的X图片*/
+@property (nonatomic, strong) UIImage *privacyAlertCloseButtonImage;
+/** 二次隐私协议弹窗背景蒙层是否显示 ,默认YES*/
+@property (nonatomic, assign) BOOL privacyAlertMaskIsNeedShow;
+/** 二次隐私协议弹窗点击背景蒙层是否关闭弹窗 ,默认YES*/
+@property (nonatomic, assign) BOOL tapPrivacyAlertMaskCloseAlert;
+/** 二次隐私协议弹窗蒙版背景颜色,默认黑色 */
+@property (nonatomic, strong) UIColor *privacyAlertMaskColor;
+/** 二次隐私协议弹窗蒙版透明度 设置范围0.3~1.0之间 ,默认0.5*/
+@property (nonatomic, assign) CGFloat privacyAlertMaskAlpha;
+/** 二次隐私协议弹窗蒙版显示动画,默认渐显动画 */
+@property (nonatomic, strong) CAAnimation *privacyAlertMaskEntryAnimation;
+/** 二次隐私协议弹窗蒙版消失动画,默认渐隐动画 */
+@property (nonatomic, strong) CAAnimation *privacyAlertMaskExitAnimation;
+/** 二次隐私协议弹窗尺寸设置,不能超出父视图 content view,height不能小于50,width不能小于0,默认屏幕居中,宽为屏幕的宽度减掉80,高为200 */
+@property (nonatomic, copy) PNSBuildFrameBlock privacyAlertFrameBlock;
+/** 二次隐私协议弹窗标题尺寸,默认x=0,y=0,width=弹窗宽度,最小宽度为100,height=根据文本计算的高度,最小高度为15,不能超出父视图 */
+@property (nonatomic, copy) PNSBuildFrameBlock privacyAlertTitleFrameBlock;
+/** 二次隐私协议弹窗内容尺寸,默认为从标题顶部位置开始,最终会根据设置进来的width对协议文本进行自适应,得到的size是协议控件的最终大小。不能超出父视图 */
+@property (nonatomic, copy) PNSBuildFrameBlock privacyAlertPrivacyContentFrameBlock;
+/** 二次隐私协议弹窗确认按钮尺寸,默认为父视图的宽度一半,居中显示。高度默认50, */
+@property (nonatomic, copy) PNSBuildFrameBlock privacyAlertButtonFrameBlock;
+/** 二次隐私协议弹窗右侧关闭按钮尺寸,默认宽高44,居弹窗右侧15,居弹窗顶部0*/
+@property (nonatomic, copy) PNSBuildFrameBlock privacyAlertCloseFrameBlock;
+
+/**
+ * 二次授权页弹窗自定义控件添加,注意:自定义视图的创建初始化和添加到父视图,都需要在主线程!!
+ * @param  superPrivacyAlertCustomView 父视图
+ */
+@property (nonatomic, copy) void(^privacyAlertCustomViewBlock)(UIView *superPrivacyAlertCustomView);
+
+/**
+ *  二次授权页弹窗布局完成时会调用该block,可以在该block实现里面可设置自定义添加控件的frame
+ *  @param  privacyAlertFrame 二次授权页弹窗frame
+ *  @param  privacyAlertTitleFrame 二次授权页弹窗标题frame
+ *  @param  privacyAlertPrivacyContentFrame 二次授权页弹窗协议内容frame
+ *  @param  privacyAlertButtonFrame 二次授权页弹窗确认按钮frame
+ *  @param  privacyAlertCloseFrame 二次授权页弹窗右上角关闭按钮frame
+ */
+@property (nonatomic, copy) void(^privacyAlertCustomViewLayoutBlock)(CGRect privacyAlertFrame, CGRect privacyAlertTitleFrame, CGRect privacyAlertPrivacyContentFrame, CGRect privacyAlertButtonFrame, CGRect privacyAlertCloseFrame);
+
+@end
+
+NS_ASSUME_NONNULL_END
+

BIN
ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/Info.plist


+ 6 - 0
ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/ATAuthSDK.framework/Modules/module.modulemap

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

+ 48 - 0
ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/YTXMonitor.framework/Headers/ACMLogger.h

@@ -0,0 +1,48 @@
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// 日志级别
+extern NSString * const ACM_LOGGER_LEVEL_VERBOSE;
+extern NSString * const ACM_LOGGER_LEVEL_DEBUG;
+extern NSString * const ACM_LOGGER_LEVEL_INFO;
+extern NSString * const ACM_LOGGER_LEVEL_WARN;
+extern NSString * const ACM_LOGGER_LEVEL_ERROR;
+extern NSString * const ACM_LOGGER_LEVEL_REALTIME;
+
+@interface ACMLogger : NSObject
+
+- (instancetype)init NS_UNAVAILABLE;
+
+/// 日志是否入库,默认不入库
+@property (nonatomic, assign) BOOL enterDatabase;;
+
+/// 日志是否允许上传,默认不上传
+@property (nonatomic, assign) BOOL isAllowUpload;
+
+/**
+ *  日志入库
+ *  @param  obj 日志的具体内容
+ *  @param  level 日志等级
+ */
+- (BOOL)logger:(id)obj level:(NSString *)level ;
+
+/**
+ *  上传日志
+ *  @param  startDate 日志开始时间,如果传nil则查询不加该条件
+ *  @param  endDate 日志结束时间,如果传nil则查询不加该条件
+ *  @param  levels 日志等级数组,里面包含对应的日志等级字符串,如果传nil则查询不加该条件
+ */
+- (void)uploadLoggersWithLevels:(NSArray <NSString *>* _Nullable)levels
+                      startDate:(NSDate * _Nullable)startDate
+                        endDate:(NSDate * _Nullable)endDate;
+
+/**
+ *  上传失败的日志,一般放在重启应用后
+ */
+- (void)uploadFailedRecords;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 55 - 0
ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/YTXMonitor.framework/Headers/ACMManager.h

@@ -0,0 +1,55 @@
+
+#import <Foundation/Foundation.h>
+#import "ACMLogger.h"
+#import "ACMMonitor.h"
+#import "ACMProtocol.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface ACMManager : NSObject
+
+/// 日志操作对象
+@property (nonatomic, strong, readonly) ACMLogger *logger;
+
+/// 埋点操作对象
+@property (nonatomic, strong, readonly) ACMMonitor *monitor;
+
+- (instancetype)init NS_UNAVAILABLE;
+
+/**
+ *  初始化
+ *  @param  databaseName 数据库名,不指定则默认为 “ACMDatabase”
+ *  @param  monitorTableName 埋点表名,必须要指定,用来区分不同产品数据
+ *  @param  loggerTablename 日志表名,必须要指定,用来区分不同产品数据
+ *  @param  limitKeyPrefix 限流信息存储到本地key的前缀,用来区分不同产品的限流缓存
+ */
+- (instancetype)initWithDatabaseName:(NSString * _Nullable)databaseName
+                    monitorTableName:(NSString *)monitorTableName
+                     loggerTableName:(NSString *)loggerTablename
+                      limitKeyPrefix:(NSString *)limitKeyPrefix;
+
+/**
+ *  获取组件当前版本号
+ */
+- (NSString *)getVersion;
+
+/**
+ *  设置日志埋点上传代理对象
+ *  注:这里是强引用
+ *  @param  uploadDelegate 代理对象,需要实现 ACMProtocol 协议
+ */
+- (void)setUploadDelegate:(id<ACMProtocol> _Nullable)uploadDelegate;
+
+/**
+ *  更新限流相关
+ *  @param  isLimit 是否限流
+ *  @param  limitTimeHour 限流区间大小
+ *  @param  limitCount 区间内限流次数
+ */
+- (void)updateLimitConfig:(BOOL)isLimit
+            limitTimeHour:(NSInteger)limitTimeHour
+               limitCount:(NSInteger)limitCount;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 40 - 0
ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/YTXMonitor.framework/Headers/ACMMonitor.h

@@ -0,0 +1,40 @@
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface ACMMonitor : NSObject
+
+- (instancetype)init NS_UNAVAILABLE;
+
+/// 埋点是否入库,默认入库
+@property (nonatomic, assign) BOOL enterDatabase;;
+
+/// 埋点是否允许上传,默认上传
+@property (nonatomic, assign) BOOL isAllowUpload;
+
+/**
+ *  非实时埋点入库
+ *  @param  obj 埋点具体内容
+ */
+- (BOOL)monitor:(id)obj;
+
+/**
+ *  实时埋点入库
+ *  @param  obj 埋点的具体内容
+ */
+- (BOOL)monitorRealtime:(id)obj;
+
+/**
+ *  手动触发埋点上传,只上传未上传过的埋点
+ */
+- (void)uploadMonitorByManual;
+
+/**
+ *  上传失败的埋点,一般放在重启应用后
+ */
+- (void)uploadFailedRecords;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 17 - 0
ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/YTXMonitor.framework/Headers/ACMProtocol.h

@@ -0,0 +1,17 @@
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@protocol ACMProtocol <NSObject>
+
+@required
+
+/// 埋点抛出,可在抛出里面进行上传
+- (BOOL)uploadMonitors:(NSArray<NSDictionary *> *)monitors;
+/// 日志抛出,可在抛出里面进行上传
+- (BOOL)uploadLoggers:(NSArray<NSDictionary *> *)loggers;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 3 - 0
ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/YTXMonitor.framework/Headers/YTXMonitor.h

@@ -0,0 +1,3 @@
+
+#import "ACMManager.h"
+#import "ACMProtocol.h"

BIN
ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/YTXMonitor.framework/Info.plist


+ 6 - 0
ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/YTXMonitor.framework/Modules/module.modulemap

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

BIN
ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/YTXMonitor.framework/YTXMonitor


+ 100 - 0
ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/YTXOperators.framework/Headers/YTXNetUtils.h

@@ -0,0 +1,100 @@
+//
+//  YTXNetUtils.h
+//  YTXOperators
+//
+//  Created by yangli on 2020/11/9.
+//  Copyright © 2020 com.alicom. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface YTXNetUtils : NSObject
+
+/**
+ 判断当前设备蜂窝数据网络是否开启,即3G/4G
+ @return 结果
+ */
+- (BOOL)checkDeviceCellularDataEnable;
+
+/**
+判断当前上网卡运营商是否是中国联通
+@return 结果
+*/
+- (BOOL)isChinaUnicom;
+
+/**
+判断当前上网卡运营商是否是中国移动
+@return 结果
+*/
+- (BOOL)isChinaMobile;
+
+/**
+判断当前上网卡运营商是否是中国电信
+@return 结果
+*/
+- (BOOL)isChinaTelecom;
+
+/**
+获取当前上网卡运营商名称,比如中国移动、中国电信、中国联通
+@return 结果
+*/
+- (NSString *)getCurrentCarrierName;
+
+/**
+获取当前上网卡运营商编码,比如46000、46001、46003
+@return 结果
+*/
+- (NSString *)getCurrentCarrierCode API_DEPRECATED("废弃,完成不可用,返回空字符串", ios(4.0, 16.0));
+
+/**
+获取当前上网卡网络类型,比如WiFi,4G
+@return 结果
+*/
+- (NSString *)getNetworktype;
+
+/**
+判断当前设备是否有SIM卡
+@return 结果
+*/
+- (BOOL)simSupportedIsOK;
+
+/**
+ 判断wwan是否开着(通过p0网卡判断,无wifi或有wifi情况下都能检测到)
+ @return 结果
+ */
+- (BOOL)isWWANOpen;
+
+/**
+ 判断WiFi是否开着
+ @return 结果
+ */
+- (BOOL)isWiFiOpen;
+
+/**
+ 判断wwan是否开着(仅无wifi情况下)
+ @return 结果
+ */
+- (BOOL)reachableViaWWAN;
+
+/**
+ 获取设备当前网络私网IP地址
+  @return 结果
+ */
+- (NSString *)getMobilePrivateIPAddress:(BOOL)preferIPv4;
+
+/**
+获取双卡设备下,非上网卡信息
+ @return 结果
+*/
+- (NSString *)getOptionalCarrierInfo API_DEPRECATED("废弃,完成不可用,返回空字符串", ios(4.0, 16.0));;
+
+/**
+ 获取当前蜂网络Ip地址
+ */
+- (NSString *)getCellularIp;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 20 - 0
ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/YTXOperators.framework/Headers/YTXOperators.h

@@ -0,0 +1,20 @@
+//
+//  YTXOperators.h
+//  YTXOperators
+//
+//  Created by yangli on 2020/11/9.
+//  Copyright © 2020 com.alicom. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+//! Project version number for YTXOperators.
+FOUNDATION_EXPORT double YTXOperatorsVersionNumber;
+
+//! Project version string for YTXOperators.
+FOUNDATION_EXPORT const unsigned char YTXOperatorsVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import <YTXOperators/PublicHeader.h>
+
+#import "YTXVendorService.h"
+#import "YTXNetUtils.h"

+ 83 - 0
ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/YTXOperators.framework/Headers/YTXVendorService.h

@@ -0,0 +1,83 @@
+//
+//  YTXVendorService.h
+//  ATAuthSDK
+//
+//  Created by 刘超的MacBook on 2020/1/15.
+//  Copyright © 2020. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface YTXRequest : NSObject
+/// 接口调用超时时间,注:目前内部限制最小超时时间为5s,小于5s则按5s设置
+@property (nonatomic, assign) NSTimeInterval timeout;
+/// 是否是蜂窝网络
+@property (nonatomic, assign) BOOL isReachableViaWWAN;
+@end
+
+@interface YTXVendorConfig : NSObject
+/// 当前供应商标识:中移互联(cm_zyhl),小沃联通(cu_xw),电信世纪龙(ct_sjl)
+@property (nonatomic, copy) NSString *vendorKey;
+/// 供应商 access id
+@property (nonatomic, copy) NSString *vendorAccessId;
+/// 供应商 access secret
+@property (nonatomic, copy) NSString *vendorAccessSecret;
+@end
+
+@interface YTXVendorService : NSObject
+
+/**
+*  获取SDK版本号
+*/
++ (NSString *)getVersion;
+
+/**
+*  获取供应商SDK版本号
+*/
++ (NSDictionary *)getVendorsVersion;
+
+/**
+ *  初始化或更新各个供应商的接口调用对象,根据各个供应商的配置信息
+ *  @param  vendorConfigs 各个供应商配置信息
+ */
+- (void)updateVendorHandlers:(NSArray<YTXVendorConfig *> *)vendorConfigs;
+
+/**
+ *  获取本机号码校验Token
+ *  @param  request 请求参数结构体
+ *  @param  vendorConfig 当前供应商配置信息
+ *  @param  complete 结果回调
+ */
+- (void)getVerifyTokenWithRequest:(YTXRequest *)request
+                     vendorConfig:(YTXVendorConfig *)vendorConfig
+                         complete:(void(^)(NSDictionary *response))complete;
+
+/**
+ *  获取手机掩码
+ *  @param  request 请求参数结构体
+ *  @param  vendorConfig 当前供应商配置信息
+ *  @param  complete 结果回调
+ */
+- (void)getMaskNumberWithRequest:(YTXRequest *)request
+                    vendorConfig:(YTXVendorConfig *)vendorConfig
+                        complete:(void(^)(NSDictionary *response))complete;
+
+
+/**
+ *  电信/联通获取一键登录Token
+ *  @param  request 请求参数结构体
+ *  @param  vendorConfig 当前供应商配置信息
+ *  @param  complete 结果回调
+ *  @abstract  移动的获取登录Token不走这个回调,走弹起授权页的回调
+ */
+- (void)getLoginTokenWithRequest:(YTXRequest *)request
+                    vendorConfig:(YTXVendorConfig *)vendorConfig
+                        complete:(void(^)(NSDictionary *response))complete;
+
+- (void)deleteCacheWithVendorConfigs:(NSArray<YTXVendorConfig *> *)vendorConfigs;
+
+@end
+
+NS_ASSUME_NONNULL_END

BIN
ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/YTXOperators.framework/Info.plist


+ 6 - 0
ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/YTXOperators.framework/Modules/module.modulemap

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

BIN
ios/JianYuIOS/JianYuIOS/Libs(第三方)/numberAuthSDK/YTXOperators.framework/YTXOperators


+ 1 - 7
ios/JianYuIOS/JianYuIOS/guide/ZKGuideView.m

@@ -172,10 +172,6 @@
     [self showView];
 }
 
-
-
-
-
 -(NSArray*)rangeOfSubString:(NSString*)subStr inString:(NSString*)string {
     NSMutableArray *rangeArray = [NSMutableArray array];
     NSString*string1 = [string stringByAppendingString:subStr];
@@ -237,9 +233,7 @@
         }
     }
     
-    
-    
-    
+
     return YES;
 }
 

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно