Переглянути джерело

登录页面,三方授权功能完成

wangmeng 2 роки тому
батько
коміт
2eb3e15b8f
47 змінених файлів з 1107 додано та 20 видалено
  1. 87 1
      Asteria.xcodeproj/project.pbxproj
  2. 1 1
      Asteria/AppDelegate.m
  3. 6 0
      Asteria/Assets/common.xcassets/Contents.json
  4. 23 0
      Asteria/Assets/common.xcassets/common_close.imageset/Contents.json
  5. BIN
      Asteria/Assets/common.xcassets/common_close.imageset/关闭.png
  6. BIN
      Asteria/Assets/common.xcassets/common_close.imageset/关闭@2x.png
  7. BIN
      Asteria/Assets/common.xcassets/common_close.imageset/关闭@3x.png
  8. 23 0
      Asteria/Assets/common.xcassets/common_headLogo.imageset/Contents.json
  9. BIN
      Asteria/Assets/common.xcassets/common_headLogo.imageset/组 2.png
  10. BIN
      Asteria/Assets/common.xcassets/common_headLogo.imageset/组 2@2x.png
  11. BIN
      Asteria/Assets/common.xcassets/common_headLogo.imageset/组 2@3x.png
  12. 10 0
      Asteria/Asteria.entitlements
  13. 16 0
      Asteria/Config/ProjectConfig.h
  14. 26 2
      Asteria/Fuction/AMoule/AViewController.m
  15. 0 8
      Asteria/Fuction/Goods/Size/As_GoodsSizeC.m
  16. 0 4
      Asteria/Fuction/Goods/V/Banner/WKM_goodsBanner.m
  17. 5 0
      Asteria/Fuction/Goods/V/GoodsDetailSrcView.m
  18. 17 0
      Asteria/Fuction/Login/AS_LoginC.h
  19. 167 0
      Asteria/Fuction/Login/AS_LoginC.m
  20. 6 0
      Asteria/Fuction/Login/Assets/Login.xcassets/Contents.json
  21. 23 0
      Asteria/Fuction/Login/Assets/Login.xcassets/login_Apple.imageset/Contents.json
  22. BIN
      Asteria/Fuction/Login/Assets/Login.xcassets/login_Apple.imageset/组 10983.png
  23. BIN
      Asteria/Fuction/Login/Assets/Login.xcassets/login_Apple.imageset/组 10983@2x.png
  24. BIN
      Asteria/Fuction/Login/Assets/Login.xcassets/login_Apple.imageset/组 10983@3x.png
  25. 23 0
      Asteria/Fuction/Login/Assets/Login.xcassets/login_Facebook.imageset/Contents.json
  26. BIN
      Asteria/Fuction/Login/Assets/Login.xcassets/login_Facebook.imageset/组 10982.png
  27. BIN
      Asteria/Fuction/Login/Assets/Login.xcassets/login_Facebook.imageset/组 10982@2x.png
  28. BIN
      Asteria/Fuction/Login/Assets/Login.xcassets/login_Facebook.imageset/组 10982@3x.png
  29. 23 0
      Asteria/Fuction/Login/Assets/Login.xcassets/login_Google.imageset/Contents.json
  30. BIN
      Asteria/Fuction/Login/Assets/Login.xcassets/login_Google.imageset/组 10984.png
  31. BIN
      Asteria/Fuction/Login/Assets/Login.xcassets/login_Google.imageset/组 10984@2x.png
  32. BIN
      Asteria/Fuction/Login/Assets/Login.xcassets/login_Google.imageset/组 10984@3x.png
  33. 23 0
      Asteria/Fuction/Login/Assets/Login.xcassets/login_HI.imageset/Contents.json
  34. BIN
      Asteria/Fuction/Login/Assets/Login.xcassets/login_HI.imageset/HI.png
  35. BIN
      Asteria/Fuction/Login/Assets/Login.xcassets/login_HI.imageset/HI@2x.png
  36. BIN
      Asteria/Fuction/Login/Assets/Login.xcassets/login_HI.imageset/HI@3x.png
  37. 17 0
      Asteria/Fuction/Login/BaseView/EamilTFmatchV.h
  38. 182 0
      Asteria/Fuction/Login/BaseView/EamilTFmatchV.m
  39. 20 0
      Asteria/Fuction/Login/BaseView/PassWordSecureBtnV.h
  40. 99 0
      Asteria/Fuction/Login/BaseView/PassWordSecureBtnV.m
  41. 16 0
      Asteria/Fuction/Login/Target/Target_Login.h
  42. 16 0
      Asteria/Fuction/Login/Target/Target_Login.m
  43. 24 0
      Asteria/Fuction/Login/V/LoginThirdAuthV.h
  44. 239 0
      Asteria/Fuction/Login/V/LoginThirdAuthV.m
  45. 14 0
      Asteria/Info.plist
  46. 0 3
      Asteria/PreFixHeader.h
  47. 1 1
      Podfile

+ 87 - 1
Asteria.xcodeproj/project.pbxproj

@@ -21,9 +21,13 @@
 		81C3B44A29F6661500D79294 /* ASBaseNavController.m in Sources */ = {isa = PBXBuildFile; fileRef = 81C3B44929F6661500D79294 /* ASBaseNavController.m */; };
 		81C3B45529F66C1700D79294 /* UIView+PublicInit.m in Sources */ = {isa = PBXBuildFile; fileRef = 81C3B45429F66C1700D79294 /* UIView+PublicInit.m */; };
 		8C24ECE114420CDEE7B9B22B /* Pods_Asteria.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 54DCE8001991D89B696E7D44 /* Pods_Asteria.framework */; };
+		9A2027F52A137B8600FF4DAF /* AuthenticationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A2027F42A137B8600FF4DAF /* AuthenticationServices.framework */; };
 		9A337E3A2A04EE1A00D058A5 /* Target_B.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A337E362A04EE1A00D058A5 /* Target_B.m */; };
 		9A337E3B2A04EE1A00D058A5 /* BViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A337E392A04EE1A00D058A5 /* BViewController.m */; };
 		9A337E4E2A04F46600D058A5 /* AViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A337E4D2A04F46600D058A5 /* AViewController.m */; };
+		9A5C64582A12064300CBB185 /* AS_LoginC.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A5C64572A12064300CBB185 /* AS_LoginC.m */; };
+		9A5C645B2A1206E500CBB185 /* common.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9A5C645A2A1206E500CBB185 /* common.xcassets */; };
+		9A65DE512A132FB700BB1269 /* LoginThirdAuthV.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A65DE502A132FB700BB1269 /* LoginThirdAuthV.m */; };
 		9A788C442A08A663003E0025 /* Target_Goods.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A788C432A08A663003E0025 /* Target_Goods.m */; };
 		9A7DA6A12A0CE33500136974 /* Asteria.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9A7DA6A02A0CE33500136974 /* Asteria.xcassets */; };
 		9A8DD8C52A0B8F1700573324 /* As_GoodsSizeC.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A8DD8C42A0B8F1700573324 /* As_GoodsSizeC.m */; };
@@ -71,6 +75,10 @@
 		9AD346202A08E30E005CA070 /* SelectVCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AD3461F2A08E30E005CA070 /* SelectVCollectionViewCell.m */; };
 		9AD364C62A05E73E00452C7A /* AS_GoodsDetailsC.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AD364C52A05E73E00452C7A /* AS_GoodsDetailsC.m */; };
 		9AD364D12A05EC7800452C7A /* AS_TabBarViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AD364D02A05EC7800452C7A /* AS_TabBarViewController.m */; };
+		9AD6A53E2A120CC3001DE3D9 /* Login.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9AD6A53D2A120CC3001DE3D9 /* Login.xcassets */; };
+		9AD6A5442A1218E8001DE3D9 /* PassWordSecureBtnV.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AD6A5422A1218E7001DE3D9 /* PassWordSecureBtnV.m */; };
+		9AD6A5452A1218E8001DE3D9 /* EamilTFmatchV.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AD6A5432A1218E7001DE3D9 /* EamilTFmatchV.m */; };
+		9AD6A5492A1237D0001DE3D9 /* Target_Login.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AD6A5482A1237D0001DE3D9 /* Target_Login.m */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXContainerItemProxy section */
@@ -129,12 +137,19 @@
 		81C3B45029F669C900D79294 /* ColorDefine.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ColorDefine.h; sourceTree = "<group>"; };
 		81C3B45329F66C1700D79294 /* UIView+PublicInit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "UIView+PublicInit.h"; sourceTree = "<group>"; };
 		81C3B45429F66C1700D79294 /* UIView+PublicInit.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "UIView+PublicInit.m"; sourceTree = "<group>"; };
+		9A2027F32A137B6A00FF4DAF /* Asteria.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Asteria.entitlements; sourceTree = "<group>"; };
+		9A2027F42A137B8600FF4DAF /* AuthenticationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AuthenticationServices.framework; path = System/Library/Frameworks/AuthenticationServices.framework; sourceTree = SDKROOT; };
 		9A337E362A04EE1A00D058A5 /* Target_B.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Target_B.m; sourceTree = "<group>"; };
 		9A337E372A04EE1A00D058A5 /* Target_B.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Target_B.h; sourceTree = "<group>"; };
 		9A337E382A04EE1A00D058A5 /* BViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BViewController.h; sourceTree = "<group>"; };
 		9A337E392A04EE1A00D058A5 /* BViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BViewController.m; sourceTree = "<group>"; };
 		9A337E4C2A04F46600D058A5 /* AViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AViewController.h; sourceTree = "<group>"; };
 		9A337E4D2A04F46600D058A5 /* AViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AViewController.m; sourceTree = "<group>"; };
+		9A5C64562A12064300CBB185 /* AS_LoginC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AS_LoginC.h; sourceTree = "<group>"; };
+		9A5C64572A12064300CBB185 /* AS_LoginC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AS_LoginC.m; sourceTree = "<group>"; };
+		9A5C645A2A1206E500CBB185 /* common.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = common.xcassets; sourceTree = "<group>"; };
+		9A65DE4F2A132FB700BB1269 /* LoginThirdAuthV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LoginThirdAuthV.h; sourceTree = "<group>"; };
+		9A65DE502A132FB700BB1269 /* LoginThirdAuthV.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LoginThirdAuthV.m; sourceTree = "<group>"; };
 		9A788C422A08A663003E0025 /* Target_Goods.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Target_Goods.h; sourceTree = "<group>"; };
 		9A788C432A08A663003E0025 /* Target_Goods.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Target_Goods.m; sourceTree = "<group>"; };
 		9A7DA6A02A0CE33500136974 /* Asteria.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Asteria.xcassets; sourceTree = "<group>"; };
@@ -231,6 +246,13 @@
 		9AD364C52A05E73E00452C7A /* AS_GoodsDetailsC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AS_GoodsDetailsC.m; sourceTree = "<group>"; };
 		9AD364CF2A05EC7800452C7A /* AS_TabBarViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AS_TabBarViewController.h; sourceTree = "<group>"; };
 		9AD364D02A05EC7800452C7A /* AS_TabBarViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AS_TabBarViewController.m; sourceTree = "<group>"; };
+		9AD6A53D2A120CC3001DE3D9 /* Login.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Login.xcassets; sourceTree = "<group>"; };
+		9AD6A5402A1218E6001DE3D9 /* PassWordSecureBtnV.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PassWordSecureBtnV.h; sourceTree = "<group>"; };
+		9AD6A5412A1218E7001DE3D9 /* EamilTFmatchV.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EamilTFmatchV.h; sourceTree = "<group>"; };
+		9AD6A5422A1218E7001DE3D9 /* PassWordSecureBtnV.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PassWordSecureBtnV.m; sourceTree = "<group>"; };
+		9AD6A5432A1218E7001DE3D9 /* EamilTFmatchV.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EamilTFmatchV.m; sourceTree = "<group>"; };
+		9AD6A5472A1237D0001DE3D9 /* Target_Login.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Target_Login.h; sourceTree = "<group>"; };
+		9AD6A5482A1237D0001DE3D9 /* Target_Login.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Target_Login.m; sourceTree = "<group>"; };
 		F28014612B0095476AA5BC1B /* Pods-Asteria-NotificationServiceExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Asteria-NotificationServiceExtension.debug.xcconfig"; path = "Target Support Files/Pods-Asteria-NotificationServiceExtension/Pods-Asteria-NotificationServiceExtension.debug.xcconfig"; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
@@ -239,6 +261,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				9A2027F52A137B8600FF4DAF /* AuthenticationServices.framework in Frameworks */,
 				8C24ECE114420CDEE7B9B22B /* Pods_Asteria.framework in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
@@ -257,6 +280,7 @@
 		5A5FFF81F369698EFECBFE81 /* Frameworks */ = {
 			isa = PBXGroup;
 			children = (
+				9A2027F42A137B8600FF4DAF /* AuthenticationServices.framework */,
 				54DCE8001991D89B696E7D44 /* Pods_Asteria.framework */,
 				51AF3B78609F55449DF09609 /* Pods_Asteria_NotificationServiceExtension.framework */,
 			);
@@ -286,6 +310,7 @@
 		8172449C29F3B2ED005FA9C9 /* Asteria */ = {
 			isa = PBXGroup;
 			children = (
+				9A2027F32A137B6A00FF4DAF /* Asteria.entitlements */,
 				81C3B44F29F6699900D79294 /* PreFixHeader.h */,
 				9A8DD8CC2A0B9E0C00573324 /* Assets */,
 				9AD364CE2A05EC4500452C7A /* Tabber */,
@@ -389,6 +414,28 @@
 			path = VM;
 			sourceTree = "<group>";
 		};
+		9A5C64522A11E58F00CBB185 /* Login */ = {
+			isa = PBXGroup;
+			children = (
+				9A65DE4E2A132BDF00BB1269 /* V */,
+				9AD6A5462A123799001DE3D9 /* Target */,
+				9AD6A53A2A120C56001DE3D9 /* Assets */,
+				9AD6A53F2A1218D0001DE3D9 /* BaseView */,
+				9A5C64562A12064300CBB185 /* AS_LoginC.h */,
+				9A5C64572A12064300CBB185 /* AS_LoginC.m */,
+			);
+			path = Login;
+			sourceTree = "<group>";
+		};
+		9A65DE4E2A132BDF00BB1269 /* V */ = {
+			isa = PBXGroup;
+			children = (
+				9A65DE4F2A132FB700BB1269 /* LoginThirdAuthV.h */,
+				9A65DE502A132FB700BB1269 /* LoginThirdAuthV.m */,
+			);
+			path = V;
+			sourceTree = "<group>";
+		};
 		9A8DD8C22A0B8EDD00573324 /* Size */ = {
 			isa = PBXGroup;
 			children = (
@@ -402,6 +449,7 @@
 			isa = PBXGroup;
 			children = (
 				9A7DA6A02A0CE33500136974 /* Asteria.xcassets */,
+				9A5C645A2A1206E500CBB185 /* common.xcassets */,
 			);
 			path = Assets;
 			sourceTree = "<group>";
@@ -589,6 +637,7 @@
 		9AD364CC2A05EBE800452C7A /* Fuction */ = {
 			isa = PBXGroup;
 			children = (
+				9A5C64522A11E58F00CBB185 /* Login */,
 				9A337E4F2A04FA0A00D058A5 /* Goods */,
 				9A337E4B2A04F42500D058A5 /* AMoule */,
 				9A337E342A04EE1A00D058A5 /* BViewController */,
@@ -599,8 +648,8 @@
 		9AD364CD2A05EC2700452C7A /* Config */ = {
 			isa = PBXGroup;
 			children = (
-				81C3B45029F669C900D79294 /* ColorDefine.h */,
 				9AD346212A08E828005CA070 /* ProjectConfig.h */,
+				81C3B45029F669C900D79294 /* ColorDefine.h */,
 				8199001E2A0206F7006FE68C /* SizeDefine.h */,
 			);
 			path = Config;
@@ -615,6 +664,34 @@
 			path = Tabber;
 			sourceTree = "<group>";
 		};
+		9AD6A53A2A120C56001DE3D9 /* Assets */ = {
+			isa = PBXGroup;
+			children = (
+				9AD6A53D2A120CC3001DE3D9 /* Login.xcassets */,
+			);
+			path = Assets;
+			sourceTree = "<group>";
+		};
+		9AD6A53F2A1218D0001DE3D9 /* BaseView */ = {
+			isa = PBXGroup;
+			children = (
+				9AD6A5412A1218E7001DE3D9 /* EamilTFmatchV.h */,
+				9AD6A5432A1218E7001DE3D9 /* EamilTFmatchV.m */,
+				9AD6A5402A1218E6001DE3D9 /* PassWordSecureBtnV.h */,
+				9AD6A5422A1218E7001DE3D9 /* PassWordSecureBtnV.m */,
+			);
+			path = BaseView;
+			sourceTree = "<group>";
+		};
+		9AD6A5462A123799001DE3D9 /* Target */ = {
+			isa = PBXGroup;
+			children = (
+				9AD6A5472A1237D0001DE3D9 /* Target_Login.h */,
+				9AD6A5482A1237D0001DE3D9 /* Target_Login.m */,
+			);
+			path = Target;
+			sourceTree = "<group>";
+		};
 		AD6FCC75A25F3F751CF2E2EB /* Pods */ = {
 			isa = PBXGroup;
 			children = (
@@ -712,9 +789,11 @@
 			buildActionMask = 2147483647;
 			files = (
 				817244AD29F3B2EE005FA9C9 /* LaunchScreen.storyboard in Resources */,
+				9AD6A53E2A120CC3001DE3D9 /* Login.xcassets in Resources */,
 				9A7DA6A12A0CE33500136974 /* Asteria.xcassets in Resources */,
 				9AD3460F2A08D60F005CA070 /* ZFPlayer.bundle in Resources */,
 				817244AA29F3B2EE005FA9C9 /* Assets.xcassets in Resources */,
+				9A5C645B2A1206E500CBB185 /* common.xcassets in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -857,6 +936,7 @@
 				9AD3459E2A08D545005CA070 /* GoodsDetailSrcView.m in Sources */,
 				9AD346022A08D60F005CA070 /* ZFPlayerView.m in Sources */,
 				81C3B44429F6612800D79294 /* ASBaseViewController.m in Sources */,
+				9AD6A5442A1218E8001DE3D9 /* PassWordSecureBtnV.m in Sources */,
 				81C3B44A29F6661500D79294 /* ASBaseNavController.m in Sources */,
 				81C3B44729F664A500D79294 /* ASTabBarController.m in Sources */,
 				9AD3460C2A08D60F005CA070 /* ZFVolumeBrightnessView.m in Sources */,
@@ -864,12 +944,15 @@
 				9AD346142A08D60F005CA070 /* ZFSpeedLoadingView.m in Sources */,
 				9AD346062A08D60F005CA070 /* ZFReachabilityManager.m in Sources */,
 				9AD345FE2A08D60F005CA070 /* UIScrollView+ZFPlayer.m in Sources */,
+				9A65DE512A132FB700BB1269 /* LoginThirdAuthV.m in Sources */,
 				9A788C442A08A663003E0025 /* Target_Goods.m in Sources */,
 				9AD3461D2A08D6F0005CA070 /* GoodsInformationM.m in Sources */,
 				9AD345A82A08D571005CA070 /* TYCyclePagerView.m in Sources */,
 				9AD346202A08E30E005CA070 /* SelectVCollectionViewCell.m in Sources */,
 				9AD3460A2A08D60F005CA070 /* ZFUtilities.m in Sources */,
+				9AD6A5492A1237D0001DE3D9 /* Target_Login.m in Sources */,
 				9A337E3A2A04EE1A00D058A5 /* Target_B.m in Sources */,
+				9AD6A5452A1218E8001DE3D9 /* EamilTFmatchV.m in Sources */,
 				9AD345FF2A08D60F005CA070 /* ZFPlayerNotification.m in Sources */,
 				9AD346092A08D60F005CA070 /* ZFAVPlayerManager.m in Sources */,
 				9AD346122A08D60F005CA070 /* ZFSmallFloatControlView.m in Sources */,
@@ -880,6 +963,7 @@
 				9AD364C62A05E73E00452C7A /* AS_GoodsDetailsC.m in Sources */,
 				9AD3460B2A08D60F005CA070 /* UIView+ZFFrame.m in Sources */,
 				81C3B45529F66C1700D79294 /* UIView+PublicInit.m in Sources */,
+				9A5C64582A12064300CBB185 /* AS_LoginC.m in Sources */,
 				9AD345FD2A08D60F005CA070 /* ZFPersentInteractiveTransition.m in Sources */,
 				9AD345FC2A08D60F005CA070 /* ZFPlayerLogManager.m in Sources */,
 				9AD346162A08D60F005CA070 /* UIImageView+ZFCache.m in Sources */,
@@ -1036,6 +1120,7 @@
 				APPLICATION_EXTENSION_API_ONLY = NO;
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+				CODE_SIGN_ENTITLEMENTS = Asteria/Asteria.entitlements;
 				CODE_SIGN_STYLE = Automatic;
 				CURRENT_PROJECT_VERSION = 1;
 				DEVELOPMENT_TEAM = BUGL3DWWB7;
@@ -1066,6 +1151,7 @@
 				APPLICATION_EXTENSION_API_ONLY = NO;
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+				CODE_SIGN_ENTITLEMENTS = Asteria/Asteria.entitlements;
 				CODE_SIGN_STYLE = Automatic;
 				CURRENT_PROJECT_VERSION = 1;
 				DEVELOPMENT_TEAM = BUGL3DWWB7;

+ 1 - 1
Asteria/AppDelegate.m

@@ -37,7 +37,7 @@
     YTKNetworkConfig *config = [YTKNetworkConfig sharedConfig];
     config.securityPolicy.allowInvalidCertificates = YES;
     config.securityPolicy.validatesDomainName = NO;
-    config.baseUrl = [NSString stringWithFormat:@"%@",Formal_Server];
+    config.baseUrl = [NSString stringWithFormat:@"%@",AS_Server];
     NSLog(@"baseUrl-----%@",config.baseUrl)
 }
 

+ 6 - 0
Asteria/Assets/common.xcassets/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 23 - 0
Asteria/Assets/common.xcassets/common_close.imageset/Contents.json

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

BIN
Asteria/Assets/common.xcassets/common_close.imageset/关闭.png


BIN
Asteria/Assets/common.xcassets/common_close.imageset/关闭@2x.png


BIN
Asteria/Assets/common.xcassets/common_close.imageset/关闭@3x.png


+ 23 - 0
Asteria/Assets/common.xcassets/common_headLogo.imageset/Contents.json

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

BIN
Asteria/Assets/common.xcassets/common_headLogo.imageset/组 2.png


BIN
Asteria/Assets/common.xcassets/common_headLogo.imageset/组 2@2x.png


BIN
Asteria/Assets/common.xcassets/common_headLogo.imageset/组 2@3x.png


+ 10 - 0
Asteria/Asteria.entitlements

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>com.apple.developer.applesignin</key>
+	<array>
+		<string>Default</string>
+	</array>
+</dict>
+</plist>

+ 16 - 0
Asteria/Config/ProjectConfig.h

@@ -11,11 +11,27 @@
 ///////正式服务器
 #define WebBase_Server @"https://app.westkiss.com/"
 #define Formal_Server @"https://app.westkiss.com/app-api/"
+
+///AS 服务器
+#define  AS_Server @"http://zyp.hnwmzp.cn/rest/"
+
+
 ///开发服务器
 //#define WebBase_Server @"https://westkissapp.snjon.com/"
 //#define Formal_Server @"https://westkissapp.snjon.com/app-api/"
 
+
+#define RequestSuccess ([responseObject[@"code"] integerValue] == 200 || [responseObject[@"success"] boolValue] == true)
+#define RequestNoLogin [responseObject[@"code"] integerValue] ==-1
+#define RequestErrorMsg responseObject[@"msg"]
+
+#define ReqNetWorkFaild @"Network request failed"
+
+
+#pragma mark - **************** 默认配置 ****************
 #define UIImageDefaultImg_SD    [UIImage imageNamed:@"placeHolder_img"]
+#define ThemeColor [UIColor colorWithHexString:@"#32CFB0"]
+#define ThemeLightColor [UIColor colorWithHexString:@"#E0FFF5"]
 
 
 

+ 26 - 2
Asteria/Fuction/AMoule/AViewController.m

@@ -7,9 +7,11 @@
 //
 
 #import "AViewController.h"
+
 @interface AViewController ()
 
 @property (nonatomic, strong) UIButton *pushBViewControllerButton;
+@property (nonatomic, strong) UIButton *loginBtn;
 
 @end
 
@@ -21,6 +23,7 @@
     [super viewDidLoad];
     self.view.backgroundColor = [UIColor whiteColor];
     [self.view addSubview:self.pushBViewControllerButton];
+    [self.view addSubview:self.loginBtn];
 }
 
 - (void)viewWillLayoutSubviews
@@ -29,7 +32,10 @@
     
     [self.pushBViewControllerButton sizeToFit];
     self.pushBViewControllerButton.frame = CGRectMake(0, 0, 300, 100);
-    self.pushBViewControllerButton.center = self.view.center;}
+    self.pushBViewControllerButton.center = self.view.center;
+    self.loginBtn.frame = CGRectMake(20, CGRectGetMaxY(self.pushBViewControllerButton.frame)+30, 100, 100);
+}
+
 
 #pragma mark - event response
 - (void)didTappedPushBViewControllerButton:(UIButton *)button
@@ -40,7 +46,11 @@
     
     
 }
-
+-(void)buttonTap:(UIButton *)btn{
+    UIViewController *login = [[CTMediator sharedInstance] Login_LoginC:@{}];
+    login.modalPresentationStyle  =  UIModalPresentationFullScreen;
+    [self.navigationController presentViewController:login animated:YES completion:nil];
+}
 #pragma mark - getters and setters
 - (UIButton *)pushBViewControllerButton
 {
@@ -53,4 +63,18 @@
     return _pushBViewControllerButton;
 }
 
+
+
+
+- (UIButton *)loginBtn {
+    if (!_loginBtn) {
+        _loginBtn = [UIButton buttonWithType:UIButtonTypeCustom];
+        [_loginBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
+        _loginBtn.titleLabel.font = [UIFont systemFontOfSize:14];
+        [_loginBtn setTitle:@"ligoin" forState:UIControlStateNormal];
+         [_loginBtn addTarget:self action:@selector(buttonTap:) forControlEvents:UIControlEventTouchUpInside];
+     }
+    return _loginBtn;
+}
+
 @end

+ 0 - 8
Asteria/Fuction/Goods/Size/As_GoodsSizeC.m

@@ -18,14 +18,6 @@
     // Do any additional setup after loading the view.
 }
 
-/*
-#pragma mark - Navigation
 
-// In a storyboard-based application, you will often want to do a little preparation before navigation
-- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
-    // Get the new view controller using [segue destinationViewController].
-    // Pass the selected object to the new view controller.
-}
-*/
 
 @end

+ 0 - 4
Asteria/Fuction/Goods/V/Banner/WKM_goodsBanner.m

@@ -168,10 +168,6 @@ UICollectionViewDelegate>
     
 }
 
-
-
-
-
 -(void)tool_PhotosBroweserImages:(NSMutableArray *)imageurlarr index:(NSInteger)index {
     NSMutableArray *photos = [[NSMutableArray alloc]init];
     for (NSString *imgUrl in imageurlarr) {

+ 5 - 0
Asteria/Fuction/Goods/V/GoodsDetailSrcView.m

@@ -12,6 +12,11 @@
 @property (nonatomic, strong) GoodsInformationM *infoModel;
 
 @property (nonatomic, strong) WKM_goodsBanner *goodsBanner;
+@property (nonatomic, strong) QMUILabel *titleLab;
+@property (nonatomic, strong) QMUILabel *soldLab;
+@property (nonatomic, strong) QMUILabel *reviewsLab;
+@property (nonatomic, strong) QMUILabel *priceLab;
+
 
 @end
 

+ 17 - 0
Asteria/Fuction/Login/AS_LoginC.h

@@ -0,0 +1,17 @@
+//
+//  AS_LoginC.h
+//  Asteria
+//
+//  Created by 王猛 on 2023/5/15.
+//
+
+#import <WMBase/WMBase.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface AS_LoginC : UCMBaseC
+
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 167 - 0
Asteria/Fuction/Login/AS_LoginC.m

@@ -0,0 +1,167 @@
+//
+//  AS_LoginC.m
+//  Asteria
+//
+//  Created by 王猛 on 2023/5/15.
+//
+
+#import "AS_LoginC.h"
+#import "EamilTFmatchV.h"
+#import "PassWordSecureBtnV.h"
+#import "LoginThirdAuthV.h"
+
+#import <AFNetworking/AFNetworking.h>
+
+
+
+@interface AS_LoginC ()
+@property (nonatomic, strong) UIScrollView *scrollview;
+@property (nonatomic, strong) EamilTFmatchV *xxx_emailTFV;
+@property (nonatomic, strong) PassWordSecureBtnV *xxx_passwordV;
+@property (nonatomic, strong) UIButton *xxx_logInBtn;
+@property (nonatomic, strong) LoginThirdAuthV *xxx_authV;
+
+
+
+
+@end
+
+@implementation AS_LoginC
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view.
+    self.customNavBar.hidden = YES;
+    self.navigationController.navigationBar.hidden = YES;
+}
+- (void)initSubviews{
+    [super initSubviews];
+    [self.view addSubview:self.scrollview];
+
+    UIView *logNav = [self logNavView];
+    [self.scrollview addSubview:logNav];
+    UIImageView *Hi_imgV = [[UIImageView alloc]init];
+    UIImage *hiImg = [UIImage imageNamed:@"login_HI"];
+    Hi_imgV.image = hiImg;
+    Hi_imgV.frame = CGRectMake(20, CGRectGetMaxY(logNav.frame)+60, KScreenWidth-40, hiImg.size.height/hiImg.size.width*(KScreenWidth-40));
+    [self.scrollview addSubview:Hi_imgV];
+    
+    [self.scrollview addSubview:self.xxx_emailTFV];
+    [self.scrollview addSubview:self.xxx_passwordV];
+    [self.scrollview bringSubviewToFront:self.xxx_emailTFV];
+    [self.scrollview addSubview:self.xxx_logInBtn];
+    [self.scrollview addSubview:self.xxx_authV];
+    
+    self.xxx_emailTFV.mj_y = CGRectGetMaxY(Hi_imgV.frame)+35;
+    self.xxx_passwordV.frame = CGRectFlatMake(20, CGRectGetMaxY(self.xxx_emailTFV.frame)+30, KScreenWidth-40, 50+20);
+    self.xxx_logInBtn.frame = CGRectMake(20, CGRectGetMaxY(self.xxx_passwordV.frame)+10, KScreenWidth-40, 45);
+    self.xxx_authV.mj_y = CGRectGetMaxY(self.xxx_logInBtn.frame)+30;
+}
+
+-(void)handle_closeEvent:(UIButton *)btn{
+    [self.navigationController dismissViewControllerAnimated:YES completion:nil];
+}
+-(void)handle_xxx_logInBtnEvent:(UIButton *)btn{//进行登录操作
+    ///登录的跳转
+    if (self.xxx_emailTFV.xxx_emailTF.text.length == 0 || ![Current_normalTool xxx_isValidateEmail:self.xxx_emailTFV.xxx_emailTF.text]) {
+        [self.view makeToast:@"* Please prvide an email address." duration:2 position:CSToastPositionCenter];
+        return;
+    }else if(self.xxx_passwordV.xxx_passwordTF.text.length == 0){
+        [self.view makeToast:@"Please input a password" duration:2 position:CSToastPositionCenter];
+        return;
+    }
+    NSString *urlStr = [NSString stringWithFormat:@"%@V1/integration/customer/token",AS_Server];
+    NSMutableDictionary *params = [[NSMutableDictionary alloc]init];
+    params[@"username"] = self.xxx_emailTFV.xxx_emailTF.text;
+    params[@"password"] = self.xxx_passwordV.xxx_passwordTF.text;
+//    NSString *josnStr = [Current_normalTool jsonStringFromDictionary:params];
+//    [PPNetworkHelper POST:urlStr parameters:params success:^(id responseObject) {
+//        NSDictionary *tmpDic= responseObject;
+//
+//    } failure:^(NSError *error) {
+//        [self.view makeToast:@"Network request failed" duration:2 position:CSToastPositionCenter];
+//    }];
+    
+    AFHTTPSessionManager *manager =[AFHTTPSessionManager manager];
+    
+    manager.requestSerializer = [AFJSONRequestSerializer serializer];
+    
+    manager.responseSerializer = [AFHTTPResponseSerializer serializer];
+    
+    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",@"text/json", @"text/plain", @"text/html", nil];
+
+    [manager POST:urlStr parameters:params headers:nil progress:^(NSProgress * _Nonnull uploadProgress) {
+        
+    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
+        NSString * jsonStr = [[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding];
+        NSDictionary *temDic = [Current_normalTool dicFromjsonStr:jsonStr];
+        NSLog(@"%@",temDic);
+    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
+         
+    }];
+ 
+    
+    
+}
+
+#pragma mark - **************** 懒加载 ****************
+-(UIView *)logNavView{
+    IPhoneXHeigh
+    UIView *topView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, securitytop_Y)];
+    UIButton *closeBtn = [UIButton buttonWithType:UIButtonTypeCustom];
+    [closeBtn setImage:[UIImage imageNamed:@"common_close"] forState:UIControlStateNormal];
+    [closeBtn addTarget:self action:@selector(handle_closeEvent:) forControlEvents:UIControlEventTouchUpInside];
+    closeBtn.frame = CGRectMake(20, securitytop_Y-44, 44, 44);
+    [topView addSubview:closeBtn];
+    UIImageView *headImg = [[UIImageView alloc]init];
+    UIImage *bannerImg = [UIImage imageNamed:@"common_headLogo"];
+    headImg.image = bannerImg ;
+    headImg.frame = CGRectMake((KScreenWidth- bannerImg.size.width)/2, (IPHONEX ? 44 : 20)+20 , bannerImg.size.width, bannerImg.size.height);
+    [topView addSubview:headImg];
+    return topView;
+}
+- (UIScrollView *)scrollview {
+    if (!_scrollview) {
+        _scrollview = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)];
+    }
+    return _scrollview;
+}
+-(EamilTFmatchV *)xxx_emailTFV{
+    if (!_xxx_emailTFV) {
+        _xxx_emailTFV = [[EamilTFmatchV alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, 50)];
+    }
+    return _xxx_emailTFV;
+}
+
+
+- (PassWordSecureBtnV *)xxx_passwordV {
+    if (!_xxx_passwordV) {
+        _xxx_passwordV = [[PassWordSecureBtnV alloc]initWithFrame:CGRectMake(20, CGRectGetMaxY(self.xxx_emailTFV.frame)+30, KScreenWidth-40, 50+20)];
+    }
+    return _xxx_passwordV;
+}
+
+- (UIButton *)xxx_logInBtn {
+    if (!_xxx_logInBtn) {
+        _xxx_logInBtn = [UIButton buttonWithType:UIButtonTypeCustom];
+        [_xxx_logInBtn setTitleColor:[UIColor colorWithHexString:@"#000000"] forState:UIControlStateNormal];
+        _xxx_logInBtn.titleLabel.font = [UIFont fontWithName:Rob_Bold size:16];
+        [_xxx_logInBtn setTitle:@"LOG IN" forState:UIControlStateNormal];
+        [_xxx_logInBtn addTarget:self action:@selector(handle_xxx_logInBtnEvent:) forControlEvents:UIControlEventTouchUpInside];
+        _xxx_logInBtn.backgroundColor = ThemeColor;
+        _xxx_logInBtn.layer.cornerRadius = 4;
+        _xxx_logInBtn.clipsToBounds = YES;
+     }
+    return _xxx_logInBtn;
+}
+
+
+
+- (LoginThirdAuthV *)xxx_authV {
+    if (!_xxx_authV) {
+        _xxx_authV = [[LoginThirdAuthV alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 15+20+(36+10)*3)];
+    }
+    return _xxx_authV;
+}
+
+@end

+ 6 - 0
Asteria/Fuction/Login/Assets/Login.xcassets/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 23 - 0
Asteria/Fuction/Login/Assets/Login.xcassets/login_Apple.imageset/Contents.json

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

BIN
Asteria/Fuction/Login/Assets/Login.xcassets/login_Apple.imageset/组 10983.png


BIN
Asteria/Fuction/Login/Assets/Login.xcassets/login_Apple.imageset/组 10983@2x.png


BIN
Asteria/Fuction/Login/Assets/Login.xcassets/login_Apple.imageset/组 10983@3x.png


+ 23 - 0
Asteria/Fuction/Login/Assets/Login.xcassets/login_Facebook.imageset/Contents.json

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

BIN
Asteria/Fuction/Login/Assets/Login.xcassets/login_Facebook.imageset/组 10982.png


BIN
Asteria/Fuction/Login/Assets/Login.xcassets/login_Facebook.imageset/组 10982@2x.png


BIN
Asteria/Fuction/Login/Assets/Login.xcassets/login_Facebook.imageset/组 10982@3x.png


+ 23 - 0
Asteria/Fuction/Login/Assets/Login.xcassets/login_Google.imageset/Contents.json

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

BIN
Asteria/Fuction/Login/Assets/Login.xcassets/login_Google.imageset/组 10984.png


BIN
Asteria/Fuction/Login/Assets/Login.xcassets/login_Google.imageset/组 10984@2x.png


BIN
Asteria/Fuction/Login/Assets/Login.xcassets/login_Google.imageset/组 10984@3x.png


+ 23 - 0
Asteria/Fuction/Login/Assets/Login.xcassets/login_HI.imageset/Contents.json

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

BIN
Asteria/Fuction/Login/Assets/Login.xcassets/login_HI.imageset/HI.png


BIN
Asteria/Fuction/Login/Assets/Login.xcassets/login_HI.imageset/HI@2x.png


BIN
Asteria/Fuction/Login/Assets/Login.xcassets/login_HI.imageset/HI@3x.png


+ 17 - 0
Asteria/Fuction/Login/BaseView/EamilTFmatchV.h

@@ -0,0 +1,17 @@
+//
+//  EamilTFmatchV.h
+//  westkissMob
+//
+//  Created by 王猛 on 2022/9/7.
+//
+
+#import "TT_BaseV.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface EamilTFmatchV : TT_BaseV 
+@property (nonatomic, strong) TT_CustonTF *xxx_emailTF;
++(CGFloat)xxx_emailMatchVheight;
+@end
+
+NS_ASSUME_NONNULL_END

+ 182 - 0
Asteria/Fuction/Login/BaseView/EamilTFmatchV.m

@@ -0,0 +1,182 @@
+//
+//  EamilTFmatchV.m
+//  westkissMob
+//
+//  Created by 王猛 on 2022/9/7.
+//
+
+#import "EamilTFmatchV.h"
+@interface EamilTFmatchV ()<
+UITextFieldDelegate,
+UITableViewDelegate,
+UITableViewDataSource
+>
+@property (nonatomic, strong) UILabel *xxx_emialLab;
+@property(nonatomic,strong)UITableView *table;
+@property(nonatomic,strong)NSArray * hzArr;//后缀数组
+@property(nonatomic,strong)NSMutableArray * ppMuArr;//匹配中的数组
+@end
+
+
+@implementation EamilTFmatchV
+
+
++(CGFloat)xxx_emailMatchVheight{
+    return 120+50;
+}
+
+- (void)tt_configDefault{
+    _hzArr = @[@"@gmail.com",@"@hotmall.com",@"@yahoo.com",@"@icloud.com",@"@outlook.com",@"@aolp.com",@"@zoho.com",@"@inbox.com",@"@mail.com"];
+    _ppMuArr = [[NSMutableArray alloc]init];
+}
+
+- (void)tt_setupViews{
+    [self addSubview:self.xxx_emailTF];
+    [self addSubview:self.xxx_emialLab];
+    [self addSubview:self.table];
+}
+
+#pragma mark - **************** UITextFieldDelegate ****************
+-(void)textFieldDidEndEditing:(UITextField *)textField{
+    NSLog(@"-------%@",self.xxx_emailTF.text);
+    if (textField == self.xxx_emailTF) {
+        if (![Current_normalTool xxx_isValidateEmail:self.xxx_emailTF.text]) {
+            self.xxx_emialLab.hidden = NO;
+        }else{
+            self.xxx_emialLab.hidden = YES;
+        }
+        self.table.hidden = YES;
+        self.mj_h = 50;
+    }
+}
+
+
+
+///文本框字符变化时
+- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
+    self.table.hidden = NO;
+    self.mj_h = 120+50;
+    if (!range.length){
+        if ([string isEqualToString:@"@"] || [textField.text containsString:@"@"]) {
+            self.table.hidden = YES;
+            self.mj_h = 50;
+        }else{
+            _ppMuArr = [[NSMutableArray alloc]init];
+            [_hzArr enumerateObjectsUsingBlock:^(NSString * obj, NSUInteger idx, BOOL * _Nonnull stop) {
+                NSString * ppString = [textField.text stringByAppendingString:[NSString stringWithFormat:@"%@%@",string,obj]];
+                [self.ppMuArr addObject:ppString];
+            }];
+        }
+    }else{
+        _ppMuArr = [[NSMutableArray alloc]init];
+        if (textField.text.length - 1 == 0 || [textField.text containsString:@"@"]) {
+            self.table.hidden = YES;
+            self.mj_h = 50;
+        }else{
+            [_hzArr enumerateObjectsUsingBlock:^(NSString * obj, NSUInteger idx, BOOL * _Nonnull stop) {
+                NSString *matchStr = [textField.text substringToIndex:(textField.text.length - 1)];
+                NSString * ppString = [NSString stringWithFormat:@"%@%@",matchStr,obj];
+                [self.ppMuArr addObject:ppString];
+            }];
+        }
+    }
+    [self.table reloadData];
+    return YES;
+}
+- (BOOL)textFieldShouldClear:(UITextField *)textField{
+    self.table.hidden = YES;
+    self.mj_h = 50;
+    return YES;
+}
+// 进入编辑状态是否需要匹配
+- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
+    if (textField.text.length != 0){
+        self.table.hidden = NO;
+        self.mj_h = 120+50;
+        [self.table reloadData];
+    }
+    return YES;
+}
+
+#pragma mark dataSource method and delegate method
+
+- (NSInteger)tableView:(UITableView*)table numberOfRowsInSection:(NSInteger)section{
+    return self.ppMuArr.count;
+}
+
+- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath{
+    static NSString * cellIdentifier = @"cell";
+    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
+    if (!cell) {
+        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
+    }
+    
+    cell.textLabel.text = self.ppMuArr[indexPath.row];
+    cell.textLabel.textAlignment = NSTextAlignmentCenter;
+    cell.textLabel.font = [UIFont systemFontOfSize:14];
+    return cell;
+}
+- (CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath{
+    return 30;
+}
+- (void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath{
+    // 将完整email填入输入框
+    self.xxx_emailTF.text = self.ppMuArr[indexPath.row];
+    self.table.hidden = YES;
+    self.mj_h = 50;
+    if (![Current_normalTool xxx_isValidateEmail:self.xxx_emailTF.text]) {
+        self.xxx_emialLab.hidden = NO;
+    }else{
+        self.xxx_emialLab.hidden = YES;
+    }
+}
+
+-(TT_CustonTF *)xxx_emailTF{
+    if (!_xxx_emailTF) {
+        _xxx_emailTF = [TT_ControlTool FTT_ControlToolUITextFieldFrame:CGRectMake(20, 0,  KScreenWidth-40, 50)
+                                                               PlaceHolder:@"* EMAIl"
+                                                               andLifImage:nil
+                                                             AndRightImage:nil
+                                                            LiftImageFrame:CGRectZero
+                                                           RightImageFrame:CGRectZero
+                                                                    AndTag:0
+                                                           AndKeyboardType:UIKeyboardTypeDefault
+                                                           clearButtonMode:UITextFieldViewModeAlways
+                                                          AndReturnKeyType:UIReturnKeyDone
+                                                             masksToBounds:YES
+                                                              conrenRadius:4
+                                                              BorderColor:[UIColor colorWithHexString:@"#000000"]
+                                                              BorderWidth:1];
+        _xxx_emailTF.delegate = self;
+    }
+    return _xxx_emailTF;
+}
+-(UILabel *)xxx_emialLab{
+    if (!_xxx_emialLab) {
+        _xxx_emialLab = [UILabel new];
+        _xxx_emialLab.frame = CGRectMake(20, 50, KScreenWidth-40, 20);
+        _xxx_emialLab.textColor = [UIColor colorWithHexString:@"#bf1221"];
+        _xxx_emialLab.textAlignment  = NSTextAlignmentCenter;
+        _xxx_emialLab.backgroundColor= [UIColor clearColor];
+        _xxx_emialLab.text = @"* Please prvide an email address.";
+        _xxx_emialLab.font = [UIFont systemFontOfSize:12];
+        _xxx_emialLab.hidden = YES;
+    }
+    return _xxx_emialLab;
+}
+
+
+-(UITableView *)table{
+    if (!_table) {
+        _table = [[UITableView alloc] initWithFrame:CGRectMake(20,50,KScreenWidth-40,120)];
+        _table.separatorStyle = UITableViewCellSeparatorStyleNone;
+        _table.dataSource=self;
+        _table.delegate=self;
+        _table.hidden = YES;
+        self.mj_h = 50;
+    }
+    return _table;
+}
+
+
+@end

+ 20 - 0
Asteria/Fuction/Login/BaseView/PassWordSecureBtnV.h

@@ -0,0 +1,20 @@
+//
+//  PassWordSecureBtnV.h
+//  westkissMob
+//
+//  Created by 王猛 on 2022/9/6.
+//
+
+#import "TT_BaseV.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface PassWordSecureBtnV : TT_BaseV <UITextFieldDelegate>
+@property (nonatomic, strong) TT_CustonTF *xxx_passwordTF;
+@property (nonatomic, strong) UIButton *xxx_secureBtn;
+@property (nonatomic, strong) UILabel *xxx_warnLab;
+
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 99 - 0
Asteria/Fuction/Login/BaseView/PassWordSecureBtnV.m

@@ -0,0 +1,99 @@
+//
+//  PassWordSecureBtnV.m
+//  westkissMob
+//
+//  Created by 王猛 on 2022/9/6.
+//
+
+#import "PassWordSecureBtnV.h"
+
+@implementation PassWordSecureBtnV
+
+- (void)tt_setupViews{
+    
+    [self addSubview:self.xxx_passwordTF];
+    [self addSubview:self.xxx_secureBtn];
+    [self addSubview:self.xxx_warnLab];
+    
+    
+}
+-(void)xxx_changeSecure:(UIButton *)btn{
+    btn.selected = !btn.selected;
+    NSString *tmpPwd = self.xxx_passwordTF.text;
+    self.xxx_passwordTF.text = nil;
+    self.xxx_passwordTF.secureTextEntry = !self.xxx_passwordTF.secureTextEntry;
+    self.xxx_passwordTF.text =  tmpPwd;
+    if (self.xxx_passwordTF.secureTextEntry) {
+        [self.xxx_passwordTF resignFirstResponder];
+    }
+}
+#pragma mark - UITextFieldDelegate
+- (void)textFieldDidBeginEditing:(UITextField *)textField {
+if (textField == self.xxx_passwordTF && self.xxx_passwordTF.secureTextEntry) {
+    [self.xxx_passwordTF insertText:self.xxx_passwordTF.text];
+  }
+    self.xxx_warnLab.hidden = YES;
+}
+
+-(void)textFieldDidEndEditing:(UITextField *)textField{
+    if (textField == self.xxx_passwordTF) {
+        if (self.xxx_passwordTF.text.length<6) {
+            self.xxx_warnLab.hidden = NO;
+        }else{
+            self.xxx_warnLab.hidden = YES;
+        }
+    }
+}
+
+-(TT_CustonTF *)xxx_passwordTF{
+    if (!_xxx_passwordTF) {
+        _xxx_passwordTF = [TT_ControlTool FTT_ControlToolUITextFieldFrame:CGRectMake(0, 0,  KScreenWidth-40, 50)
+                                                              PlaceHolder:@"* PASSWORD"
+                                                              andLifImage:nil
+                                                            AndRightImage:nil
+                                                           LiftImageFrame:CGRectZero
+                                                          RightImageFrame:CGRectZero
+                                                                   AndTag:0
+                                                          AndKeyboardType:UIKeyboardTypeDefault
+                                                          clearButtonMode:UITextFieldViewModeNever
+                                                         AndReturnKeyType:UIReturnKeyDone
+                                                            masksToBounds:YES
+                                                             conrenRadius:4
+                                                              BorderColor:[UIColor colorWithHexString:@"#000000"]
+                                                              BorderWidth:1];
+        _xxx_passwordTF.delegate = self;
+        _xxx_passwordTF.secureTextEntry = YES;
+    }
+    return _xxx_passwordTF;
+}
+
+- (UIButton *)xxx_secureBtn{
+    if (!_xxx_secureBtn) {
+        _xxx_secureBtn = [UIButton buttonWithType:UIButtonTypeCustom];
+        _xxx_secureBtn.frame = CGRectMake(KScreenWidth-40-50, 0,50 , 50);
+        [_xxx_secureBtn setTitle:@"VIEW" forState:UIControlStateNormal];
+        NSMutableAttributedString *attrSleStr = [[NSMutableAttributedString alloc] initWithString:@"VIEW"                                                                                    attributes:@{NSStrikethroughStyleAttributeName : @(NSUnderlineStyleSingle)}];
+        [_xxx_secureBtn setAttributedTitle:attrSleStr forState:UIControlStateSelected];
+        [_xxx_secureBtn addTarget:self action:@selector(xxx_changeSecure:) forControlEvents:UIControlEventTouchUpInside];
+        _xxx_secureBtn.selected = NO;
+        _xxx_secureBtn.backgroundColor = [UIColor clearColor];
+    }
+    return _xxx_secureBtn;
+}
+
+
+-(UILabel *)xxx_warnLab{
+    if (!_xxx_warnLab) {
+        _xxx_warnLab = [UILabel new];
+        _xxx_warnLab.frame = CGRectMake(20, 50, KScreenWidth-40, 20);
+        _xxx_warnLab.textColor = [UIColor colorWithHexString:@"#bf1221"];
+        _xxx_warnLab.textAlignment  = NSTextAlignmentCenter;
+        _xxx_warnLab.backgroundColor= [UIColor clearColor];
+        _xxx_warnLab.text = @"* 6 characters minimunm.";
+        _xxx_warnLab.font = [UIFont systemFontOfSize:12];
+        _xxx_warnLab.hidden = YES;
+    }
+    return _xxx_warnLab;
+}
+
+@end

+ 16 - 0
Asteria/Fuction/Login/Target/Target_Login.h

@@ -0,0 +1,16 @@
+//
+//  Target_Login.h
+//  Asteria
+//
+//  Created by 王猛 on 2023/5/15.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface Target_Login : NSObject
+- (UIViewController *)Action_AS_LoginC:(NSDictionary *)params;
+@end
+
+NS_ASSUME_NONNULL_END

+ 16 - 0
Asteria/Fuction/Login/Target/Target_Login.m

@@ -0,0 +1,16 @@
+//
+//  Target_Login.m
+//  Asteria
+//
+//  Created by 王猛 on 2023/5/15.
+//
+
+#import "Target_Login.h"
+#import "AS_LoginC.h"
+
+@implementation Target_Login
+- (UIViewController *)Action_AS_LoginC:(NSDictionary *)params{
+    AS_LoginC *vc = [[AS_LoginC alloc]init];
+    return vc;
+}
+@end

+ 24 - 0
Asteria/Fuction/Login/V/LoginThirdAuthV.h

@@ -0,0 +1,24 @@
+//
+//  LoginThirdAuthV.h
+//  Asteria
+//
+//  Created by 王猛 on 2023/5/16.
+//
+
+#import <WMBase/WMBase.h>
+
+typedef NS_ENUM(NSUInteger,ThirdType){
+    ThirdTypeApple  ,
+    ThirdTypeFaceBook,
+    ThirdTypeGoogle,
+    
+} ;
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface LoginThirdAuthV : TT_BaseV
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 239 - 0
Asteria/Fuction/Login/V/LoginThirdAuthV.m

@@ -0,0 +1,239 @@
+//
+//  LoginThirdAuthV.m
+//  Asteria
+//
+//  Created by 王猛 on 2023/5/16.
+//
+
+#import "LoginThirdAuthV.h"
+#import <AuthenticationServices/AuthenticationServices.h>
+#import <GoogleSignIn/GoogleSignIn.h>
+#import <FBSDKLoginKit/FBSDKLoginKit.h>
+#define LoginBtnTag 10000
+
+@interface LoginThirdAuthV ()<ASAuthorizationControllerDelegate,ASAuthorizationControllerPresentationContextProviding>
+
+
+
+@end
+
+@implementation LoginThirdAuthV
+
+- (void)tt_setupViews{
+    UILabel *tipLab = [[UILabel alloc]init];
+    tipLab.text = @"Continue With";
+    tipLab.font = [UIFont fontWithName:Rob_Regular size:12];
+    [self addSubview:tipLab];
+    tipLab.frame = CGRectMake(20, 0, KScreenWidth-40, 15);
+    
+ 
+    NSArray *titleAry = @[@"Apple",@"Facebook",@"Google"];
+    NSArray *imgAry = @[@"login_Apple",@"login_Facebook",@"login_Google"];
+    for (int i= 0; i<titleAry.count; i++) {
+     
+        QMUIButton *btn = [self laod_authItem:titleAry[i] img:imgAry[i]];
+        btn.tag = LoginBtnTag + i;
+        [btn addTarget:self action:@selector(handle_BtnEvent:) forControlEvents:UIControlEventTouchUpInside];
+        btn.mj_y = CGRectGetMaxY(tipLab.frame)+20 + (36+10)*i;
+        [self addSubview:btn];
+    }
+    QMUIButton *tepBtn = [self viewWithTag:LoginBtnTag];
+    if(@available(iOS 13.0, *)){
+        tepBtn.hidden = NO;
+    }else{
+        tepBtn.hidden = YES;
+    }
+}
+
+-(CGFloat)xxx_Vheight{
+    return 15+20+(36+10)*3;
+}
+
+-(QMUIButton *)laod_authItem:(NSString *)title img:(NSString *)imgStr{
+    QMUIButton *authBtn = [[QMUIButton alloc] initWithFrame:CGRectMake(20, 0, 132, 36)];
+    authBtn.backgroundColor = ThemeLightColor;
+    authBtn.imageView.qmui_size = CGSizeMake(24, 24);
+    [authBtn setImage:[UIImage imageNamed:imgStr] forState:UIControlStateNormal];
+    [authBtn setTitle:title forState:UIControlStateNormal];
+    [authBtn setTitleColor:[UIColor colorWithHexString:@"#000000"] forState:UIControlStateNormal];
+    authBtn.titleLabel.font = [UIFont fontWithName:Rob_Regular size:12];
+    authBtn.cornerRadius = 4;
+    authBtn.spacingBetweenImageAndTitle = 20.0f;
+    
+    CGSize imageSize = authBtn.imageView.frame.size;
+    CGSize titleSize = authBtn.titleLabel.frame.size;
+    
+    authBtn.titleEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 132-imageSize.width-titleSize.width-20);
+    return authBtn;
+}
+
+-(void)handle_BtnEvent:(UIButton *)btn{
+    switch (btn.tag) {
+        case LoginBtnTag:
+            [self tool_apple];
+            break;
+        case LoginBtnTag+1:
+            [self tool_facebook];
+            break;
+        case LoginBtnTag+2:
+            [self tool_google];
+            break;
+        default:
+            break;
+    }
+    
+}
+
+-(void)tool_apple{
+
+    if(@available(iOS 13.0, *)){
+        ASAuthorizationAppleIDProvider *appleProvider = [[ASAuthorizationAppleIDProvider alloc]init];
+        
+        ASAuthorizationAppleIDRequest *request = appleProvider.createRequest;
+        request.requestedScopes = @[ASAuthorizationScopeEmail,ASAuthorizationScopeFullName];
+        
+        ASAuthorizationController *controller = [[ASAuthorizationController alloc]initWithAuthorizationRequests:@[request]];
+        controller.delegate = self;
+        controller.presentationContextProvider = self;
+        [controller performRequests];
+    }
+    
+}
+#pragma mark - **************** ASAuthorizationControllerDelegate ****************
+///授权成功回调
+- (void)authorizationController:(ASAuthorizationController *)controller didCompleteWithAuthorization:(nonnull ASAuthorization *)authorization API_AVAILABLE(ios(13.0)){
+    if([authorization.credential isKindOfClass:[ASAuthorizationAppleIDCredential class]]){
+        ASAuthorizationAppleIDCredential *credential = (ASAuthorizationAppleIDCredential *)authorization.credential;
+        NSString *user = credential.user;
+        NSString *email = credential.email;
+
+        NSData *identityToken = credential.identityToken;
+        NSLog(@"user - %@ --- %@--%@",user,email,identityToken);
+    }else if([authorization.credential isKindOfClass:[ASPasswordCredential class]]){
+        ASPasswordCredential *psdCredential = (ASPasswordCredential *)authorization.credential;
+        // 密码凭证对象的用户标识 用户的唯一标识
+        NSString *user = psdCredential.user;
+        NSString *psd = psdCredential.password;
+        NSLog(@"psduer -- %@----%@",user,psd);
+    }
+}
+//授权失败
+- (void)authorizationController:(ASAuthorizationController *)controller didCompleteWithError:(NSError *)error  API_AVAILABLE(ios(13.0)){
+     NSLog(@"错误信息:%@", error);
+     NSString *errorMsg;
+    switch (error.code) {
+        case ASAuthorizationErrorCanceled:
+            errorMsg = @"用户取消了授权请求";
+            NSLog(@"errorMsg -   %@",errorMsg);
+            break;
+            
+        case ASAuthorizationErrorFailed:
+            errorMsg = @"授权请求失败";
+            NSLog(@"errorMsg -   %@",errorMsg);
+            break;
+            
+        case ASAuthorizationErrorInvalidResponse:
+            errorMsg = @"授权请求响应无效";
+            NSLog(@"errorMsg -   %@",errorMsg);
+            break;
+            
+        case ASAuthorizationErrorNotHandled:
+            errorMsg = @"未能处理授权请求";
+            NSLog(@"errorMsg -   %@",errorMsg);
+            break;
+            
+        case ASAuthorizationErrorUnknown:
+            errorMsg = @"授权请求失败未知原因";
+            NSLog(@"errorMsg -   %@",errorMsg);
+            break;
+                        
+        default:
+            break;
+    }
+}
+
+- (ASPresentationAnchor)presentationAnchorForAuthorizationController:(ASAuthorizationController *)controller API_AVAILABLE(ios(13.0)){
+    UIViewController *topvc = topViewController();
+    return topvc.view.window;
+}
+
+
+
+
+
+-(void)tool_facebook{
+    FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init];
+    UIViewController *topvc = topViewController();
+    [MBProgressHUD showHUDAddedTo:topvc.view animated:YES];
+    [loginManager logInWithPermissions:@[@"public_profile", @"email"] fromViewController:topvc handler:^(FBSDKLoginManagerLoginResult * _Nullable result, NSError * _Nullable error) {
+        
+        if(error){
+            [MBProgressHUD hideHUDForView:topvc.view animated:YES];
+            NSLog(@"NSError-----%@",error);
+            return;
+        }else if(result.isCancelled){
+            [MBProgressHUD hideHUDForView:topvc.view animated:YES];
+            NSLog(@"Face---Cancelled");
+        }else{
+            NSDictionary*params= @{@"fields":@"id,name,email,age_range,first_name,last_name,link,gender,locale,picture,timezone,updated_time,verified"};
+            NSString *tmpToken = MM_str(result.token.tokenString);
+            FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
+                                          initWithGraphPath:result.token.userID
+                                          parameters:params
+                                          HTTPMethod:@"GET"];
+            [request startWithCompletion:^(id<FBSDKGraphRequestConnecting>  _Nullable connection, id  _Nullable result, NSError * _Nullable error) {
+                [MBProgressHUD hideHUDForView:topvc.view animated:YES];
+
+                NSLog(@"%@",result[@"name"]);
+                if (error == nil) {
+                    NSMutableDictionary *paramsDic= [NSMutableDictionary dictionary];
+                    [paramsDic setObject:@(1) forKey:@"type"];
+                    [paramsDic setObject:tmpToken forKey:@"token"];
+                    [paramsDic setObject:MM_str(result[@"email"])  forKey:@"email"];
+                    [paramsDic setObject:MM_str(result[@"id"])  forKey:@"uid"];
+                    [paramsDic setObject:MM_str(result[@"first_name"]) forKey:@"firstName"];
+                    [paramsDic setObject:MM_str(result[@"last_name"]) forKey:@"lastName"];
+                    [paramsDic setObject:@"" forKey:@"birthday"];
+                    [paramsDic setObject:@"" forKey:@"gender"];
+                    NSLog(@"paramsDic----%@",paramsDic);
+                    [self generaltriggermethodType:ThirdTypeFaceBook data:paramsDic];
+                    
+                }else{
+                    
+                    [topvc.view makeToast:[NSString stringWithFormat:@"Login failed with error code:%ld",error.code] duration:3 position:CSToastPositionCenter];
+                }
+            }];
+        }
+    }];
+    
+}
+-(void)tool_google{
+    UIViewController *topvc = topViewController();
+    [MBProgressHUD showHUDAddedTo:topvc.view animated:YES];
+    [GIDSignIn.sharedInstance signInWithPresentingViewController:topvc completion:^(GIDSignInResult * _Nullable signInResult, NSError * _Nullable error) {
+        if (error) {
+            NSLog(@"NSError-----%@",error);
+            return;
+        }
+        GIDGoogleUser *user = signInResult.user;
+        if (user == nil) { return; }
+
+        NSString *name = user.profile.name;
+        NSString *givenName = user.profile.givenName;
+        NSString *familyName = user.profile.familyName;
+        NSMutableDictionary *paramsDic= [NSMutableDictionary dictionary];
+        [paramsDic setObject:@(2) forKey:@"type"];
+        [paramsDic setObject:user.accessToken forKey:@"token"];
+        [paramsDic setObject:user.profile.email forKey:@"email"];
+        [paramsDic setObject:user.userID forKey:@"uid"];
+        [paramsDic setObject:familyName forKey:@"firstName"];
+        [paramsDic setObject:givenName forKey:@"lastName"];
+        [paramsDic setObject:@"" forKey:@"birthday"];
+        [paramsDic setObject:@"" forKey:@"gender"];
+        NSLog(@"paramsDic----%@",paramsDic);
+        [self generaltriggermethodType:ThirdTypeGoogle data:paramsDic];
+    }];
+
+}
+
+@end

+ 14 - 0
Asteria/Info.plist

@@ -9,6 +9,20 @@
 	</dict>
 	<key>NSAppTransportSecurity</key>
 	<dict>
+        <key>NSExceptionDomains</key>
+          <dict>
+              <key>zyp.hnwmzp.cn</key>
+              <dict>
+                  <key>NSExceptionRequiresForwardSecrecy</key>
+                   <false/>
+                   <key>NSExceptionAllowsInsecureHTTPLoads</key>
+                   <true/>
+                   <key>NSIncludesSubdomains</key>
+                   <true/>
+                   <key>NSExceptionMinimumTLSVersion</key>
+                   <string>TLSv1.3</string>
+              </dict>
+          </dict>
 		<key>NSAllowsArbitraryLoads</key>
 		<true/>
 		<key>NSAllowsArbitraryLoadsInWebContent</key>

+ 0 - 3
Asteria/PreFixHeader.h

@@ -23,9 +23,6 @@
 #import <Toast/Toast.h>
 
 
-
-
-
 typedef void (^btnClickBlock)(void);
 
 #endif /* PreFixHeader_h */

+ 1 - 1
Podfile

@@ -32,8 +32,8 @@ target 'Asteria' do
   
   pod 'FBSDKLoginKit'
   pod 'GoogleSignIn'
+
   pod 'GKPhotoBrowser'
-  
   pod 'WMBase', :path =>"../WMBase"