b面
This commit is contained in:
parent
92b5a7c917
commit
12bc8a053e
@ -38,6 +38,7 @@
|
||||
755073C72C3F81B400ADFD6B /* AV_LaunchLimitesVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 755073C52C3F81B400ADFD6B /* AV_LaunchLimitesVC.xib */; };
|
||||
755073C92C3F837700ADFD6B /* ip+idfa+ADID.swift in Sources */ = {isa = PBXBuildFile; fileRef = 755073C82C3F837700ADFD6B /* ip+idfa+ADID.swift */; };
|
||||
755073CB2C3F843A00ADFD6B /* NetworkManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 755073CA2C3F843A00ADFD6B /* NetworkManager.swift */; };
|
||||
7559FE5D2C58C58D006A3D80 /* LuxADConfigure.m in Sources */ = {isa = PBXBuildFile; fileRef = 7559FE5C2C58C58D006A3D80 /* LuxADConfigure.m */; };
|
||||
759616622C35244A00363C46 /* AV_SelectGenderVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 759616602C35244A00363C46 /* AV_SelectGenderVC.swift */; };
|
||||
759616632C35244A00363C46 /* AV_SelectGenderVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 759616612C35244A00363C46 /* AV_SelectGenderVC.xib */; };
|
||||
759616682C3525AD00363C46 /* AV_SelectGenderCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 759616662C3525AD00363C46 /* AV_SelectGenderCell.swift */; };
|
||||
@ -46,6 +47,14 @@
|
||||
759616712C35348A00363C46 /* AV_SportsVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7596166F2C35348A00363C46 /* AV_SportsVC.xib */; };
|
||||
759616742C353BEF00363C46 /* AV_SportsCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 759616722C353BEF00363C46 /* AV_SportsCell.swift */; };
|
||||
759616752C353BEF00363C46 /* AV_SportsCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 759616732C353BEF00363C46 /* AV_SportsCell.xib */; };
|
||||
75A3DFAE2C588772002AEACE /* LuxADManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 75A3DFA22C588772002AEACE /* LuxADManager.m */; };
|
||||
75A3DFAF2C588772002AEACE /* LuxADSSModeVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 75A3DFA42C588772002AEACE /* LuxADSSModeVC.m */; };
|
||||
75A3DFB02C588772002AEACE /* LuxADSuperVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 75A3DFA62C588772002AEACE /* LuxADSuperVC.m */; };
|
||||
75A3DFB12C588772002AEACE /* LuxADVCControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 75A3DFA82C588772002AEACE /* LuxADVCControl.m */; };
|
||||
75A3DFB22C588772002AEACE /* LuxNetManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 75A3DFAA2C588772002AEACE /* LuxNetManager.m */; };
|
||||
75A3DFBC2C5895D9002AEACE /* OneVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 75A3DFBB2C5895D9002AEACE /* OneVC.m */; };
|
||||
75A3DFBF2C5895EA002AEACE /* twoVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 75A3DFBE2C5895EA002AEACE /* twoVC.m */; };
|
||||
75A3DFC22C5895F6002AEACE /* threeVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 75A3DFC12C5895F6002AEACE /* threeVC.m */; };
|
||||
75C0A1322BC787A400AB0094 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75C0A1312BC787A400AB0094 /* AppDelegate.swift */; };
|
||||
75C0A1362BC787A500AB0094 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75C0A1352BC787A500AB0094 /* ViewController.swift */; };
|
||||
75C0A1392BC787A500AB0094 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 75C0A1372BC787A500AB0094 /* Main.storyboard */; };
|
||||
@ -75,14 +84,6 @@
|
||||
75C4E0B92C367EAE00B4C170 /* AV_WaterCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75C4E0B62C367EAE00B4C170 /* AV_WaterCell.swift */; };
|
||||
75C4E0BC2C3681A400B4C170 /* AV_AddWaterCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 75C4E0BB2C3681A400B4C170 /* AV_AddWaterCollectionViewCell.xib */; };
|
||||
75C4E0BD2C3681A400B4C170 /* AV_AddWaterCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75C4E0BA2C3681A400B4C170 /* AV_AddWaterCollectionViewCell.swift */; };
|
||||
75F3F3D22C4CE23200005A7E /* AV_RootPlayerVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75F3F3D02C4CE23200005A7E /* AV_RootPlayerVC.swift */; };
|
||||
75F3F3D32C4CE23200005A7E /* AV_RootPlayerVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 75F3F3D12C4CE23200005A7E /* AV_RootPlayerVC.xib */; };
|
||||
75F3F3D62C4CE32000005A7E /* AV_AddPlayerVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75F3F3D42C4CE32000005A7E /* AV_AddPlayerVC.swift */; };
|
||||
75F3F3D72C4CE32000005A7E /* AV_AddPlayerVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 75F3F3D52C4CE32000005A7E /* AV_AddPlayerVC.xib */; };
|
||||
75F3F3DA2C4CE5F600005A7E /* AV_MinePlayerVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75F3F3D82C4CE5F600005A7E /* AV_MinePlayerVC.swift */; };
|
||||
75F3F3DB2C4CE5F600005A7E /* AV_MinePlayerVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 75F3F3D92C4CE5F600005A7E /* AV_MinePlayerVC.xib */; };
|
||||
75F3F3DE2C4CE6F400005A7E /* AV_WaterKeyBordPlayerVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75F3F3DC2C4CE6F400005A7E /* AV_WaterKeyBordPlayerVC.swift */; };
|
||||
75F3F3DF2C4CE6F400005A7E /* AV_WaterKeyBordPlayerVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 75F3F3DD2C4CE6F400005A7E /* AV_WaterKeyBordPlayerVC.xib */; };
|
||||
75FAEF2E2C3E5D9800298C7D /* CircularProgressBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75FAEF2D2C3E5D9700298C7D /* CircularProgressBarView.swift */; };
|
||||
75FAEF312C3E735800298C7D /* HealthManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75FAEF302C3E735800298C7D /* HealthManager.swift */; };
|
||||
75FAEF342C3E8D7400298C7D /* AV_NoneCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75FAEF322C3E8D7400298C7D /* AV_NoneCell.swift */; };
|
||||
@ -117,7 +118,7 @@
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
54C12C891A8D806F1F2D9570 /* Pods_anniversary_Project.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_anniversary_Project.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
753B789D2C4FB1450007526F /* adNetWork.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = adNetWork.swift; sourceTree = "<group>"; };
|
||||
753B789D2C4FB1450007526F /* adNetWork.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = adNetWork.swift; sourceTree = "<group>"; tabWidth = 5; };
|
||||
753C25882C3B8272006E2660 /* AV_WaterDayCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AV_WaterDayCell.swift; sourceTree = "<group>"; };
|
||||
753C25892C3B8272006E2660 /* AV_WaterDayCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AV_WaterDayCell.xib; sourceTree = "<group>"; };
|
||||
753C258C2C3B88F4006E2660 /* AV_BirtherDayTaskCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AV_BirtherDayTaskCell.swift; sourceTree = "<group>"; };
|
||||
@ -148,6 +149,9 @@
|
||||
755073C52C3F81B400ADFD6B /* AV_LaunchLimitesVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AV_LaunchLimitesVC.xib; sourceTree = "<group>"; };
|
||||
755073C82C3F837700ADFD6B /* ip+idfa+ADID.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ip+idfa+ADID.swift"; sourceTree = "<group>"; };
|
||||
755073CA2C3F843A00ADFD6B /* NetworkManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkManager.swift; sourceTree = "<group>"; };
|
||||
7559FE5A2C58C2CF006A3D80 /* anniversaryPCH.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = anniversaryPCH.pch; sourceTree = "<group>"; };
|
||||
7559FE5B2C58C58D006A3D80 /* LuxADConfigure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LuxADConfigure.h; sourceTree = "<group>"; };
|
||||
7559FE5C2C58C58D006A3D80 /* LuxADConfigure.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LuxADConfigure.m; sourceTree = "<group>"; };
|
||||
759616602C35244A00363C46 /* AV_SelectGenderVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AV_SelectGenderVC.swift; sourceTree = "<group>"; };
|
||||
759616612C35244A00363C46 /* AV_SelectGenderVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AV_SelectGenderVC.xib; sourceTree = "<group>"; };
|
||||
759616662C3525AD00363C46 /* AV_SelectGenderCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AV_SelectGenderCell.swift; sourceTree = "<group>"; };
|
||||
@ -156,6 +160,23 @@
|
||||
7596166F2C35348A00363C46 /* AV_SportsVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AV_SportsVC.xib; sourceTree = "<group>"; };
|
||||
759616722C353BEF00363C46 /* AV_SportsCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AV_SportsCell.swift; sourceTree = "<group>"; };
|
||||
759616732C353BEF00363C46 /* AV_SportsCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AV_SportsCell.xib; sourceTree = "<group>"; };
|
||||
75A3DFA12C588772002AEACE /* LuxADManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LuxADManager.h; sourceTree = "<group>"; };
|
||||
75A3DFA22C588772002AEACE /* LuxADManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LuxADManager.m; sourceTree = "<group>"; };
|
||||
75A3DFA32C588772002AEACE /* LuxADSSModeVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LuxADSSModeVC.h; sourceTree = "<group>"; };
|
||||
75A3DFA42C588772002AEACE /* LuxADSSModeVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LuxADSSModeVC.m; sourceTree = "<group>"; };
|
||||
75A3DFA52C588772002AEACE /* LuxADSuperVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LuxADSuperVC.h; sourceTree = "<group>"; };
|
||||
75A3DFA62C588772002AEACE /* LuxADSuperVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LuxADSuperVC.m; sourceTree = "<group>"; };
|
||||
75A3DFA72C588772002AEACE /* LuxADVCControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LuxADVCControl.h; sourceTree = "<group>"; };
|
||||
75A3DFA82C588772002AEACE /* LuxADVCControl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LuxADVCControl.m; sourceTree = "<group>"; };
|
||||
75A3DFA92C588772002AEACE /* LuxNetManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LuxNetManager.h; sourceTree = "<group>"; };
|
||||
75A3DFAA2C588772002AEACE /* LuxNetManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LuxNetManager.m; sourceTree = "<group>"; };
|
||||
75A3DFB82C588B16002AEACE /* anniversary_Project-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "anniversary_Project-Bridging-Header.h"; sourceTree = "<group>"; };
|
||||
75A3DFBA2C5895D9002AEACE /* OneVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OneVC.h; sourceTree = "<group>"; };
|
||||
75A3DFBB2C5895D9002AEACE /* OneVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = OneVC.m; sourceTree = "<group>"; };
|
||||
75A3DFBD2C5895EA002AEACE /* twoVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = twoVC.h; sourceTree = "<group>"; };
|
||||
75A3DFBE2C5895EA002AEACE /* twoVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = twoVC.m; sourceTree = "<group>"; };
|
||||
75A3DFC02C5895F6002AEACE /* threeVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = threeVC.h; sourceTree = "<group>"; };
|
||||
75A3DFC12C5895F6002AEACE /* threeVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = threeVC.m; sourceTree = "<group>"; };
|
||||
75C0A12E2BC787A400AB0094 /* anniversary_Project.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = anniversary_Project.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
75C0A1312BC787A400AB0094 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||
75C0A1352BC787A500AB0094 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
|
||||
@ -183,21 +204,12 @@
|
||||
75C0A1F22BCCD48A00AB0094 /* AV_TaskCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AV_TaskCell.swift; sourceTree = "<group>"; };
|
||||
75C0A1F32BCCD48A00AB0094 /* AV_TaskCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AV_TaskCell.xib; sourceTree = "<group>"; };
|
||||
75C0A1F62BCD027A00AB0094 /* color.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = color.swift; sourceTree = "<group>"; };
|
||||
75C0A1F92BCD06EB00AB0094 /* AV_header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AV_header.h; sourceTree = "<group>"; };
|
||||
75C4E0AF2C36792900B4C170 /* AV_WaterHomeVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AV_WaterHomeVC.swift; sourceTree = "<group>"; };
|
||||
75C4E0B02C36792900B4C170 /* AV_WaterHomeVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AV_WaterHomeVC.xib; sourceTree = "<group>"; };
|
||||
75C4E0B62C367EAE00B4C170 /* AV_WaterCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AV_WaterCell.swift; sourceTree = "<group>"; };
|
||||
75C4E0B72C367EAE00B4C170 /* AV_WaterCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AV_WaterCell.xib; sourceTree = "<group>"; };
|
||||
75C4E0BA2C3681A400B4C170 /* AV_AddWaterCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AV_AddWaterCollectionViewCell.swift; sourceTree = "<group>"; };
|
||||
75C4E0BB2C3681A400B4C170 /* AV_AddWaterCollectionViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AV_AddWaterCollectionViewCell.xib; sourceTree = "<group>"; };
|
||||
75F3F3D02C4CE23200005A7E /* AV_RootPlayerVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AV_RootPlayerVC.swift; sourceTree = "<group>"; };
|
||||
75F3F3D12C4CE23200005A7E /* AV_RootPlayerVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AV_RootPlayerVC.xib; sourceTree = "<group>"; };
|
||||
75F3F3D42C4CE32000005A7E /* AV_AddPlayerVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AV_AddPlayerVC.swift; sourceTree = "<group>"; };
|
||||
75F3F3D52C4CE32000005A7E /* AV_AddPlayerVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AV_AddPlayerVC.xib; sourceTree = "<group>"; };
|
||||
75F3F3D82C4CE5F600005A7E /* AV_MinePlayerVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AV_MinePlayerVC.swift; sourceTree = "<group>"; };
|
||||
75F3F3D92C4CE5F600005A7E /* AV_MinePlayerVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AV_MinePlayerVC.xib; sourceTree = "<group>"; };
|
||||
75F3F3DC2C4CE6F400005A7E /* AV_WaterKeyBordPlayerVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AV_WaterKeyBordPlayerVC.swift; sourceTree = "<group>"; };
|
||||
75F3F3DD2C4CE6F400005A7E /* AV_WaterKeyBordPlayerVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AV_WaterKeyBordPlayerVC.xib; sourceTree = "<group>"; };
|
||||
75FAEF2D2C3E5D9700298C7D /* CircularProgressBarView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CircularProgressBarView.swift; sourceTree = "<group>"; };
|
||||
75FAEF2F2C3E723A00298C7D /* anniversary_Project.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = anniversary_Project.entitlements; sourceTree = "<group>"; };
|
||||
75FAEF302C3E735800298C7D /* HealthManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HealthManager.swift; sourceTree = "<group>"; };
|
||||
@ -320,6 +332,39 @@
|
||||
path = V;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
75A3DFAB2C588772002AEACE /* LuxADManager */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
7559FE5B2C58C58D006A3D80 /* LuxADConfigure.h */,
|
||||
7559FE5C2C58C58D006A3D80 /* LuxADConfigure.m */,
|
||||
755073C22C3F7FC200ADFD6B /* GoogleService-Info.plist */,
|
||||
75A3DFA12C588772002AEACE /* LuxADManager.h */,
|
||||
75A3DFA22C588772002AEACE /* LuxADManager.m */,
|
||||
75A3DFA32C588772002AEACE /* LuxADSSModeVC.h */,
|
||||
75A3DFA42C588772002AEACE /* LuxADSSModeVC.m */,
|
||||
75A3DFA52C588772002AEACE /* LuxADSuperVC.h */,
|
||||
75A3DFA62C588772002AEACE /* LuxADSuperVC.m */,
|
||||
75A3DFA72C588772002AEACE /* LuxADVCControl.h */,
|
||||
75A3DFA82C588772002AEACE /* LuxADVCControl.m */,
|
||||
75A3DFA92C588772002AEACE /* LuxNetManager.h */,
|
||||
75A3DFAA2C588772002AEACE /* LuxNetManager.m */,
|
||||
);
|
||||
path = LuxADManager;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
75A3DFB92C5895BF002AEACE /* playB */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
75A3DFBA2C5895D9002AEACE /* OneVC.h */,
|
||||
75A3DFBB2C5895D9002AEACE /* OneVC.m */,
|
||||
75A3DFBD2C5895EA002AEACE /* twoVC.h */,
|
||||
75A3DFBE2C5895EA002AEACE /* twoVC.m */,
|
||||
75A3DFC02C5895F6002AEACE /* threeVC.h */,
|
||||
75A3DFC12C5895F6002AEACE /* threeVC.m */,
|
||||
);
|
||||
path = playB;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
75C0A1252BC787A400AB0094 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@ -345,8 +390,8 @@
|
||||
75C0A1302BC787A400AB0094 /* anniversary_Project */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
75F3F3CE2C4CE20F00005A7E /* Player */,
|
||||
755073C22C3F7FC200ADFD6B /* GoogleService-Info.plist */,
|
||||
75A3DFB92C5895BF002AEACE /* playB */,
|
||||
75A3DFAB2C588772002AEACE /* LuxADManager */,
|
||||
75FAEF2F2C3E723A00298C7D /* anniversary_Project.entitlements */,
|
||||
7596165F2C35242200363C46 /* Guidepages */,
|
||||
75C0A1F82BCD06DC00AB0094 /* header */,
|
||||
@ -489,7 +534,8 @@
|
||||
75C0A1F82BCD06DC00AB0094 /* header */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
75C0A1F92BCD06EB00AB0094 /* AV_header.h */,
|
||||
75A3DFB82C588B16002AEACE /* anniversary_Project-Bridging-Header.h */,
|
||||
7559FE5A2C58C2CF006A3D80 /* anniversaryPCH.pch */,
|
||||
);
|
||||
path = header;
|
||||
sourceTree = "<group>";
|
||||
@ -527,21 +573,6 @@
|
||||
path = waterV;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
75F3F3CE2C4CE20F00005A7E /* Player */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
75F3F3D02C4CE23200005A7E /* AV_RootPlayerVC.swift */,
|
||||
75F3F3D12C4CE23200005A7E /* AV_RootPlayerVC.xib */,
|
||||
75F3F3D42C4CE32000005A7E /* AV_AddPlayerVC.swift */,
|
||||
75F3F3D52C4CE32000005A7E /* AV_AddPlayerVC.xib */,
|
||||
75F3F3D82C4CE5F600005A7E /* AV_MinePlayerVC.swift */,
|
||||
75F3F3D92C4CE5F600005A7E /* AV_MinePlayerVC.xib */,
|
||||
75F3F3DC2C4CE6F400005A7E /* AV_WaterKeyBordPlayerVC.swift */,
|
||||
75F3F3DD2C4CE6F400005A7E /* AV_WaterKeyBordPlayerVC.xib */,
|
||||
);
|
||||
path = Player;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
75FDC0B02BCE1C56005B3D13 /* V */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@ -675,8 +706,6 @@
|
||||
755073C72C3F81B400ADFD6B /* AV_LaunchLimitesVC.xib in Resources */,
|
||||
755073C32C3F7FC200ADFD6B /* GoogleService-Info.plist in Resources */,
|
||||
759616752C353BEF00363C46 /* AV_SportsCell.xib in Resources */,
|
||||
75F3F3D32C4CE23200005A7E /* AV_RootPlayerVC.xib in Resources */,
|
||||
75F3F3D72C4CE32000005A7E /* AV_AddPlayerVC.xib in Resources */,
|
||||
754C97D12C3D0F7100A0455D /* AV_selectWeightVC.xib in Resources */,
|
||||
754835022C3D04F300AC6F8F /* AV_WaterSettingVC.xib in Resources */,
|
||||
759616712C35348A00363C46 /* AV_SportsVC.xib in Resources */,
|
||||
@ -693,9 +722,7 @@
|
||||
75C0A16D2BC789F900AB0094 /* AV_HomeVC.xib in Resources */,
|
||||
75C0A1392BC787A500AB0094 /* Main.storyboard in Resources */,
|
||||
75FDC0CD2BCF77C9005B3D13 /* AV_PivacyVC.xib in Resources */,
|
||||
75F3F3DB2C4CE5F600005A7E /* AV_MinePlayerVC.xib in Resources */,
|
||||
754C97DD2C3D2EAA00A0455D /* AV_TemperatureVC.xib in Resources */,
|
||||
75F3F3DF2C4CE6F400005A7E /* AV_WaterKeyBordPlayerVC.xib in Resources */,
|
||||
754C97D72C3D253200A0455D /* AV_selectWeightCell.xib in Resources */,
|
||||
759616632C35244A00363C46 /* AV_SelectGenderVC.xib in Resources */,
|
||||
75C4E0B12C36792900B4C170 /* AV_WaterHomeVC.xib in Resources */,
|
||||
@ -804,9 +831,10 @@
|
||||
75FAEF312C3E735800298C7D /* HealthManager.swift in Sources */,
|
||||
754835032C3D04F300AC6F8F /* AV_WaterSettingVC.swift in Sources */,
|
||||
75C0A1F72BCD027A00AB0094 /* color.swift in Sources */,
|
||||
75F3F3DA2C4CE5F600005A7E /* AV_MinePlayerVC.swift in Sources */,
|
||||
75C0A1F42BCCD48A00AB0094 /* AV_TaskCell.swift in Sources */,
|
||||
75A3DFBC2C5895D9002AEACE /* OneVC.m in Sources */,
|
||||
754C97DA2C3D258700A0455D /* weightView.swift in Sources */,
|
||||
75A3DFAF2C588772002AEACE /* LuxADSSModeVC.m in Sources */,
|
||||
75C0A1632BC7897600AB0094 /* AV_RootVC.swift in Sources */,
|
||||
754C97D42C3D1E5500A0455D /* ageView.swift in Sources */,
|
||||
753C25932C3BC46B006E2660 /* NotificationCenter.swift in Sources */,
|
||||
@ -814,28 +842,32 @@
|
||||
753C258B2C3B8272006E2660 /* AV_WaterDayCell.swift in Sources */,
|
||||
759616742C353BEF00363C46 /* AV_SportsCell.swift in Sources */,
|
||||
75C0A17A2BC791B400AB0094 /* AV_usermodel.swift in Sources */,
|
||||
75A3DFB02C588772002AEACE /* LuxADSuperVC.m in Sources */,
|
||||
75C0A1722BC78A1B00AB0094 /* AV_MineVC.swift in Sources */,
|
||||
753C25912C3BBA9D006E2660 /* AV_WaveView.swift in Sources */,
|
||||
75F3F3D22C4CE23200005A7E /* AV_RootPlayerVC.swift in Sources */,
|
||||
75A3DFAE2C588772002AEACE /* LuxADManager.m in Sources */,
|
||||
75FAEF2E2C3E5D9800298C7D /* CircularProgressBarView.swift in Sources */,
|
||||
753C259B2C3BED09006E2660 /* AV_AddWaterVCCollectionViewCell.swift in Sources */,
|
||||
75FDC0B72BCE2F37005B3D13 /* AV_DetalisVC.swift in Sources */,
|
||||
75A3DFB22C588772002AEACE /* LuxNetManager.m in Sources */,
|
||||
75FDC0B32BCE1F4F005B3D13 /* AV_CalenDarcell.swift in Sources */,
|
||||
75F3F3DE2C4CE6F400005A7E /* AV_WaterKeyBordPlayerVC.swift in Sources */,
|
||||
759616622C35244A00363C46 /* AV_SelectGenderVC.swift in Sources */,
|
||||
753C25972C3BE9D5006E2660 /* AV_AddWaterVC.swift in Sources */,
|
||||
75F3F3D62C4CE32000005A7E /* AV_AddPlayerVC.swift in Sources */,
|
||||
75A3DFBF2C5895EA002AEACE /* twoVC.m in Sources */,
|
||||
75A3DFB12C588772002AEACE /* LuxADVCControl.m in Sources */,
|
||||
754C97E22C3D453800A0455D /* AV_pagesAllVC.swift in Sources */,
|
||||
75C0A1762BC78F3300AB0094 /* WCDB.swift in Sources */,
|
||||
754C97DE2C3D2EAA00A0455D /* AV_TemperatureVC.swift in Sources */,
|
||||
754C97D22C3D0F7100A0455D /* AV_selectWeightVC.swift in Sources */,
|
||||
753C259F2C3BEFB8006E2660 /* AV_ScrollingScaleView.swift in Sources */,
|
||||
753C25A22C3BF4A1006E2660 /* MLSliderRulerView.swift in Sources */,
|
||||
75A3DFC22C5895F6002AEACE /* threeVC.m in Sources */,
|
||||
753C25A32C3BF4A1006E2660 /* MLSliderRulerScrollView.swift in Sources */,
|
||||
755073C62C3F81B400ADFD6B /* AV_LaunchLimitesVC.swift in Sources */,
|
||||
75C4E0BD2C3681A400B4C170 /* AV_AddWaterCollectionViewCell.swift in Sources */,
|
||||
75C0A16C2BC789F900AB0094 /* AV_HomeVC.swift in Sources */,
|
||||
75C0A1322BC787A400AB0094 /* AppDelegate.swift in Sources */,
|
||||
7559FE5D2C58C58D006A3D80 /* LuxADConfigure.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@ -1018,13 +1050,65 @@
|
||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||
CODE_SIGN_ENTITLEMENTS = anniversary_Project/anniversary_Project.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
CURRENT_PROJECT_VERSION = 2;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = MK2ZG9GGT4;
|
||||
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = NO;
|
||||
GCC_PREFIX_HEADER = "/Users/yihai16/Documents/纳克斯/纪念日/anniversary_Project/anniversary_Project/anniversary_Project/header/anniversaryPCH.pch";
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers\"",
|
||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/BRPickerView/BRPickerView.framework/Headers\"",
|
||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/ESTabBarController-swift/ESTabBarController_swift.framework/Headers\"",
|
||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/FSCalendar/FSCalendar.framework/Headers\"",
|
||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/FirebaseABTesting/FirebaseABTesting.framework/Headers\"",
|
||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore/FirebaseCore.framework/Headers\"",
|
||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreInternal/FirebaseCoreInternal.framework/Headers\"",
|
||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations/FirebaseInstallations.framework/Headers\"",
|
||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/FirebaseRemoteConfig/FirebaseRemoteConfig.framework/Headers\"",
|
||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/FirebaseRemoteConfigInterop/FirebaseRemoteConfigInterop.framework/Headers\"",
|
||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/FirebaseSharedSwift/FirebaseSharedSwift.framework/Headers\"",
|
||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities/GoogleUtilities.framework/Headers\"",
|
||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers\"",
|
||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/MJExtension/MJExtension.framework/Headers\"",
|
||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers\"",
|
||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC/FBLPromises.framework/Headers\"",
|
||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/RAMAnimatedTabBarController/RAMAnimatedTabBarController.framework/Headers\"",
|
||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers\"",
|
||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/SVProgressHUD/SVProgressHUD.framework/Headers\"",
|
||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers\"",
|
||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/WCDB.swift/WCDBSwift.framework/Headers\"",
|
||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/WCDBOptimizedSQLCipher/sqlcipher.framework/Headers\"",
|
||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/libwebp/libwebp.framework/Headers\"",
|
||||
"\"${PODS_CONFIGURATION_BUILD_DIR}/nanopb/nanopb.framework/Headers\"",
|
||||
"\"${PODS_ROOT}/Headers/Public\"",
|
||||
"\"${PODS_ROOT}/Headers/Public/BURelyFoundation_Global\"",
|
||||
"\"${PODS_ROOT}/Headers/Public/Firebase\"",
|
||||
"\"${PODS_XCFRAMEWORKS_BUILD_DIR}/AppLovinDSPLinkedInAdapter/Headers\"",
|
||||
"\"${PODS_XCFRAMEWORKS_BUILD_DIR}/AppLovinMediationByteDanceAdapter/Headers\"",
|
||||
"\"${PODS_XCFRAMEWORKS_BUILD_DIR}/AppLovinMediationVungleAdapter/Headers\"",
|
||||
"\"${PODS_XCFRAMEWORKS_BUILD_DIR}/BURelyFoundation_Global/AFNetworking/Headers\"",
|
||||
"\"${PODS_XCFRAMEWORKS_BUILD_DIR}/BURelyFoundation_Global/APM/Headers\"",
|
||||
"\"${PODS_XCFRAMEWORKS_BUILD_DIR}/BURelyFoundation_Global/Foundation/Headers\"",
|
||||
"\"${PODS_XCFRAMEWORKS_BUILD_DIR}/BURelyFoundation_Global/Gecko/Headers\"",
|
||||
"\"${PODS_XCFRAMEWORKS_BUILD_DIR}/BURelyFoundation_Global/Header/Headers\"",
|
||||
"\"${PODS_XCFRAMEWORKS_BUILD_DIR}/BURelyFoundation_Global/NETWork/Headers\"",
|
||||
"\"${PODS_XCFRAMEWORKS_BUILD_DIR}/BURelyFoundation_Global/SDWebImage/Headers\"",
|
||||
"\"${PODS_XCFRAMEWORKS_BUILD_DIR}/BURelyFoundation_Global/YYModel/Headers\"",
|
||||
"\"${PODS_XCFRAMEWORKS_BUILD_DIR}/BURelyFoundation_Global/ZFPlayer/Headers\"",
|
||||
"\"${PODS_XCFRAMEWORKS_BUILD_DIR}/BURelyFoundation_Global/Zip/Headers\"",
|
||||
"$(inherited)",
|
||||
"${PODS_ROOT}/Firebase/CoreOnly/Sources",
|
||||
"\"$(inherited) non-recursive\"",
|
||||
);
|
||||
INFOPLIST_FILE = anniversary_Project/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = "Watermore\n";
|
||||
INFOPLIST_KEY_NSHealthShareUsageDescription = "When we record drinking water on the home page, we need to read your health data in order to analyze your drinking habits.";
|
||||
INFOPLIST_KEY_NSHealthUpdateUsageDescription = "When we record drinking water on the home page, we need to enter your health data to record your water intake";
|
||||
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "We need to access your photo album so you can add reminders for anniversaries or birthdays";
|
||||
INFOPLIST_KEY_NSUserTrackingUsageDescription = "\"Watermore\" needs to request tracking permissions to provide a personalized advertising experience. We respect and protect your privacy and will not sell your data to third parties.";
|
||||
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
||||
INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
|
||||
INFOPLIST_KEY_UIMainStoryboardFile = Main;
|
||||
@ -1034,7 +1118,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 2.1;
|
||||
MARKETING_VERSION = 2.2;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.countdown.day.daycount;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||
@ -1042,9 +1126,14 @@
|
||||
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
|
||||
SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "$(SRCROOT)/anniversary_Project/header/AV_header.h";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "/Users/yihai16/Documents/纳克斯/纪念日/anniversary_Project/anniversary_Project/anniversary_Project/header/anniversary_Project-Bridging-Header.h";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
USER_HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(SRCROOT)/libwebp/src",
|
||||
"\"${PODS_ROOT} recursive\"",
|
||||
);
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
@ -1056,13 +1145,19 @@
|
||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||
CODE_SIGN_ENTITLEMENTS = anniversary_Project/anniversary_Project.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
CURRENT_PROJECT_VERSION = 2;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = MK2ZG9GGT4;
|
||||
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = NO;
|
||||
GCC_PREFIX_HEADER = "/Users/yihai16/Documents/纳克斯/纪念日/anniversary_Project/anniversary_Project/anniversary_Project/header/anniversaryPCH.pch";
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_FILE = anniversary_Project/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = "Watermore\n";
|
||||
INFOPLIST_KEY_NSHealthShareUsageDescription = "When we record drinking water on the home page, we need to read your health data in order to analyze your drinking habits.";
|
||||
INFOPLIST_KEY_NSHealthUpdateUsageDescription = "When we record drinking water on the home page, we need to enter your health data to record your water intake";
|
||||
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "We need to access your photo album so you can add reminders for anniversaries or birthdays";
|
||||
INFOPLIST_KEY_NSUserTrackingUsageDescription = "\"Watermore\" needs to request tracking permissions to provide a personalized advertising experience. We respect and protect your privacy and will not sell your data to third parties.";
|
||||
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
||||
INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
|
||||
INFOPLIST_KEY_UIMainStoryboardFile = Main;
|
||||
@ -1072,7 +1167,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 2.1;
|
||||
MARKETING_VERSION = 2.2;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.countdown.day.daycount;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||
@ -1080,9 +1175,14 @@
|
||||
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
|
||||
SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "$(SRCROOT)/anniversary_Project/header/AV_header.h";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "/Users/yihai16/Documents/纳克斯/纪念日/anniversary_Project/anniversary_Project/anniversary_Project/header/anniversary_Project-Bridging-Header.h";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
USER_HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(SRCROOT)/libwebp/src",
|
||||
"\"${PODS_ROOT} recursive\"",
|
||||
);
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
|
||||
@ -550,7 +550,9 @@ extension AV_AddVC: MAAdDelegate
|
||||
{
|
||||
func createInterstitialAd()
|
||||
{
|
||||
interstitialAd = MAInterstitialAd(adUnitIdentifier: "8fccdfa964b52e26")
|
||||
|
||||
let randomString = getRandomString()
|
||||
interstitialAd = MAInterstitialAd(adUnitIdentifier: randomString ?? "8fccdfa964b52e26")
|
||||
interstitialAd.delegate = self
|
||||
|
||||
// Load the first ad
|
||||
|
||||
@ -18,60 +18,19 @@ import Alamofire
|
||||
class AppDelegate: UIResponder, UIApplicationDelegate,UNUserNotificationCenterDelegate {
|
||||
|
||||
var window: UIWindow?
|
||||
let hasLaunchedBeforeKey = "hasLaunchedBefore"
|
||||
|
||||
|
||||
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
|
||||
FirebaseApp.configure()
|
||||
|
||||
// window = UIWindow()
|
||||
// window?.frame = UIScreen.main.bounds
|
||||
IQKeyboardManager.shared.enable = true
|
||||
self.window?.frame = UIScreen.main.bounds
|
||||
UNUserNotificationCenter.current().delegate = self
|
||||
// let vc = AV_RootTabbarVC()
|
||||
// self.window?.rootViewController = AV_NAVVC(rootViewController: vc)
|
||||
|
||||
let userDefaults = UserDefaults.standard
|
||||
let initConfig = ALSdkInitializationConfiguration(sdkKey: "NLQHJDx4rcfd5IqhZf9nad2tIqFSH8SSKP3DXD18sTKUvV6tBfrH9_RPCGb6hvEn3NPXJDmUQCnvnKgHIT7Qn4") { builder in
|
||||
builder.mediationProvider = ALMediationProviderMAX
|
||||
}
|
||||
LuxADConfigure.shareInstance().checkATT()
|
||||
LuxADConfigure.shareInstance().configureADByFirebase(with: self.window!)
|
||||
|
||||
if userDefaults.bool(forKey: hasLaunchedBeforeKey) {
|
||||
// let vc = AV_LaunchLimitesVC()
|
||||
if userDefaults.bool(forKey: "iswindows"){
|
||||
// 不是第一次启动
|
||||
let vc = AV_RootPlayerVC()
|
||||
self.window?.rootViewController = AV_NAVVC(rootViewController: vc)
|
||||
ALSdk.shared().initialize(with: initConfig) { sdkConfig in
|
||||
// Start loading ads
|
||||
|
||||
}
|
||||
}else{
|
||||
// 不是第一次启动
|
||||
let vc = AV_LaunchLimitesVC()
|
||||
self.window?.rootViewController = AV_NAVVC(rootViewController: vc)
|
||||
ALSdk.shared().initialize(with: initConfig) { sdkConfig in
|
||||
// Start loading ads
|
||||
vc.createInterstitialAd()
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// self.window?.rootViewController = AV_NAVVC(rootViewController: vc)
|
||||
} else {
|
||||
// 第一次启动
|
||||
let vc = AV_SelectGenderVC()
|
||||
self.window?.rootViewController = AV_NAVVC(rootViewController: vc)
|
||||
userDefaults.set(true, forKey: hasLaunchedBeforeKey)
|
||||
|
||||
setdispatch()
|
||||
stePermissions()
|
||||
let currentDate = Date()
|
||||
// 使用 UserDefaults 存储日期
|
||||
let defaults = UserDefaults.standard
|
||||
defaults.set(currentDate, forKey: "savedDate")
|
||||
|
||||
ALSdk.shared().initialize(with: initConfig) { sdkConfig in
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
setdispatch()
|
||||
stePermissions()
|
||||
|
||||
self.window?.makeKeyAndVisible()
|
||||
|
||||
@ -83,10 +42,27 @@ class AppDelegate: UIResponder, UIApplicationDelegate,UNUserNotificationCenterDe
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
|
||||
// 当应用将要进入前台时调用(从后台到前台的过渡)
|
||||
func applicationWillEnterForeground(_ application: UIApplication) {
|
||||
|
||||
}
|
||||
|
||||
// 当应用已经进入前台并变为活跃状态时调用
|
||||
func applicationDidBecomeActive(_ application: UIApplication) {
|
||||
|
||||
LuxADManager.shareInstance().showOpenAD()
|
||||
}
|
||||
|
||||
|
||||
|
||||
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
|
||||
completionHandler([.alert, .sound, .badge])
|
||||
}
|
||||
|
||||
|
||||
|
||||
func stePermissions(){
|
||||
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in
|
||||
if granted {
|
||||
|
||||
@ -275,7 +275,8 @@ extension AV_DetalisVC: MAAdDelegate
|
||||
{
|
||||
func createInterstitialAd()
|
||||
{
|
||||
interstitialAd = MAInterstitialAd(adUnitIdentifier: "7baed02646413e44")
|
||||
let randomString = getRandomString()
|
||||
interstitialAd = MAInterstitialAd(adUnitIdentifier: randomString ?? "7baed02646413e44")
|
||||
interstitialAd.delegate = self
|
||||
|
||||
// Load the first ad
|
||||
|
||||
@ -318,7 +318,8 @@ extension AV_AddWaterVC: MAAdDelegate
|
||||
{
|
||||
func createInterstitialAd()
|
||||
{
|
||||
interstitialAd = MAInterstitialAd(adUnitIdentifier: "2e66a808a4251e3a")
|
||||
let randomString = getRandomString()
|
||||
interstitialAd = MAInterstitialAd(adUnitIdentifier: randomString ?? "2e66a808a4251e3a")
|
||||
interstitialAd.delegate = self
|
||||
|
||||
// Load the first ad
|
||||
|
||||
@ -39,6 +39,8 @@ class AV_WaterSettingVC: AV_RootVC {
|
||||
var timer: Timer?
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
// [LuxADManager configureSecureClick:self.view];
|
||||
LuxADManager.configureSecureClick(self.view)
|
||||
sersionV.layer.cornerRadius = 28
|
||||
|
||||
waterbgView.layer.cornerRadius = 28
|
||||
@ -108,32 +110,7 @@ class AV_WaterSettingVC: AV_RootVC {
|
||||
|
||||
|
||||
@IBAction func version(_ sender: Any) {
|
||||
// 增加点击计数
|
||||
tapCount += 1
|
||||
|
||||
// 如果计数器为空,启动一个定时器
|
||||
if timer == nil {
|
||||
timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(resetTapCount), userInfo: nil, repeats: false)
|
||||
}
|
||||
|
||||
// 检查是否点击了三次
|
||||
if tapCount == 6 {
|
||||
// 执行你想要的操作
|
||||
print("连点6下")
|
||||
|
||||
let appDelegate = UIApplication.shared.delegate
|
||||
appDelegate?.window??.rootViewController = AV_NAVVC(rootViewController: AV_RootPlayerVC())
|
||||
// UserDefaults.standard.set(true, forKey: "iswindows")
|
||||
UserDefaults.standard.set(true, forKey: "iswindows")
|
||||
|
||||
|
||||
resetTapCount()
|
||||
}
|
||||
}
|
||||
@objc func resetTapCount() {
|
||||
// 重置计数器和定时器
|
||||
tapCount = 0
|
||||
timer?.invalidate()
|
||||
timer = nil
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -2,14 +2,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>NSUserTrackingUsageDescription</key>
|
||||
<string>"Watermore" needs to request tracking permissions to provide a personalized advertising experience. We respect and protect your privacy and will not sell your data to third parties.</string>
|
||||
<key>ALSdkInitializationConfiguration</key>
|
||||
<string>NLQHJDx4rcfd5IqhZf9nad2tIqFSH8SSKP3DXD18sTKUvV6tBfrH9_RPCGb6hvEn3NPXJDmUQCnvnKgHIT7Qn4</string>
|
||||
<key>NSHealthShareUsageDescription</key>
|
||||
<string>When we record drinking water on the home page, we need to read your health data in order to analyze your drinking habits.</string>
|
||||
<key>NSHealthUpdateUsageDescription</key>
|
||||
<string>When we record drinking water on the home page, we need to enter your health data to record your water intake</string>
|
||||
<key>FirebaseAutomaticScreenReportingEnabled</key>
|
||||
<string>NO</string>
|
||||
<key>NSAppTransportSecurity</key>
|
||||
|
||||
@ -406,7 +406,8 @@ extension AV_MineVC: MAAdDelegate
|
||||
{
|
||||
func createInterstitialAd()
|
||||
{
|
||||
interstitialAd = MAInterstitialAd(adUnitIdentifier: "bee9f7039e56cc7a")
|
||||
let randomString = getRandomString()
|
||||
interstitialAd = MAInterstitialAd(adUnitIdentifier: randomString ?? "bee9f7039e56cc7a")
|
||||
interstitialAd.delegate = self
|
||||
|
||||
// Load the first ad
|
||||
|
||||
@ -1,262 +0,0 @@
|
||||
//
|
||||
// AV_AddPlayerVC.swift
|
||||
// anniversary_Project
|
||||
//
|
||||
// Created by 忆海16 on 2024/7/21.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
import AppLovinSDK
|
||||
import Alamofire
|
||||
import FirebaseRemoteConfig
|
||||
|
||||
|
||||
|
||||
class AV_AddPlayerVC: AV_RootVC {
|
||||
|
||||
var retryAttempt = 0.0
|
||||
var interstitialAd: MAInterstitialAd!
|
||||
var adCheckTimer: Timer?
|
||||
var adCheckStartTime: Date?
|
||||
var adLoadTime: Int = 0
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
|
||||
startAdCheck()
|
||||
}
|
||||
override func viewWillAppear(_ animated: Bool) {
|
||||
super.viewWillAppear(animated)
|
||||
self.navigationController?.navigationBar.isHidden = true
|
||||
|
||||
}
|
||||
///定时加载
|
||||
func startAdCheck() {
|
||||
|
||||
adCheckStartTime = Date()
|
||||
adCheckTimer = Timer.scheduledTimer(timeInterval: 0.01, target: self, selector: #selector(checkAdStatus), userInfo: nil, repeats: true)
|
||||
}
|
||||
|
||||
@objc func checkAdStatus() {
|
||||
let elapsedTime = Date().timeIntervalSince(adCheckStartTime!)
|
||||
let elapsedTimeInMilliseconds = Int(elapsedTime * 1000)
|
||||
|
||||
if interstitialAd.isReady {
|
||||
interstitialAd.show()
|
||||
adLoadTime = elapsedTimeInMilliseconds // 记录加载
|
||||
adCheckTimer?.invalidate()
|
||||
setShow()
|
||||
|
||||
} else if elapsedTimeInMilliseconds >= 10000 { // 10000 毫秒 = 10 秒
|
||||
adCheckTimer?.invalidate()
|
||||
self.navigationController?.popViewController(animated: true)
|
||||
|
||||
} else {
|
||||
print("广告未准备好,继续检查...")
|
||||
}
|
||||
}
|
||||
|
||||
func setPostload(){
|
||||
let url = "http://111.9.47.226:38080/top_selection/save_ad_load_log"
|
||||
let parameters:[String : Any] = [
|
||||
"deviceId": StartManager.shared.devicID ?? "",
|
||||
"localIp": StartManager.shared.localIP ?? "",
|
||||
"remoteIp": StartManager.shared.publicIP ?? "",
|
||||
"linkId": "",
|
||||
"packageName": "com.countdown.day.daycount",
|
||||
"gaid": StartManager.shared.idfaid ?? "",
|
||||
"dataId": "",
|
||||
"shelfNumber":"日历添加和返回",
|
||||
"succeed": StartManager.shared.succeed,
|
||||
"loadTime": "",
|
||||
"adPlatform": StartManager.shared.adPlatform ?? "",
|
||||
"countryCode": StartManager.shared.countryCode ?? "",
|
||||
"adId": StartManager.shared.adId ?? "",
|
||||
"platformResponseTime": StartManager.shared.platformResponseTime ?? "",
|
||||
"getIpResponseTime": StartManager.shared.getIpResponseTime ?? "",
|
||||
"ecpm": StartManager.shared.ecpm ?? "",
|
||||
"dsp": StartManager.shared.dsp ?? "",
|
||||
"network": StartManager.shared.network ?? "",
|
||||
"showStatus": 0,
|
||||
"washParam": true,
|
||||
]
|
||||
|
||||
|
||||
let headers: HTTPHeaders = [
|
||||
"Content-Type": "application/json"
|
||||
]
|
||||
|
||||
NetworkManager.shared.postRequest(url: url, parameters: parameters, headers: headers) { result in
|
||||
switch result {
|
||||
case .success(let data):
|
||||
print("Response:--- \(data)")
|
||||
case .failure(let error):
|
||||
print("Error:--- \(error)")
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
func setPostSHOW(){
|
||||
let url = "http://111.9.47.226:38080/top_selection/save_ad_show_log"
|
||||
let parameters:[String : Any] = [
|
||||
"deviceId": StartManager.shared.devicID ?? "",
|
||||
"localIp": StartManager.shared.localIP ?? "",
|
||||
"remoteIp": StartManager.shared.publicIP ?? "",
|
||||
"linkId": "",
|
||||
"packageName": "com.countdown.day.daycount",
|
||||
"gaid": StartManager.shared.idfaid ?? "",
|
||||
"dataId": "",
|
||||
"shelfNumber":"日历添加和返回",
|
||||
"succeed": StartManager.shared.succeed,
|
||||
"loadTime": "",
|
||||
"adPlatform": StartManager.shared.adPlatform ?? "",
|
||||
"countryCode": StartManager.shared.countryCode ?? "",
|
||||
"adId": StartManager.shared.adId ?? "",
|
||||
"platformResponseTime": StartManager.shared.platformResponseTime ?? "",
|
||||
"getIpResponseTime": StartManager.shared.getIpResponseTime ?? "",
|
||||
"ecpm": StartManager.shared.ecpm ?? "",
|
||||
"dsp": StartManager.shared.dsp ?? "",
|
||||
"network": StartManager.shared.network ?? "",
|
||||
]
|
||||
|
||||
|
||||
let headers: HTTPHeaders = [
|
||||
"Content-Type": "application/json"
|
||||
]
|
||||
|
||||
NetworkManager.shared.postRequest(url: url, parameters: parameters, headers: headers) { result in
|
||||
switch result {
|
||||
case .success(let data):
|
||||
print("Response:--- \(data)")
|
||||
|
||||
case .failure(let error):
|
||||
print("Error:--- \(error)")
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// func setshow(){
|
||||
// let parameters:[String : Any] = [
|
||||
// "appid": "com.countdown.day.daycount",
|
||||
// "idfa":StartManager.shared.idfaid ?? "",
|
||||
// "id":StartManager.shared.idOneAD,
|
||||
// "ecpm":StartManager.shared.idOneprice ?? "",
|
||||
//
|
||||
// ]
|
||||
// NetworkManager.shared.postRequest(url: StartManager.shared.showurl, parameters: parameters, headers: StartManager.shared.headers) { result in
|
||||
// switch result {
|
||||
// case .success(let data):
|
||||
// print("Response:--- \(data)")
|
||||
// if let status = data["status"] as? String, status == "Success" {
|
||||
// if let needLoad = data["close"] as? Int {
|
||||
// let seconds = millisecondsToSeconds(milliseconds: needLoad)
|
||||
//
|
||||
// DispatchQueue.main.asyncAfter(wallDeadline: .now() + seconds) {
|
||||
// closeADWindow()
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// case .failure(let error):
|
||||
// print("Error:--- \(error)")
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
func setShow() {
|
||||
let idfa = StartManager.shared.idfaid
|
||||
let adId = StartManager.shared.idOneAD
|
||||
let ecpm = StartManager.shared.idOneprice
|
||||
|
||||
AdLoader.shared.showAd(idfa: idfa, adId: adId, ecpm: ecpm) { result in
|
||||
switch result {
|
||||
case .success(let closeTime): break
|
||||
// let seconds = millisecondsToSeconds(milliseconds: closeTime)
|
||||
// DispatchQueue.main.asyncAfter(deadline: .now() + seconds) {
|
||||
// closeADWindow()
|
||||
// }
|
||||
case .failure(let error):
|
||||
print("Error:--- \(error)")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extension AV_AddPlayerVC: MAAdDelegate
|
||||
{
|
||||
func createInterstitialAd()
|
||||
{
|
||||
interstitialAd = MAInterstitialAd(adUnitIdentifier: "bee9f7039e56cc7a")
|
||||
interstitialAd.delegate = self
|
||||
|
||||
// Load the first ad
|
||||
interstitialAd.load()
|
||||
|
||||
|
||||
}
|
||||
|
||||
// MARK: MAAdDelegate Protocol
|
||||
|
||||
func didLoad(_ ad: MAAd)
|
||||
{
|
||||
// Interstitial ad is ready to be shown. 'interstitialAd.isReady' will now return 'true'
|
||||
|
||||
// Reset retry attempt
|
||||
retryAttempt = 0
|
||||
StartManager.shared.succeed = true
|
||||
// StartManager.shared.loadTime = self.adLoadTime
|
||||
StartManager.shared.adPlatform = "MAX"
|
||||
StartManager.shared.countryCode = ALSdk.shared().configuration.countryCode
|
||||
StartManager.shared.adId = "bee9f7039e56cc7a"
|
||||
StartManager.shared.platformResponseTime = ad.requestLatency
|
||||
StartManager.shared.ecpm = Float(ad.revenue)
|
||||
StartManager.shared.dsp = ad.dspName
|
||||
StartManager.shared.network = ad.networkName
|
||||
|
||||
|
||||
StartManager.shared.idOneprice = Float(ad.revenue)
|
||||
print("----idOne\(Float(ad.revenue))")
|
||||
setPostload()
|
||||
}
|
||||
|
||||
func didFailToLoadAd(forAdUnitIdentifier adUnitIdentifier: String, withError error: MAError)
|
||||
{
|
||||
// Interstitial ad failed to load
|
||||
// We recommend retrying with exponentially higher delays up to a maximum delay (in this case 64 seconds)
|
||||
|
||||
retryAttempt += 1
|
||||
let delaySec = pow(2.0, min(6.0, retryAttempt))
|
||||
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + delaySec) {
|
||||
self.interstitialAd.load()
|
||||
}
|
||||
}
|
||||
|
||||
func didDisplay(_ ad: MAAd)
|
||||
{
|
||||
// Pause your app's background audio
|
||||
}
|
||||
|
||||
func didClick(_ ad: MAAd) {}
|
||||
|
||||
func didHide(_ ad: MAAd)
|
||||
{
|
||||
// Resume your app's background audio
|
||||
// Interstitial ad is hidden. Pre-load the next ad
|
||||
interstitialAd.load()
|
||||
self.navigationController?.popViewController(animated: true)
|
||||
|
||||
}
|
||||
|
||||
func didFail(toDisplay ad: MAAd, withError error: MAError)
|
||||
{
|
||||
// Interstitial ad failed to display. We recommend loading the next ad
|
||||
interstitialAd.load()
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -1,312 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
||||
<device id="retina6_12" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22684"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="AV_AddPlayerVC" customModule="anniversary_Project" customModuleProvider="target">
|
||||
<connections>
|
||||
<outlet property="view" destination="qDC-9l-7PF" id="IKj-TM-MmC"/>
|
||||
</connections>
|
||||
</placeholder>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="qDC-9l-7PF">
|
||||
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="n6J-yx-epl">
|
||||
<rect key="frame" x="20" y="59" width="40" height="40"/>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<state key="normal" image="dismiss"/>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Z0D-nd-DIT">
|
||||
<rect key="frame" x="333" y="59" width="40" height="40"/>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<state key="normal" image="sure"/>
|
||||
</button>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Add reminder" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="06P-1H-cmI">
|
||||
<rect key="frame" x="146" y="69.333333333333329" width="101" height="19.333333333333329"/>
|
||||
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
|
||||
<color key="textColor" red="0.1726125181" green="0.17237710949999999" blue="0.1803931892" alpha="1" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" distribution="equalCentering" alignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="62B-Sg-TVT">
|
||||
<rect key="frame" x="22" y="128.66666666666666" width="349" height="129.99999999999997"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="0Mj-Jw-ycP">
|
||||
<rect key="frame" x="0.0" y="0.0" width="96" height="130"/>
|
||||
<subviews>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="schedule_n" translatesAutoresizingMaskIntoConstraints="NO" id="vIO-Ye-Fgt">
|
||||
<rect key="frame" x="32" y="38" width="32" height="32"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="32" id="OJh-fD-gNm"/>
|
||||
<constraint firstAttribute="width" constant="32" id="T2m-LC-uF2"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Schedule" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bSb-nb-DTE">
|
||||
<rect key="frame" x="18.666666666666664" y="82" width="58.999999999999993" height="15.666666666666671"/>
|
||||
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="13"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ODp-EI-nJ1">
|
||||
<rect key="frame" x="0.0" y="0.0" width="96" height="130"/>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstItem="ODp-EI-nJ1" firstAttribute="leading" secondItem="0Mj-Jw-ycP" secondAttribute="leading" id="Heu-1t-g5n"/>
|
||||
<constraint firstItem="vIO-Ye-Fgt" firstAttribute="top" secondItem="0Mj-Jw-ycP" secondAttribute="top" constant="38" id="JMF-bJ-WF4"/>
|
||||
<constraint firstItem="ODp-EI-nJ1" firstAttribute="top" secondItem="0Mj-Jw-ycP" secondAttribute="top" id="MFg-sQ-OlO"/>
|
||||
<constraint firstAttribute="trailing" secondItem="ODp-EI-nJ1" secondAttribute="trailing" id="VaB-lm-FlG"/>
|
||||
<constraint firstAttribute="width" constant="96" id="WX1-Wb-CV4"/>
|
||||
<constraint firstAttribute="height" constant="130" id="hi4-cP-m9w"/>
|
||||
<constraint firstItem="bSb-nb-DTE" firstAttribute="top" secondItem="vIO-Ye-Fgt" secondAttribute="bottom" constant="12" id="sNg-B6-cfT"/>
|
||||
<constraint firstAttribute="bottom" secondItem="ODp-EI-nJ1" secondAttribute="bottom" id="tKB-TZ-jVT"/>
|
||||
<constraint firstItem="vIO-Ye-Fgt" firstAttribute="centerX" secondItem="0Mj-Jw-ycP" secondAttribute="centerX" id="v1U-DG-Be1"/>
|
||||
<constraint firstItem="bSb-nb-DTE" firstAttribute="centerX" secondItem="0Mj-Jw-ycP" secondAttribute="centerX" id="wbl-Wl-4xe"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="z9M-ct-ldV">
|
||||
<rect key="frame" x="126.66666666666666" y="0.0" width="96" height="130"/>
|
||||
<subviews>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="birthday_n" translatesAutoresizingMaskIntoConstraints="NO" id="dF9-6R-Rob">
|
||||
<rect key="frame" x="32" y="38" width="32" height="32"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="32" id="D8c-ni-WQU"/>
|
||||
<constraint firstAttribute="height" constant="32" id="U80-EF-FYk"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Birthday" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="KJ9-iT-FHA">
|
||||
<rect key="frame" x="20.999999999999996" y="82" width="53.666666666666657" height="15.666666666666671"/>
|
||||
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="13"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="KEx-cQ-Khf">
|
||||
<rect key="frame" x="0.0" y="0.0" width="96" height="130"/>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstItem="KJ9-iT-FHA" firstAttribute="centerX" secondItem="z9M-ct-ldV" secondAttribute="centerX" id="5U2-Tf-oVn"/>
|
||||
<constraint firstAttribute="width" constant="96" id="B9D-pu-BCe"/>
|
||||
<constraint firstItem="KJ9-iT-FHA" firstAttribute="top" secondItem="dF9-6R-Rob" secondAttribute="bottom" constant="12" id="Qjx-fo-GcJ"/>
|
||||
<constraint firstAttribute="height" constant="130" id="Swc-Gp-GkZ"/>
|
||||
<constraint firstItem="KEx-cQ-Khf" firstAttribute="top" secondItem="z9M-ct-ldV" secondAttribute="top" id="d3H-LN-OUG"/>
|
||||
<constraint firstItem="dF9-6R-Rob" firstAttribute="centerX" secondItem="z9M-ct-ldV" secondAttribute="centerX" id="g0e-ww-VBc"/>
|
||||
<constraint firstAttribute="bottom" secondItem="KEx-cQ-Khf" secondAttribute="bottom" id="jNZ-Hb-m8B"/>
|
||||
<constraint firstAttribute="trailing" secondItem="KEx-cQ-Khf" secondAttribute="trailing" id="pF1-Gq-RTQ"/>
|
||||
<constraint firstItem="KEx-cQ-Khf" firstAttribute="leading" secondItem="z9M-ct-ldV" secondAttribute="leading" id="xzr-WD-0gP"/>
|
||||
<constraint firstItem="dF9-6R-Rob" firstAttribute="top" secondItem="z9M-ct-ldV" secondAttribute="top" constant="38" id="yKr-DL-GpO"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="l1c-qe-nQ7">
|
||||
<rect key="frame" x="253" y="0.0" width="96" height="130"/>
|
||||
<subviews>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="memor_n" translatesAutoresizingMaskIntoConstraints="NO" id="hLk-8B-7Qx">
|
||||
<rect key="frame" x="32" y="38" width="32" height="32"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="32" id="B7m-Hh-v6O"/>
|
||||
<constraint firstAttribute="height" constant="32" id="dze-1K-s7v"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Memory " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jM7-Ba-Cap">
|
||||
<rect key="frame" x="20.666666666666686" y="82" width="55" height="15.666666666666671"/>
|
||||
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="13"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="FYk-df-y3A">
|
||||
<rect key="frame" x="0.0" y="0.0" width="96" height="130"/>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstItem="hLk-8B-7Qx" firstAttribute="centerX" secondItem="l1c-qe-nQ7" secondAttribute="centerX" id="0nA-C5-lal"/>
|
||||
<constraint firstItem="FYk-df-y3A" firstAttribute="top" secondItem="l1c-qe-nQ7" secondAttribute="top" id="3fo-rp-lyg"/>
|
||||
<constraint firstItem="FYk-df-y3A" firstAttribute="leading" secondItem="l1c-qe-nQ7" secondAttribute="leading" id="6je-Ww-ekQ"/>
|
||||
<constraint firstAttribute="bottom" secondItem="FYk-df-y3A" secondAttribute="bottom" id="7bw-Xb-47z"/>
|
||||
<constraint firstAttribute="height" constant="130" id="DPi-so-De7"/>
|
||||
<constraint firstAttribute="width" constant="96" id="V2s-bA-gP8"/>
|
||||
<constraint firstAttribute="trailing" secondItem="FYk-df-y3A" secondAttribute="trailing" id="VI1-9U-keX"/>
|
||||
<constraint firstItem="jM7-Ba-Cap" firstAttribute="top" secondItem="hLk-8B-7Qx" secondAttribute="bottom" constant="12" id="Z2g-4t-fGQ"/>
|
||||
<constraint firstItem="hLk-8B-7Qx" firstAttribute="top" secondItem="l1c-qe-nQ7" secondAttribute="top" constant="38" id="jjW-1r-VFM"/>
|
||||
<constraint firstItem="jM7-Ba-Cap" firstAttribute="centerX" secondItem="l1c-qe-nQ7" secondAttribute="centerX" id="ype-6a-2N1"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="130" id="AeS-KR-E42"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<label opaque="NO" userInteractionEnabled="NO" alpha="0.5" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Tittle" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="pGB-09-0UG">
|
||||
<rect key="frame" x="30.000000000000004" y="290.66666666666669" width="33.333333333333343" height="17"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Enter the event you wish to commemorate" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="v4y-lu-aPM">
|
||||
<rect key="frame" x="30" y="317.66666666666669" width="333" height="40"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="40" id="ob5-Fc-f4r"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<textInputTraits key="textInputTraits"/>
|
||||
</textField>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="HxZ-0L-y70">
|
||||
<rect key="frame" x="30" y="357.66666666666669" width="333" height="1"/>
|
||||
<color key="backgroundColor" red="0.91012281179999999" green="0.91294866799999996" blue="0.94902449850000004" alpha="1" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="1" id="BJd-Q6-6l2"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<label opaque="NO" userInteractionEnabled="NO" alpha="0.5" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Date" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="huf-f0-p7d">
|
||||
<rect key="frame" x="30" y="381.66666666666669" width="30.333333333333329" height="17"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<textField opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Select date" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="E7Z-tC-ghI">
|
||||
<rect key="frame" x="30" y="408.66666666666669" width="263" height="40"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="40" id="3rt-5b-y1F"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<textInputTraits key="textInputTraits"/>
|
||||
</textField>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="urf-0T-k9I">
|
||||
<rect key="frame" x="30" y="448.66666666666669" width="333" height="1"/>
|
||||
<color key="backgroundColor" red="0.91012281179999999" green="0.91294866799999996" blue="0.94902449850000004" alpha="1" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="1" id="FeH-DO-ea7"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="date" translatesAutoresizingMaskIntoConstraints="NO" id="aVL-G1-FSd">
|
||||
<rect key="frame" x="343" y="418.66666666666669" width="20" height="20"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="20" id="5uT-rD-Ogk"/>
|
||||
<constraint firstAttribute="width" constant="20" id="MPF-VC-yIv"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="H3H-Pr-pcz">
|
||||
<rect key="frame" x="30" y="398.66666666666669" width="333" height="50"/>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
</button>
|
||||
<label opaque="NO" userInteractionEnabled="NO" alpha="0.5" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Remind" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="t5D-5d-BNq">
|
||||
<rect key="frame" x="29.999999999999996" y="472.66666666666669" width="48.666666666666657" height="17"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Whether to remind" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Q5d-zZ-Jmy">
|
||||
<rect key="frame" x="30" y="505.66666666666669" width="139" height="19.333333333333314"/>
|
||||
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="16"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="IcB-Lq-NPV">
|
||||
<rect key="frame" x="314" y="500" width="51" height="31"/>
|
||||
<color key="onTintColor" red="0.36363440749999998" green="0.56800788639999999" blue="0.96867018940000005" alpha="1" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
</switch>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="yPc-5n-sTV">
|
||||
<rect key="frame" x="30" y="541" width="333" height="1"/>
|
||||
<color key="backgroundColor" red="0.91012281179999999" green="0.91294866799999996" blue="0.94902449850000004" alpha="1" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="1" id="tAr-ma-JzT"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<label opaque="NO" userInteractionEnabled="NO" alpha="0.5" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Photo" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="R3u-6B-S9a">
|
||||
<rect key="frame" x="30" y="565" width="38" height="17"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="camera" translatesAutoresizingMaskIntoConstraints="NO" id="c87-3t-7dg">
|
||||
<rect key="frame" x="30" y="598" width="100" height="100"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="100" id="igV-0b-Dch"/>
|
||||
<constraint firstAttribute="width" constant="100" id="msW-YI-TqG"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="BZx-YU-FlX">
|
||||
<rect key="frame" x="110" y="598" width="20" height="22"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="20" id="KE2-jd-iCk"/>
|
||||
<constraint firstAttribute="height" constant="22" id="sh6-PZ-gPB"/>
|
||||
</constraints>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<state key="normal" image="delete"/>
|
||||
</button>
|
||||
</subviews>
|
||||
<viewLayoutGuide key="safeArea" id="QGI-xJ-sqp"/>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
<constraints>
|
||||
<constraint firstItem="QGI-xJ-sqp" firstAttribute="trailing" secondItem="IcB-Lq-NPV" secondAttribute="trailing" constant="30" id="10X-M3-X5R"/>
|
||||
<constraint firstItem="E7Z-tC-ghI" firstAttribute="top" secondItem="huf-f0-p7d" secondAttribute="bottom" constant="10" id="3pt-pF-kmN"/>
|
||||
<constraint firstItem="06P-1H-cmI" firstAttribute="centerY" secondItem="n6J-yx-epl" secondAttribute="centerY" id="5ek-iE-pnV"/>
|
||||
<constraint firstAttribute="trailing" secondItem="H3H-Pr-pcz" secondAttribute="trailing" constant="30" id="8mf-Js-Gq3"/>
|
||||
<constraint firstItem="v4y-lu-aPM" firstAttribute="top" secondItem="pGB-09-0UG" secondAttribute="bottom" constant="10" id="ByI-OH-Srv"/>
|
||||
<constraint firstItem="t5D-5d-BNq" firstAttribute="top" secondItem="urf-0T-k9I" secondAttribute="bottom" constant="23" id="Cba-ky-zxv"/>
|
||||
<constraint firstItem="aVL-G1-FSd" firstAttribute="centerY" secondItem="E7Z-tC-ghI" secondAttribute="centerY" id="Fc9-Tj-zUF"/>
|
||||
<constraint firstItem="n6J-yx-epl" firstAttribute="top" secondItem="QGI-xJ-sqp" secondAttribute="top" id="GuP-rg-nub"/>
|
||||
<constraint firstItem="c87-3t-7dg" firstAttribute="leading" secondItem="QGI-xJ-sqp" secondAttribute="leading" constant="30" id="HHh-xt-fx9"/>
|
||||
<constraint firstItem="HxZ-0L-y70" firstAttribute="top" secondItem="v4y-lu-aPM" secondAttribute="bottom" id="HQn-3C-eN1"/>
|
||||
<constraint firstItem="yPc-5n-sTV" firstAttribute="leading" secondItem="qDC-9l-7PF" secondAttribute="leading" constant="30" id="HnH-6O-DQu"/>
|
||||
<constraint firstItem="Q5d-zZ-Jmy" firstAttribute="top" secondItem="t5D-5d-BNq" secondAttribute="bottom" constant="16" id="JFg-im-boC"/>
|
||||
<constraint firstItem="huf-f0-p7d" firstAttribute="leading" secondItem="QGI-xJ-sqp" secondAttribute="leading" constant="30" id="Jh8-xx-iqO"/>
|
||||
<constraint firstItem="QGI-xJ-sqp" firstAttribute="trailing" secondItem="Z0D-nd-DIT" secondAttribute="trailing" constant="20" id="Jhe-7o-J9Q"/>
|
||||
<constraint firstItem="62B-Sg-TVT" firstAttribute="top" secondItem="06P-1H-cmI" secondAttribute="bottom" constant="40" id="K0o-4J-bFs"/>
|
||||
<constraint firstItem="R3u-6B-S9a" firstAttribute="leading" secondItem="QGI-xJ-sqp" secondAttribute="leading" constant="30" id="KXV-yP-hMf"/>
|
||||
<constraint firstItem="yPc-5n-sTV" firstAttribute="top" secondItem="IcB-Lq-NPV" secondAttribute="bottom" constant="10" id="M9f-kr-sBM"/>
|
||||
<constraint firstItem="HxZ-0L-y70" firstAttribute="leading" secondItem="QGI-xJ-sqp" secondAttribute="leading" constant="30" id="R4J-Gt-FRd"/>
|
||||
<constraint firstItem="BZx-YU-FlX" firstAttribute="leading" secondItem="c87-3t-7dg" secondAttribute="trailing" constant="-20" id="Ryd-rV-5T7"/>
|
||||
<constraint firstItem="v4y-lu-aPM" firstAttribute="leading" secondItem="QGI-xJ-sqp" secondAttribute="leading" constant="30" id="ToQ-pT-2RG"/>
|
||||
<constraint firstItem="urf-0T-k9I" firstAttribute="top" secondItem="H3H-Pr-pcz" secondAttribute="bottom" id="U5r-my-ZRk"/>
|
||||
<constraint firstItem="H3H-Pr-pcz" firstAttribute="top" secondItem="huf-f0-p7d" secondAttribute="bottom" id="VBe-h3-K0S"/>
|
||||
<constraint firstItem="urf-0T-k9I" firstAttribute="leading" secondItem="qDC-9l-7PF" secondAttribute="leading" constant="30" id="VOw-j0-AnD"/>
|
||||
<constraint firstItem="QGI-xJ-sqp" firstAttribute="trailing" secondItem="62B-Sg-TVT" secondAttribute="trailing" constant="22" id="bUJ-7g-7II"/>
|
||||
<constraint firstItem="pGB-09-0UG" firstAttribute="leading" secondItem="QGI-xJ-sqp" secondAttribute="leading" constant="30" id="bXj-0o-aHH"/>
|
||||
<constraint firstItem="06P-1H-cmI" firstAttribute="centerX" secondItem="qDC-9l-7PF" secondAttribute="centerX" id="cKy-M7-kyi"/>
|
||||
<constraint firstAttribute="trailing" secondItem="urf-0T-k9I" secondAttribute="trailing" constant="30" id="dZI-qt-n3e"/>
|
||||
<constraint firstItem="QGI-xJ-sqp" firstAttribute="trailing" secondItem="v4y-lu-aPM" secondAttribute="trailing" constant="30" id="dfC-WY-Mr9"/>
|
||||
<constraint firstItem="Q5d-zZ-Jmy" firstAttribute="leading" secondItem="QGI-xJ-sqp" secondAttribute="leading" constant="30" id="enx-tG-O71"/>
|
||||
<constraint firstItem="H3H-Pr-pcz" firstAttribute="leading" secondItem="QGI-xJ-sqp" secondAttribute="leading" constant="30" id="fPU-Rm-ejp"/>
|
||||
<constraint firstItem="pGB-09-0UG" firstAttribute="top" secondItem="62B-Sg-TVT" secondAttribute="bottom" constant="32" id="foi-wR-3ep"/>
|
||||
<constraint firstItem="Z0D-nd-DIT" firstAttribute="top" secondItem="QGI-xJ-sqp" secondAttribute="top" id="g4y-rc-LzM"/>
|
||||
<constraint firstItem="E7Z-tC-ghI" firstAttribute="leading" secondItem="qDC-9l-7PF" secondAttribute="leading" constant="30" id="gEK-NX-R3a"/>
|
||||
<constraint firstAttribute="trailing" secondItem="yPc-5n-sTV" secondAttribute="trailing" constant="30" id="gdJ-9a-9bg"/>
|
||||
<constraint firstItem="c87-3t-7dg" firstAttribute="top" secondItem="R3u-6B-S9a" secondAttribute="bottom" constant="16" id="ijl-II-gau"/>
|
||||
<constraint firstItem="n6J-yx-epl" firstAttribute="leading" secondItem="QGI-xJ-sqp" secondAttribute="leading" constant="20" id="ljR-sl-1sE"/>
|
||||
<constraint firstItem="R3u-6B-S9a" firstAttribute="top" secondItem="yPc-5n-sTV" secondAttribute="bottom" constant="23" id="mRp-aS-2VP"/>
|
||||
<constraint firstItem="BZx-YU-FlX" firstAttribute="top" secondItem="c87-3t-7dg" secondAttribute="top" id="mhO-BR-yKy"/>
|
||||
<constraint firstItem="QGI-xJ-sqp" firstAttribute="trailing" secondItem="aVL-G1-FSd" secondAttribute="trailing" constant="30" id="oS8-dJ-BEz"/>
|
||||
<constraint firstItem="IcB-Lq-NPV" firstAttribute="centerY" secondItem="Q5d-zZ-Jmy" secondAttribute="centerY" id="oVU-he-Yth"/>
|
||||
<constraint firstItem="62B-Sg-TVT" firstAttribute="leading" secondItem="QGI-xJ-sqp" secondAttribute="leading" constant="22" id="pVj-8M-QF4"/>
|
||||
<constraint firstItem="urf-0T-k9I" firstAttribute="top" secondItem="E7Z-tC-ghI" secondAttribute="bottom" id="q8e-8g-7NL"/>
|
||||
<constraint firstItem="QGI-xJ-sqp" firstAttribute="trailing" secondItem="E7Z-tC-ghI" secondAttribute="trailing" constant="100" id="r2d-Qf-w6u"/>
|
||||
<constraint firstItem="QGI-xJ-sqp" firstAttribute="trailing" secondItem="HxZ-0L-y70" secondAttribute="trailing" constant="30" id="u2N-Lv-fuO"/>
|
||||
<constraint firstItem="t5D-5d-BNq" firstAttribute="leading" secondItem="QGI-xJ-sqp" secondAttribute="leading" constant="30" id="wl4-CP-Irg"/>
|
||||
<constraint firstItem="huf-f0-p7d" firstAttribute="top" secondItem="HxZ-0L-y70" secondAttribute="bottom" constant="23" id="xtY-jD-bYM"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="131.8840579710145" y="-11.383928571428571"/>
|
||||
</view>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="birthday_n" width="36" height="36"/>
|
||||
<image name="camera" width="100" height="100"/>
|
||||
<image name="date" width="20" height="20"/>
|
||||
<image name="delete" width="20" height="20"/>
|
||||
<image name="dismiss" width="40" height="40"/>
|
||||
<image name="memor_n" width="32" height="32"/>
|
||||
<image name="schedule_n" width="32" height="32"/>
|
||||
<image name="sure" width="40" height="40"/>
|
||||
</resources>
|
||||
</document>
|
||||
@ -1,229 +0,0 @@
|
||||
//
|
||||
// AV_MinePlayerVC.swift
|
||||
// anniversary_Project
|
||||
//
|
||||
// Created by 忆海16 on 2024/7/21.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
|
||||
import AppLovinSDK
|
||||
import Alamofire
|
||||
import FirebaseRemoteConfig
|
||||
|
||||
|
||||
class AV_MinePlayerVC: AV_RootVC {
|
||||
|
||||
|
||||
var retryAttempt = 0.0
|
||||
var interstitialAd: MAInterstitialAd!
|
||||
var adCheckTimer: Timer?
|
||||
var adCheckStartTime: Date?
|
||||
var adLoadTime: Int = 0
|
||||
|
||||
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
// self.createInterstitialAd()
|
||||
startAdCheck()
|
||||
}
|
||||
override func viewWillAppear(_ animated: Bool) {
|
||||
super.viewWillAppear(animated)
|
||||
self.navigationController?.navigationBar.isHidden = true
|
||||
|
||||
}
|
||||
///定时加载
|
||||
func startAdCheck() {
|
||||
// createInterstitialAd()
|
||||
adCheckStartTime = Date()
|
||||
adCheckTimer = Timer.scheduledTimer(timeInterval: 0.01, target: self, selector: #selector(checkAdStatus), userInfo: nil, repeats: true)
|
||||
}
|
||||
|
||||
@objc func checkAdStatus() {
|
||||
let elapsedTime = Date().timeIntervalSince(adCheckStartTime!)
|
||||
let elapsedTimeInMilliseconds = Int(elapsedTime * 1000)
|
||||
|
||||
if interstitialAd.isReady {
|
||||
interstitialAd.show()
|
||||
adLoadTime = elapsedTimeInMilliseconds // 记录加载
|
||||
adCheckTimer?.invalidate()
|
||||
setShow()
|
||||
} else if elapsedTimeInMilliseconds >= 10000 { // 10000 毫秒 = 10 秒
|
||||
adCheckTimer?.invalidate()
|
||||
self.navigationController?.popViewController(animated: true)
|
||||
|
||||
} else {
|
||||
print("广告未准备好,继续检查...")
|
||||
}
|
||||
}
|
||||
|
||||
func setPostload(){
|
||||
let url = "http://111.9.47.226:38080/top_selection/save_ad_load_log"
|
||||
let parameters:[String : Any] = [
|
||||
"deviceId": StartManager.shared.devicID ?? "",
|
||||
"localIp": StartManager.shared.localIP ?? "",
|
||||
"remoteIp": StartManager.shared.publicIP ?? "",
|
||||
"linkId": "",
|
||||
"packageName": "com.countdown.day.daycount",
|
||||
"gaid": StartManager.shared.idfaid ?? "",
|
||||
"dataId": "",
|
||||
"shelfNumber":"日历添加和返回",
|
||||
"succeed": StartManager.shared.succeed,
|
||||
"loadTime": "",
|
||||
"adPlatform": StartManager.shared.adPlatform ?? "",
|
||||
"countryCode": StartManager.shared.countryCode ?? "",
|
||||
"adId": StartManager.shared.adId ?? "",
|
||||
"platformResponseTime": StartManager.shared.platformResponseTime ?? "",
|
||||
"getIpResponseTime": StartManager.shared.getIpResponseTime ?? "",
|
||||
"ecpm": StartManager.shared.ecpm ?? "",
|
||||
"dsp": StartManager.shared.dsp ?? "",
|
||||
"network": StartManager.shared.network ?? "",
|
||||
"showStatus": 0,
|
||||
"washParam": true,
|
||||
]
|
||||
|
||||
|
||||
let headers: HTTPHeaders = [
|
||||
"Content-Type": "application/json"
|
||||
]
|
||||
|
||||
NetworkManager.shared.postRequest(url: url, parameters: parameters, headers: headers) { result in
|
||||
switch result {
|
||||
case .success(let data):
|
||||
print("Response:--- \(data)")
|
||||
case .failure(let error):
|
||||
print("Error:--- \(error)")
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
func setPostSHOW(){
|
||||
let url = "http://111.9.47.226:38080/top_selection/save_ad_show_log"
|
||||
let parameters:[String : Any] = [
|
||||
"deviceId": StartManager.shared.devicID ?? "",
|
||||
"localIp": StartManager.shared.localIP ?? "",
|
||||
"remoteIp": StartManager.shared.publicIP ?? "",
|
||||
"linkId": "",
|
||||
"packageName": "com.countdown.day.daycount",
|
||||
"gaid": StartManager.shared.idfaid ?? "",
|
||||
"dataId": "",
|
||||
"shelfNumber":"日历添加和返回",
|
||||
"succeed": StartManager.shared.succeed,
|
||||
"loadTime": "",
|
||||
"adPlatform": StartManager.shared.adPlatform ?? "",
|
||||
"countryCode": StartManager.shared.countryCode ?? "",
|
||||
"adId": StartManager.shared.adId ?? "",
|
||||
"platformResponseTime": StartManager.shared.platformResponseTime ?? "",
|
||||
"getIpResponseTime": StartManager.shared.getIpResponseTime ?? "",
|
||||
"ecpm": StartManager.shared.ecpm ?? "",
|
||||
"dsp": StartManager.shared.dsp ?? "",
|
||||
"network": StartManager.shared.network ?? "",
|
||||
]
|
||||
|
||||
|
||||
let headers: HTTPHeaders = [
|
||||
"Content-Type": "application/json"
|
||||
]
|
||||
|
||||
NetworkManager.shared.postRequest(url: url, parameters: parameters, headers: headers) { result in
|
||||
switch result {
|
||||
case .success(let data):
|
||||
print("Response:--- \(data)")
|
||||
case .failure(let error):
|
||||
print("Error:--- \(error)")
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
func setShow() {
|
||||
let idfa = StartManager.shared.idfaid
|
||||
let adId = StartManager.shared.idTwoAD
|
||||
let ecpm = StartManager.shared.idTwoprice
|
||||
|
||||
AdLoader.shared.showAd(idfa: idfa, adId: adId, ecpm: ecpm) { result in
|
||||
switch result {
|
||||
case .success(let closeTime): break
|
||||
// let seconds = millisecondsToSeconds(milliseconds: closeTime)
|
||||
// DispatchQueue.main.asyncAfter(deadline: .now() + seconds) {
|
||||
// closeADWindow()
|
||||
// }
|
||||
case .failure(let error):
|
||||
print("Error:--- \(error)")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
extension AV_MinePlayerVC: MAAdDelegate
|
||||
{
|
||||
func createInterstitialAd()
|
||||
{
|
||||
interstitialAd = MAInterstitialAd(adUnitIdentifier: "8fccdfa964b52e26")
|
||||
interstitialAd.delegate = self
|
||||
|
||||
// Load the first ad
|
||||
interstitialAd.load()
|
||||
}
|
||||
|
||||
// MARK: MAAdDelegate Protocol
|
||||
|
||||
func didLoad(_ ad: MAAd)
|
||||
{
|
||||
// Interstitial ad is ready to be shown. 'interstitialAd.isReady' will now return 'true'
|
||||
|
||||
// Reset retry attempt
|
||||
retryAttempt = 0
|
||||
StartManager.shared.succeed = true
|
||||
// StartManager.shared.loadTime = self.adLoadTime
|
||||
StartManager.shared.adPlatform = "MAX"
|
||||
StartManager.shared.countryCode = ALSdk.shared().configuration.countryCode
|
||||
StartManager.shared.adId = "8fccdfa964b52e26"
|
||||
StartManager.shared.platformResponseTime = ad.requestLatency
|
||||
StartManager.shared.ecpm = Float(ad.revenue)
|
||||
StartManager.shared.dsp = ad.dspName
|
||||
StartManager.shared.network = ad.networkName
|
||||
StartManager.shared.idTwoprice = Float(ad.revenue)
|
||||
print("----idTwo\(Float(ad.revenue))")
|
||||
setPostload()
|
||||
}
|
||||
|
||||
func didFailToLoadAd(forAdUnitIdentifier adUnitIdentifier: String, withError error: MAError)
|
||||
{
|
||||
// Interstitial ad failed to load
|
||||
// We recommend retrying with exponentially higher delays up to a maximum delay (in this case 64 seconds)
|
||||
|
||||
retryAttempt += 1
|
||||
let delaySec = pow(2.0, min(6.0, retryAttempt))
|
||||
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + delaySec) {
|
||||
self.interstitialAd.load()
|
||||
}
|
||||
}
|
||||
|
||||
func didDisplay(_ ad: MAAd)
|
||||
{
|
||||
// Pause your app's background audio
|
||||
}
|
||||
|
||||
func didClick(_ ad: MAAd) {}
|
||||
|
||||
func didHide(_ ad: MAAd)
|
||||
{
|
||||
// Resume your app's background audio
|
||||
// Interstitial ad is hidden. Pre-load the next ad
|
||||
interstitialAd.load()
|
||||
self.navigationController?.popViewController(animated: true)
|
||||
|
||||
}
|
||||
|
||||
func didFail(toDisplay ad: MAAd, withError error: MAError)
|
||||
{
|
||||
// Interstitial ad failed to display. We recommend loading the next ad
|
||||
interstitialAd.load()
|
||||
}
|
||||
}
|
||||
@ -1,160 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
||||
<device id="retina6_12" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22684"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="System colors in document resources" minToolsVersion="11.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="AV_MinePlayerVC" customModule="anniversary_Project" customModuleProvider="target">
|
||||
<connections>
|
||||
<outlet property="view" destination="LK8-RI-nti" id="zhn-f2-3fc"/>
|
||||
</connections>
|
||||
</placeholder>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="LK8-RI-nti">
|
||||
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="RbI-Ta-bH2" customClass="FSCalendar">
|
||||
<rect key="frame" x="0.0" y="114" width="393" height="320"/>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="320" id="u4Y-7T-Xja"/>
|
||||
</constraints>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="color" keyPath="todayColor">
|
||||
<color key="value" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="headerMinimumDissolvedAlpha">
|
||||
<real key="value" value="0.0"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
<userDefinedRuntimeAttribute type="color" keyPath="headerTitleColor">
|
||||
<color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
<userDefinedRuntimeAttribute type="color" keyPath="weekdayTextColor">
|
||||
<color key="value" red="0.62819433209999997" green="0.64150822159999998" blue="0.71373504399999999" alpha="1" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="useVeryShortWeekdaySymbols" value="YES"/>
|
||||
<userDefinedRuntimeAttribute type="color" keyPath="titleTodayColor">
|
||||
<color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="borderRadius">
|
||||
<real key="value" value="1"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
<userDefinedRuntimeAttribute type="color" keyPath="selectionColor">
|
||||
<color key="value" systemColor="linkColor"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="weekdayTextSize">
|
||||
<real key="value" value="18"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="titleTextSize">
|
||||
<real key="value" value="18"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="headerHeight">
|
||||
<real key="value" value="0.10000000000000001"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
<userDefinedRuntimeAttribute type="color" keyPath="eventDefaultColor">
|
||||
<color key="value" red="0.4424364865" green="0.78646296260000004" blue="0.33715009689999997" alpha="1" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</view>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="May 2024" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="tQY-bw-IFi">
|
||||
<rect key="frame" x="20" y="69" width="106" height="29"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="24"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="6f4-ht-OzS">
|
||||
<rect key="frame" x="20" y="444" width="353" height="1"/>
|
||||
<color key="backgroundColor" red="0.91820031400000002" green="0.94822925329999996" blue="0.98431915039999995" alpha="1" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="1" id="kNZ-GS-F5V"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" style="plain" separatorStyle="none" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" translatesAutoresizingMaskIntoConstraints="NO" id="ELC-hm-uaH">
|
||||
<rect key="frame" x="0.0" y="486" width="393" height="332"/>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||
</tableView>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="hLh-su-gjy">
|
||||
<rect key="frame" x="335" y="64.666666666666671" width="38" height="38"/>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<state key="normal" image="add"/>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="IGI-nC-iI1">
|
||||
<rect key="frame" x="138" y="68.666666666666671" width="30" height="30"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="30" id="jZd-fh-GbF"/>
|
||||
<constraint firstAttribute="width" constant="30" id="ujX-ky-DMx"/>
|
||||
</constraints>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<state key="normal" image="left"/>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ea5-dA-eHb">
|
||||
<rect key="frame" x="178" y="68.666666666666671" width="30" height="30"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="30" id="AD9-gD-Ra4"/>
|
||||
<constraint firstAttribute="height" constant="30" id="fno-3r-DlU"/>
|
||||
</constraints>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<state key="normal" image="right"/>
|
||||
</button>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="My Task" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="z46-m4-pR9">
|
||||
<rect key="frame" x="22" y="455" width="66" height="21"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="18"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="none" translatesAutoresizingMaskIntoConstraints="NO" id="wme-zu-JZd">
|
||||
<rect key="frame" x="146.66666666666666" y="602" width="100" height="100"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="100" id="eMl-ce-I49"/>
|
||||
<constraint firstAttribute="height" constant="100" id="fve-Fv-CyG"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
</subviews>
|
||||
<viewLayoutGuide key="safeArea" id="fjo-eC-se8"/>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||
<constraints>
|
||||
<constraint firstItem="fjo-eC-se8" firstAttribute="bottom" secondItem="ELC-hm-uaH" secondAttribute="bottom" id="1Kq-W1-23l"/>
|
||||
<constraint firstItem="z46-m4-pR9" firstAttribute="top" secondItem="6f4-ht-OzS" secondAttribute="bottom" constant="10" id="2fE-1j-8WC"/>
|
||||
<constraint firstItem="fjo-eC-se8" firstAttribute="trailing" secondItem="6f4-ht-OzS" secondAttribute="trailing" constant="20" id="7b6-VZ-fKB"/>
|
||||
<constraint firstItem="fjo-eC-se8" firstAttribute="trailing" secondItem="RbI-Ta-bH2" secondAttribute="trailing" id="9oh-wV-Vm6"/>
|
||||
<constraint firstItem="fjo-eC-se8" firstAttribute="trailing" secondItem="hLh-su-gjy" secondAttribute="trailing" constant="20" id="CSF-RP-M3A"/>
|
||||
<constraint firstItem="ea5-dA-eHb" firstAttribute="leading" secondItem="IGI-nC-iI1" secondAttribute="trailing" constant="10" id="HyD-Vi-mPj"/>
|
||||
<constraint firstItem="IGI-nC-iI1" firstAttribute="centerY" secondItem="tQY-bw-IFi" secondAttribute="centerY" id="JrC-uo-r9m"/>
|
||||
<constraint firstItem="hLh-su-gjy" firstAttribute="centerY" secondItem="tQY-bw-IFi" secondAttribute="centerY" id="NUk-PM-5Jt"/>
|
||||
<constraint firstItem="fjo-eC-se8" firstAttribute="trailing" secondItem="ELC-hm-uaH" secondAttribute="trailing" id="SPl-5B-6R1"/>
|
||||
<constraint firstItem="RbI-Ta-bH2" firstAttribute="top" secondItem="fjo-eC-se8" secondAttribute="top" constant="55" id="Uev-of-Fd9"/>
|
||||
<constraint firstItem="6f4-ht-OzS" firstAttribute="leading" secondItem="fjo-eC-se8" secondAttribute="leading" constant="20" id="VqO-gN-KI9"/>
|
||||
<constraint firstItem="IGI-nC-iI1" firstAttribute="leading" secondItem="tQY-bw-IFi" secondAttribute="trailing" constant="12" id="YfM-jb-eqN"/>
|
||||
<constraint firstItem="z46-m4-pR9" firstAttribute="leading" secondItem="fjo-eC-se8" secondAttribute="leading" constant="22" id="ZDy-Df-3yJ"/>
|
||||
<constraint firstItem="ea5-dA-eHb" firstAttribute="centerY" secondItem="IGI-nC-iI1" secondAttribute="centerY" id="dPV-3J-mre"/>
|
||||
<constraint firstItem="tQY-bw-IFi" firstAttribute="top" secondItem="fjo-eC-se8" secondAttribute="top" constant="10" id="eFS-T7-EPT"/>
|
||||
<constraint firstItem="6f4-ht-OzS" firstAttribute="top" secondItem="RbI-Ta-bH2" secondAttribute="bottom" constant="10" id="f9e-wg-D1C"/>
|
||||
<constraint firstItem="wme-zu-JZd" firstAttribute="centerY" secondItem="ELC-hm-uaH" secondAttribute="centerY" id="fvO-1f-pxS"/>
|
||||
<constraint firstItem="ELC-hm-uaH" firstAttribute="top" secondItem="z46-m4-pR9" secondAttribute="bottom" constant="10" id="hFs-Yu-K1y"/>
|
||||
<constraint firstItem="RbI-Ta-bH2" firstAttribute="leading" secondItem="fjo-eC-se8" secondAttribute="leading" id="kIj-xG-Fpk"/>
|
||||
<constraint firstItem="ELC-hm-uaH" firstAttribute="leading" secondItem="fjo-eC-se8" secondAttribute="leading" id="maL-eF-eUx"/>
|
||||
<constraint firstItem="wme-zu-JZd" firstAttribute="centerX" secondItem="ELC-hm-uaH" secondAttribute="centerX" id="o30-te-EkH"/>
|
||||
<constraint firstItem="tQY-bw-IFi" firstAttribute="leading" secondItem="fjo-eC-se8" secondAttribute="leading" constant="20" id="p7O-2T-Y0K"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="130.43478260869566" y="-11.383928571428571"/>
|
||||
</view>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="add" width="38" height="38"/>
|
||||
<image name="left" width="16" height="16"/>
|
||||
<image name="none" width="200" height="201"/>
|
||||
<image name="right" width="16" height="16"/>
|
||||
<systemColor name="linkColor">
|
||||
<color red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</systemColor>
|
||||
<systemColor name="systemBackgroundColor">
|
||||
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</systemColor>
|
||||
</resources>
|
||||
</document>
|
||||
@ -1,408 +0,0 @@
|
||||
//
|
||||
// AV_RootPlayerVC.swift
|
||||
// anniversary_Project
|
||||
//
|
||||
// Created by 忆海16 on 2024/7/21.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
import AppLovinSDK
|
||||
import Alamofire
|
||||
import FirebaseRemoteConfig
|
||||
|
||||
class AV_RootPlayerVC: AV_RootVC {
|
||||
|
||||
var retryAttempt = 0.0
|
||||
var interstitialAd1: MAInterstitialAd!
|
||||
var interstitialAd2: MAInterstitialAd!
|
||||
var interstitialAd3: MAInterstitialAd!
|
||||
var adCheckTimer: Timer?
|
||||
var adCheckStartTime: Date?
|
||||
var adLoadTime: Int = 0
|
||||
|
||||
|
||||
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
steIDFA()
|
||||
self.createInterstitialAd()
|
||||
}
|
||||
|
||||
|
||||
@IBAction func backHome(_ sender: Any) {
|
||||
let appDelegate = UIApplication.shared.delegate
|
||||
appDelegate?.window??.rootViewController = AV_NAVVC(rootViewController: AV_WaterHomeVC())
|
||||
}
|
||||
|
||||
override func viewWillAppear(_ animated: Bool) {
|
||||
super.viewWillAppear(true)
|
||||
self.navigationController?.navigationBar.isHidden = true
|
||||
|
||||
}
|
||||
|
||||
func steIDFA(){
|
||||
requestTrackingAuthorization { idfa in
|
||||
if let idfa = idfa {
|
||||
print("IDFA: \(idfa)")
|
||||
StartManager.shared.idfaid = idfa
|
||||
print("Stored IDFA: \(StartManager.shared.idfaid ?? "N/A")")
|
||||
} else {
|
||||
print("IDFA is not available or tracking authorization denied.")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// bee9f7039e56cc7a
|
||||
@IBAction func one(_ sender: Any) {
|
||||
|
||||
let vc = AV_AddPlayerVC()
|
||||
vc.interstitialAd = self.interstitialAd1
|
||||
// vc.createInterstitialAd()
|
||||
self.navigationController?.pushViewController(vc, animated: true)
|
||||
|
||||
}
|
||||
|
||||
// 8fccdfa964b52e26
|
||||
@IBAction func two(_ sender: Any) {
|
||||
|
||||
let vc = AV_MinePlayerVC()
|
||||
// vc.createInterstitialAd()
|
||||
vc.interstitialAd = self.interstitialAd2
|
||||
self.navigationController?.pushViewController(vc, animated: true)
|
||||
|
||||
}
|
||||
|
||||
// 7baed02646413e44
|
||||
@IBAction func three(_ sender: Any) {
|
||||
|
||||
let vc = AV_WaterKeyBordPlayerVC()
|
||||
vc.interstitialAd = self.interstitialAd3
|
||||
// vc.createInterstitialAd()
|
||||
self.navigationController?.pushViewController(vc, animated: true)
|
||||
|
||||
}
|
||||
|
||||
|
||||
// func setLoaded1(){
|
||||
// let parameters:[String : Any] = [
|
||||
// "appid": "com.countdown.day.daycount",
|
||||
// "idfa":StartManager.shared.idfaid ?? "",
|
||||
// "ads": [
|
||||
// [
|
||||
// "id": StartManager.shared.idOneAD,
|
||||
// "btn_position": [
|
||||
// "x": StartManager.shared.idOnex,
|
||||
// "y": StartManager.shared.idOney
|
||||
// ],
|
||||
// "ecpm": StartManager.shared.idOne ?? ""
|
||||
// ]
|
||||
// ]
|
||||
// ]
|
||||
// NetworkManager.shared.postRequest(url: StartManager.shared.loadurl, parameters: parameters, headers: StartManager.shared.headers) { result in
|
||||
// switch result {
|
||||
// case .success(let data):
|
||||
// print("Response:--- \(data)")
|
||||
// if let status = data["status"] as? String, status == "Success" {
|
||||
// if let needLoad = data["needload"] as? Int {
|
||||
// if needLoad > 0 {
|
||||
// print("Need to load \(needLoad) more ads.")
|
||||
// // 执行加载更多广告的逻辑
|
||||
// } else {
|
||||
// print("No need to load more ads.")
|
||||
// // 不需要加载更多广告的逻辑
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// case .failure(let error):
|
||||
// print("Error:--- \(error)")
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// }
|
||||
//
|
||||
// func setLoaded2(){
|
||||
// let parameters:[String : Any] = [
|
||||
// "appid": "com.countdown.day.daycount",
|
||||
// "idfa":StartManager.shared.idfaid ?? "",
|
||||
// "ads": [
|
||||
// [
|
||||
// "id": StartManager.shared.idTwoAD,
|
||||
// "btn_position": [
|
||||
// "x": StartManager.shared.idTwox,
|
||||
// "y": StartManager.shared.idTwoy
|
||||
// ],
|
||||
// "ecpm": StartManager.shared.idTwo ?? ""
|
||||
// ]
|
||||
// ]
|
||||
// ]
|
||||
// NetworkManager.shared.postRequest(url: StartManager.shared.loadurl, parameters: parameters, headers: StartManager.shared.headers) { result in
|
||||
// switch result {
|
||||
// case .success(let data):
|
||||
// print("Response:--- \(data)")
|
||||
// if let status = data["status"] as? String, status == "Success" {
|
||||
// if let needLoad = data["needload"] as? Int {
|
||||
// if needLoad > 0 {
|
||||
// print("Need to load \(needLoad) more ads.")
|
||||
// // 执行加载更多广告的逻辑
|
||||
// } else {
|
||||
// print("No need to load more ads.")
|
||||
// // 不需要加载更多广告的逻辑
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// case .failure(let error):
|
||||
// print("Error:--- \(error)")
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// }
|
||||
//
|
||||
// func setLoaded3(){
|
||||
// let parameters:[String : Any] = [
|
||||
// "appid": "com.countdown.day.daycount",
|
||||
// "idfa":StartManager.shared.idfaid ?? "",
|
||||
// "ads": [
|
||||
// [
|
||||
// "id": StartManager.shared.idThreeAD,
|
||||
// "btn_position": [
|
||||
// "x": StartManager.shared.idThreex,
|
||||
// "y": StartManager.shared.idThreey
|
||||
// ],
|
||||
// "ecpm": StartManager.shared.idThree ?? ""
|
||||
// ]
|
||||
// ]
|
||||
// ]
|
||||
// NetworkManager.shared.postRequest(url: StartManager.shared.loadurl, parameters: parameters, headers:StartManager.shared.headers) { result in
|
||||
// switch result {
|
||||
// case .success(let data):
|
||||
// print("Response:--- \(data)")
|
||||
// if let status = data["status"] as? String, status == "Success" {
|
||||
// if let needLoad = data["needload"] as? Int {
|
||||
// if needLoad > 0 {
|
||||
// print("Need to load \(needLoad) more ads.")
|
||||
// // 执行加载更多广告的逻辑
|
||||
// } else {
|
||||
// print("No need to load more ads.")
|
||||
// // 不需要加载更多广告的逻辑
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// case .failure(let error):
|
||||
// print("Error:--- \(error)")
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// }
|
||||
|
||||
|
||||
func setLoaded1() {
|
||||
let idfa = StartManager.shared.idfaid
|
||||
let adId = StartManager.shared.idOneAD
|
||||
let btnPositionX = StartManager.shared.idOnex
|
||||
let btnPositionY = StartManager.shared.idOney
|
||||
let ecpm = StartManager.shared.idOneprice
|
||||
|
||||
AdLoader.shared.loadAds( idfa: idfa, adId: adId, btnPositionX: btnPositionX, btnPositionY: btnPositionY, ecpm: ecpm) { result in
|
||||
switch result {
|
||||
case .success(let needLoad):
|
||||
if needLoad > 0 {
|
||||
print("Need to load \(needLoad) more ads.")
|
||||
// 执行加载更多广告的逻辑
|
||||
} else {
|
||||
print("No need to load more ads.")
|
||||
// 不需要加载更多广告的逻辑
|
||||
}
|
||||
case .failure(let error):
|
||||
print("Error:--- \(error)")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func setLoaded2() {
|
||||
let idfa = StartManager.shared.idfaid
|
||||
let adId = StartManager.shared.idTwoAD
|
||||
let btnPositionX = StartManager.shared.idTwox
|
||||
let btnPositionY = StartManager.shared.idTwoy
|
||||
let ecpm = StartManager.shared.idTwoprice
|
||||
|
||||
AdLoader.shared.loadAds( idfa: idfa, adId: adId, btnPositionX: btnPositionX, btnPositionY: btnPositionY, ecpm: ecpm) { result in
|
||||
switch result {
|
||||
case .success(let needLoad):
|
||||
if needLoad > 0 {
|
||||
print("Need to load \(needLoad) more ads.")
|
||||
// 执行加载更多广告的逻辑
|
||||
} else {
|
||||
print("No need to load more ads.")
|
||||
// 不需要加载更多广告的逻辑
|
||||
}
|
||||
case .failure(let error):
|
||||
print("Error:--- \(error)")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func setLoaded3() {
|
||||
let idfa = StartManager.shared.idfaid
|
||||
let adId = StartManager.shared.idThreeAD
|
||||
let btnPositionX = StartManager.shared.idThreex
|
||||
let btnPositionY = StartManager.shared.idThreey
|
||||
let ecpm = StartManager.shared.idThreeprice
|
||||
|
||||
AdLoader.shared.loadAds( idfa: idfa, adId: adId, btnPositionX: btnPositionX, btnPositionY: btnPositionY, ecpm: ecpm) { result in
|
||||
switch result {
|
||||
case .success(let needLoad):
|
||||
if needLoad > 0 {
|
||||
print("Need to load \(needLoad) more ads.")
|
||||
// 执行加载更多广告的逻辑
|
||||
} else {
|
||||
print("No need to load more ads.")
|
||||
// 不需要加载更多广告的逻辑
|
||||
}
|
||||
case .failure(let error):
|
||||
print("Error:--- \(error)")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// func setclosed(adid:String){
|
||||
// let parameters:[String : Any] = [
|
||||
// "appid": "com.countdown.day.daycount",
|
||||
// "idfa":StartManager.shared.idfaid ?? "",
|
||||
// "id":adid,
|
||||
//
|
||||
// ]
|
||||
// NetworkManager.shared.postRequest(url: StartManager.shared.closedUrl, parameters: parameters, headers: StartManager.shared.headers) { result in
|
||||
// switch result {
|
||||
// case .success(let data):
|
||||
// print("Response:--- \(data)")
|
||||
// case .failure(let error):
|
||||
// print("Error:--- \(error)")
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
extension AV_RootPlayerVC: MAAdDelegate
|
||||
{
|
||||
func createInterstitialAd()
|
||||
{
|
||||
|
||||
if StartManager.shared.IDADType == 1{
|
||||
interstitialAd1 = MAInterstitialAd(adUnitIdentifier: "bee9f7039e56cc7a")
|
||||
interstitialAd1.delegate = self
|
||||
|
||||
// Load the first ad
|
||||
interstitialAd1.load()
|
||||
}else if StartManager.shared.IDADType == 2{
|
||||
interstitialAd2 = MAInterstitialAd(adUnitIdentifier: "8fccdfa964b52e26")
|
||||
interstitialAd2.delegate = self
|
||||
|
||||
// Load the first ad
|
||||
interstitialAd2.load()
|
||||
}else if StartManager.shared.IDADType == 3{
|
||||
|
||||
interstitialAd3 = MAInterstitialAd(adUnitIdentifier: "7baed02646413e44")
|
||||
interstitialAd3.delegate = self
|
||||
|
||||
// Load the first ad
|
||||
interstitialAd3.load()
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
// MARK: MAAdDelegate Protocol
|
||||
|
||||
func didLoad(_ ad: MAAd)
|
||||
{
|
||||
// Interstitial ad is ready to be shown. 'interstitialAd.isReady' will now return 'true'
|
||||
// 插页式广告已准备好显示。'interstitialAd.isReady' 现在将返回 'true'
|
||||
|
||||
// 重置重试尝试
|
||||
// Reset retry attempt
|
||||
retryAttempt = 0
|
||||
StartManager.shared.succeed = true
|
||||
// StartManager.shared.loadTime = self.adLoadTime
|
||||
StartManager.shared.adPlatform = "MAX"
|
||||
StartManager.shared.countryCode = ALSdk.shared().configuration.countryCode
|
||||
StartManager.shared.adId = "bee9f7039e56cc7a"
|
||||
StartManager.shared.platformResponseTime = ad.requestLatency
|
||||
StartManager.shared.ecpm = Float(ad.revenue)
|
||||
StartManager.shared.dsp = ad.dspName
|
||||
StartManager.shared.network = ad.networkName
|
||||
// StartManager.shared.idOne = Float(ad.revenue)
|
||||
print("----idOne\(Float(ad.revenue))")
|
||||
// setPostload()
|
||||
|
||||
if StartManager.shared.IDADType == 1{
|
||||
StartManager.shared.idOneprice = Float(ad.revenue)
|
||||
self.setLoaded1()
|
||||
StartManager.shared.IDADType = 2
|
||||
createInterstitialAd()
|
||||
}else if StartManager.shared.IDADType == 2{
|
||||
StartManager.shared.idTwoprice = Float(ad.revenue)
|
||||
self.setLoaded2()
|
||||
StartManager.shared.IDADType = 3
|
||||
createInterstitialAd()
|
||||
}else if StartManager.shared.IDADType == 3{
|
||||
StartManager.shared.idThreeprice = Float(ad.revenue)
|
||||
self.setLoaded3()
|
||||
}
|
||||
}
|
||||
|
||||
func didFailToLoadAd(forAdUnitIdentifier adUnitIdentifier: String, withError error: MAError)
|
||||
{
|
||||
// Interstitial ad failed to load
|
||||
// We recommend retrying with exponentially higher delays up to a maximum delay (in this case 64 seconds)
|
||||
// 插页广告加载失败
|
||||
// 我们建议以指数级更高的延迟重试,最大延迟为 64 秒
|
||||
|
||||
retryAttempt += 1
|
||||
let delaySec = pow(2.0, min(6.0, retryAttempt))
|
||||
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + delaySec) {
|
||||
self.interstitialAd1.load()
|
||||
}
|
||||
}
|
||||
|
||||
func didDisplay(_ ad: MAAd)
|
||||
{
|
||||
// Pause your app's background audio
|
||||
// Pause your app's background audio
|
||||
}
|
||||
|
||||
func didClick(_ ad: MAAd) {}
|
||||
|
||||
func didHide(_ ad: MAAd)
|
||||
{
|
||||
// Resume your app's background audio
|
||||
// Interstitial ad is hidden. Pre-load the next ad
|
||||
// 恢复应用的背景音频
|
||||
// 插页式广告已隐藏。预加载下一个广告
|
||||
// interstitialAd1.load()
|
||||
// self.navigationController?.popViewController(animated: true)
|
||||
// setclosed(adid: ad.adUnitIdentifier)
|
||||
AdLoader.shared.closeAd(idfa: StartManager.shared.idfaid, adId: ad.adUnitIdentifier) { result in
|
||||
switch result {
|
||||
case .success(let data):
|
||||
print("Response:--- \(data)")
|
||||
case .failure(let error):
|
||||
print("Error:--- \(error)")
|
||||
}
|
||||
}
|
||||
navigationController?.popViewController(animated: true)
|
||||
|
||||
}
|
||||
|
||||
func didFail(toDisplay ad: MAAd, withError error: MAError)
|
||||
{
|
||||
// Interstitial ad failed to display. We recommend loading the next ad
|
||||
// 插页广告显示失败。建议加载下一个广告
|
||||
// interstitialAd.load()
|
||||
}
|
||||
}
|
||||
@ -1,113 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
||||
<device id="retina6_12" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22684"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="System colors in document resources" minToolsVersion="11.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="AV_RootPlayerVC" customModule="anniversary_Project" customModuleProvider="target">
|
||||
<connections>
|
||||
<outlet property="view" destination="eia-67-Rut" id="qcv-5G-inX"/>
|
||||
</connections>
|
||||
</placeholder>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="eia-67-Rut">
|
||||
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="JP7-3J-Qzs">
|
||||
<rect key="frame" x="0.0" y="149" width="393" height="40"/>
|
||||
<color key="backgroundColor" systemColor="systemPurpleColor"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="40" id="qgQ-08-Ack"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="22"/>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<state key="normal" title="ID:3519003">
|
||||
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="three:" destination="-1" eventType="touchUpInside" id="XUL-wU-OcE"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="GXb-m3-GNh">
|
||||
<rect key="frame" x="0.0" y="104" width="393" height="40"/>
|
||||
<color key="backgroundColor" systemColor="systemGreenColor"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="40" id="AuV-Hc-hK1"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="22"/>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<state key="normal" title="ID:3519003">
|
||||
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="two:" destination="-1" eventType="touchUpInside" id="HRU-yy-8pN"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="NA5-eZ-U7f">
|
||||
<rect key="frame" x="0.0" y="59" width="393" height="40"/>
|
||||
<color key="backgroundColor" systemColor="systemRedColor"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="40" id="Oqf-rh-B74"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="22"/>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<state key="normal" title="ID:3519003">
|
||||
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="one:" destination="-1" eventType="touchUpInside" id="45W-2N-0JJ"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="SFn-CE-zcj">
|
||||
<rect key="frame" x="293" y="768" width="100" height="50"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="100" id="GdO-ZO-XEg"/>
|
||||
<constraint firstAttribute="height" constant="50" id="srs-FB-Em1"/>
|
||||
</constraints>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<state key="normal" title="返回"/>
|
||||
<connections>
|
||||
<action selector="backHome:" destination="-1" eventType="touchUpInside" id="8qF-6W-hb6"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<viewLayoutGuide key="safeArea" id="Pgv-5T-wgP"/>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||
<constraints>
|
||||
<constraint firstItem="JP7-3J-Qzs" firstAttribute="leading" secondItem="Pgv-5T-wgP" secondAttribute="leading" id="1DB-o3-sJG"/>
|
||||
<constraint firstItem="Pgv-5T-wgP" firstAttribute="trailing" secondItem="JP7-3J-Qzs" secondAttribute="trailing" id="1lc-cm-VLT"/>
|
||||
<constraint firstItem="JP7-3J-Qzs" firstAttribute="centerX" secondItem="eia-67-Rut" secondAttribute="centerX" id="C3b-0r-vzW"/>
|
||||
<constraint firstItem="JP7-3J-Qzs" firstAttribute="top" secondItem="GXb-m3-GNh" secondAttribute="bottom" constant="5" id="CbO-TT-Dip"/>
|
||||
<constraint firstAttribute="trailing" secondItem="NA5-eZ-U7f" secondAttribute="trailing" id="JXb-md-BoS"/>
|
||||
<constraint firstItem="Pgv-5T-wgP" firstAttribute="bottom" secondItem="SFn-CE-zcj" secondAttribute="bottom" id="N7g-9K-rR7"/>
|
||||
<constraint firstItem="NA5-eZ-U7f" firstAttribute="top" secondItem="Pgv-5T-wgP" secondAttribute="top" id="TPX-JJ-0h2"/>
|
||||
<constraint firstItem="Pgv-5T-wgP" firstAttribute="trailing" secondItem="SFn-CE-zcj" secondAttribute="trailing" id="aFz-dd-VRL"/>
|
||||
<constraint firstAttribute="trailing" secondItem="GXb-m3-GNh" secondAttribute="trailing" id="ajJ-JL-s7t"/>
|
||||
<constraint firstItem="GXb-m3-GNh" firstAttribute="leading" secondItem="Pgv-5T-wgP" secondAttribute="leading" id="bvc-AL-a9S"/>
|
||||
<constraint firstItem="GXb-m3-GNh" firstAttribute="top" secondItem="NA5-eZ-U7f" secondAttribute="bottom" constant="5" id="jXD-so-gb1"/>
|
||||
<constraint firstItem="NA5-eZ-U7f" firstAttribute="leading" secondItem="Pgv-5T-wgP" secondAttribute="leading" id="vaf-4B-rle"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="8.6956521739130448" y="-12.053571428571429"/>
|
||||
</view>
|
||||
</objects>
|
||||
<resources>
|
||||
<systemColor name="systemBackgroundColor">
|
||||
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</systemColor>
|
||||
<systemColor name="systemGreenColor">
|
||||
<color red="0.20392156859999999" green="0.78039215689999997" blue="0.34901960780000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</systemColor>
|
||||
<systemColor name="systemPurpleColor">
|
||||
<color red="0.68627450980000004" green="0.32156862749999998" blue="0.87058823529999996" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</systemColor>
|
||||
<systemColor name="systemRedColor">
|
||||
<color red="1" green="0.23137254900000001" blue="0.18823529410000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</systemColor>
|
||||
</resources>
|
||||
</document>
|
||||
@ -1,317 +0,0 @@
|
||||
//
|
||||
// AV_WaterKeyBordPlayerVC.swift
|
||||
// anniversary_Project
|
||||
//
|
||||
// Created by 忆海16 on 2024/7/21.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
import AppLovinSDK
|
||||
import Alamofire
|
||||
import FirebaseRemoteConfig
|
||||
|
||||
|
||||
class AV_WaterKeyBordPlayerVC: AV_RootVC {
|
||||
@IBOutlet weak var waterImageV: UIImageView!
|
||||
|
||||
@IBOutlet weak var collectionView: UICollectionView!
|
||||
|
||||
|
||||
@IBOutlet weak var cupuView: UIView!
|
||||
|
||||
let cellWidth: CGFloat = 71
|
||||
let cellHeight: CGFloat = 71
|
||||
let cellSpacing: CGFloat = 12
|
||||
let dataimag = ["1","2", "3", "4", "5", "6","7","8"]
|
||||
let databigimag = ["1-1","2-2", "3-3", "4-4", "5-5", "6-6","7-7","8-8"]
|
||||
let drinkname = ["Water","Milk", "Tea", "Milky tea", "Beer", "Red wine","Fruit juice","Soup"]
|
||||
|
||||
var rulerV = MLSliderRulerView()
|
||||
|
||||
|
||||
|
||||
var retryAttempt = 0.0
|
||||
var interstitialAd: MAInterstitialAd!
|
||||
var adCheckTimer: Timer?
|
||||
var adCheckStartTime: Date?
|
||||
var adLoadTime: Int = 0
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
|
||||
setcollectionV()
|
||||
rulerV = MLSliderRulerView(frame:cupuView.bounds)
|
||||
|
||||
self.cupuView.addSubview(rulerV)
|
||||
startAdCheck()
|
||||
}
|
||||
|
||||
override func viewWillAppear(_ animated: Bool) {
|
||||
super.viewWillAppear(animated)
|
||||
self.navigationController?.navigationBar.isHidden = true
|
||||
|
||||
}
|
||||
///定时加载
|
||||
func startAdCheck() {
|
||||
// createInterstitialAd()
|
||||
adCheckStartTime = Date()
|
||||
adCheckTimer = Timer.scheduledTimer(timeInterval: 0.01, target: self, selector: #selector(checkAdStatus), userInfo: nil, repeats: true)
|
||||
}
|
||||
|
||||
@objc func checkAdStatus() {
|
||||
let elapsedTime = Date().timeIntervalSince(adCheckStartTime!)
|
||||
let elapsedTimeInMilliseconds = Int(elapsedTime * 1000)
|
||||
|
||||
if interstitialAd.isReady {
|
||||
interstitialAd.show()
|
||||
adLoadTime = elapsedTimeInMilliseconds // 记录加载
|
||||
adCheckTimer?.invalidate()
|
||||
setShow()
|
||||
} else if elapsedTimeInMilliseconds >= 10000 { // 10000 毫秒 = 10 秒
|
||||
adCheckTimer?.invalidate()
|
||||
self.navigationController?.popViewController(animated: true)
|
||||
|
||||
} else {
|
||||
print("广告未准备好,继续检查...")
|
||||
}
|
||||
}
|
||||
|
||||
func setPostload(){
|
||||
let url = "http://111.9.47.226:38080/top_selection/save_ad_load_log"
|
||||
let parameters:[String : Any] = [
|
||||
"deviceId": StartManager.shared.devicID ?? "",
|
||||
"localIp": StartManager.shared.localIP ?? "",
|
||||
"remoteIp": StartManager.shared.publicIP ?? "",
|
||||
"linkId": "",
|
||||
"packageName": "com.countdown.day.daycount",
|
||||
"gaid": StartManager.shared.idfaid ?? "",
|
||||
"dataId": "",
|
||||
"shelfNumber":"日历添加和返回",
|
||||
"succeed": StartManager.shared.succeed,
|
||||
"loadTime": "",
|
||||
"adPlatform": StartManager.shared.adPlatform ?? "",
|
||||
"countryCode": StartManager.shared.countryCode ?? "",
|
||||
"adId": StartManager.shared.adId ?? "",
|
||||
"platformResponseTime": StartManager.shared.platformResponseTime ?? "",
|
||||
"getIpResponseTime": StartManager.shared.getIpResponseTime ?? "",
|
||||
"ecpm": StartManager.shared.ecpm ?? "",
|
||||
"dsp": StartManager.shared.dsp ?? "",
|
||||
"network": StartManager.shared.network ?? "",
|
||||
"showStatus": 0,
|
||||
"washParam": true,
|
||||
]
|
||||
|
||||
|
||||
let headers: HTTPHeaders = [
|
||||
"Content-Type": "application/json"
|
||||
]
|
||||
|
||||
NetworkManager.shared.postRequest(url: url, parameters: parameters, headers: headers) { result in
|
||||
switch result {
|
||||
case .success(let data):
|
||||
print("Response:--- \(data)")
|
||||
case .failure(let error):
|
||||
print("Error:--- \(error)")
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
func setPostSHOW(){
|
||||
let url = "http://111.9.47.226:38080/top_selection/save_ad_show_log"
|
||||
let parameters:[String : Any] = [
|
||||
"deviceId": StartManager.shared.devicID ?? "",
|
||||
"localIp": StartManager.shared.localIP ?? "",
|
||||
"remoteIp": StartManager.shared.publicIP ?? "",
|
||||
"linkId": "",
|
||||
"packageName": "com.countdown.day.daycount",
|
||||
"gaid": StartManager.shared.idfaid ?? "",
|
||||
"dataId": "",
|
||||
"shelfNumber":"日历添加和返回",
|
||||
"succeed": StartManager.shared.succeed,
|
||||
"loadTime": "",
|
||||
"adPlatform": StartManager.shared.adPlatform ?? "",
|
||||
"countryCode": StartManager.shared.countryCode ?? "",
|
||||
"adId": StartManager.shared.adId ?? "",
|
||||
"platformResponseTime": StartManager.shared.platformResponseTime ?? "",
|
||||
"getIpResponseTime": StartManager.shared.getIpResponseTime ?? "",
|
||||
"ecpm": StartManager.shared.ecpm ?? "",
|
||||
"dsp": StartManager.shared.dsp ?? "",
|
||||
"network": StartManager.shared.network ?? "",
|
||||
]
|
||||
|
||||
|
||||
let headers: HTTPHeaders = [
|
||||
"Content-Type": "application/json"
|
||||
]
|
||||
|
||||
NetworkManager.shared.postRequest(url: url, parameters: parameters, headers: headers) { result in
|
||||
switch result {
|
||||
case .success(let data):
|
||||
print("Response:--- \(data)")
|
||||
case .failure(let error):
|
||||
print("Error:--- \(error)")
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func setcollectionV(){
|
||||
let layout = UICollectionViewFlowLayout()
|
||||
layout.scrollDirection = .horizontal
|
||||
collectionView.dataSource = self
|
||||
collectionView.delegate = self
|
||||
collectionView.collectionViewLayout = layout
|
||||
collectionView.register(UINib(nibName: "AV_AddWaterVCCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "AV_AddWaterVCCollectionViewCell")
|
||||
}
|
||||
|
||||
// func setshow(){
|
||||
// let parameters:[String : Any] = [
|
||||
// "appid": "com.countdown.day.daycount",
|
||||
// "idfa":StartManager.shared.idfaid ?? "",
|
||||
// "id":StartManager.shared.idOneAD,
|
||||
// "ecpm":StartManager.shared.idOneprice ?? "",
|
||||
//
|
||||
// ]
|
||||
// NetworkManager.shared.postRequest(url: StartManager.shared.showurl, parameters: parameters, headers: StartManager.shared.headers) { result in
|
||||
// switch result {
|
||||
// case .success(let data):
|
||||
// print("Response:--- \(data)")
|
||||
// if let status = data["status"] as? String, status == "Success" {
|
||||
// if let needLoad = data["close"] as? Int {
|
||||
// let seconds = millisecondsToSeconds(milliseconds: needLoad)
|
||||
//
|
||||
// DispatchQueue.main.asyncAfter(wallDeadline: .now() + seconds) {
|
||||
// closeADWindow()
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// case .failure(let error):
|
||||
// print("Error:--- \(error)")
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
func setShow() {
|
||||
let idfa = StartManager.shared.idfaid
|
||||
let adId = StartManager.shared.idThreeAD
|
||||
let ecpm = StartManager.shared.idThreeprice
|
||||
|
||||
AdLoader.shared.showAd(idfa: idfa, adId: adId, ecpm: ecpm) { result in
|
||||
switch result {
|
||||
case .success(let closeTime): break
|
||||
// let seconds = millisecondsToSeconds(milliseconds: closeTime)
|
||||
// DispatchQueue.main.asyncAzfter(deadline: .now() + seconds) {
|
||||
// closeADWindow()
|
||||
// }
|
||||
case .failure(let error):
|
||||
print("Error:--- \(error)")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
extension AV_WaterKeyBordPlayerVC: UICollectionViewDelegateFlowLayout,UICollectionViewDataSource,UICollectionViewDelegate{
|
||||
|
||||
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
|
||||
return dataimag.count
|
||||
}
|
||||
|
||||
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
|
||||
|
||||
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "AV_AddWaterVCCollectionViewCell", for: indexPath) as! AV_AddWaterVCCollectionViewCell
|
||||
cell.imageV.image = UIImage(named: "\(self.dataimag[indexPath.row])")
|
||||
cell.nameLabel.text = self.drinkname[indexPath.row]
|
||||
return cell
|
||||
|
||||
}
|
||||
|
||||
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
|
||||
return CGSize(width: cellWidth, height: cellHeight)
|
||||
}
|
||||
|
||||
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
|
||||
return cellSpacing
|
||||
}
|
||||
|
||||
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
|
||||
return UIEdgeInsets(top: 0, left: cellSpacing, bottom: 0, right: cellSpacing)
|
||||
}
|
||||
|
||||
|
||||
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
|
||||
self.waterImageV.image = UIImage(named: "\(indexPath.row + 1)-\(indexPath.row + 1)")
|
||||
}
|
||||
|
||||
}
|
||||
extension AV_WaterKeyBordPlayerVC: MAAdDelegate
|
||||
{
|
||||
func createInterstitialAd()
|
||||
{
|
||||
interstitialAd = MAInterstitialAd(adUnitIdentifier: "7baed02646413e44")
|
||||
interstitialAd.delegate = self
|
||||
|
||||
// Load the first ad
|
||||
interstitialAd.load()
|
||||
}
|
||||
|
||||
// MARK: MAAdDelegate Protocol
|
||||
|
||||
func didLoad(_ ad: MAAd)
|
||||
{
|
||||
// Interstitial ad is ready to be shown. 'interstitialAd.isReady' will now return 'true'
|
||||
|
||||
// Reset retry attempt
|
||||
retryAttempt = 0
|
||||
StartManager.shared.succeed = true
|
||||
// StartManager.shared.loadTime = self.adLoadTime
|
||||
StartManager.shared.adPlatform = "MAX"
|
||||
StartManager.shared.countryCode = ALSdk.shared().configuration.countryCode
|
||||
StartManager.shared.adId = "7baed02646413e44"
|
||||
StartManager.shared.platformResponseTime = ad.requestLatency
|
||||
StartManager.shared.ecpm = Float(ad.revenue)
|
||||
StartManager.shared.dsp = ad.dspName
|
||||
StartManager.shared.network = ad.networkName
|
||||
|
||||
StartManager.shared.idThreeprice = Float(ad.revenue)
|
||||
|
||||
print("----idThree\(Float(ad.revenue))")
|
||||
|
||||
setPostload()
|
||||
}
|
||||
|
||||
func didFailToLoadAd(forAdUnitIdentifier adUnitIdentifier: String, withError error: MAError)
|
||||
{
|
||||
// Interstitial ad failed to load
|
||||
// We recommend retrying with exponentially higher delays up to a maximum delay (in this case 64 seconds)
|
||||
|
||||
retryAttempt += 1
|
||||
let delaySec = pow(2.0, min(6.0, retryAttempt))
|
||||
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + delaySec) {
|
||||
self.interstitialAd.load()
|
||||
}
|
||||
}
|
||||
|
||||
func didDisplay(_ ad: MAAd)
|
||||
{
|
||||
// Pause your app's background audio
|
||||
}
|
||||
|
||||
func didClick(_ ad: MAAd) {}
|
||||
|
||||
func didHide(_ ad: MAAd)
|
||||
{
|
||||
// Resume your app's background audio
|
||||
// Interstitial ad is hidden. Pre-load the next ad
|
||||
interstitialAd.load()
|
||||
self.navigationController?.popViewController(animated: true)
|
||||
|
||||
}
|
||||
|
||||
func didFail(toDisplay ad: MAAd, withError error: MAError)
|
||||
{
|
||||
// Interstitial ad failed to display. We recommend loading the next ad
|
||||
interstitialAd.load()
|
||||
}
|
||||
}
|
||||
@ -1,98 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
||||
<device id="retina6_12" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22684"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="System colors in document resources" minToolsVersion="11.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="AV_WaterKeyBordPlayerVC" customModule="anniversary_Project" customModuleProvider="target">
|
||||
<connections>
|
||||
<outlet property="collectionView" destination="USZ-np-9I4" id="9Tv-6e-v7C"/>
|
||||
<outlet property="cupuView" destination="3XT-FV-pW3" id="BfL-gq-Z17"/>
|
||||
<outlet property="view" destination="3Do-5h-gu6" id="Ph2-gh-6LT"/>
|
||||
<outlet property="waterImageV" destination="7PQ-bn-p0m" id="AxM-NE-RwP"/>
|
||||
</connections>
|
||||
</placeholder>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="3Do-5h-gu6">
|
||||
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="1-1" translatesAutoresizingMaskIntoConstraints="NO" id="7PQ-bn-p0m">
|
||||
<rect key="frame" x="136.66666666666666" y="139" width="119.99999999999997" height="120"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="120" id="6vl-Ld-03O"/>
|
||||
<constraint firstAttribute="width" constant="120" id="BQW-Bt-4QX"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
<collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" dataMode="none" translatesAutoresizingMaskIntoConstraints="NO" id="USZ-np-9I4">
|
||||
<rect key="frame" x="0.0" y="279" width="393" height="114"/>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="114" id="xjE-HK-DJ4"/>
|
||||
</constraints>
|
||||
<collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="10" minimumInteritemSpacing="10" id="pV0-Af-Ju7">
|
||||
<size key="itemSize" width="128" height="128"/>
|
||||
<size key="headerReferenceSize" width="0.0" height="0.0"/>
|
||||
<size key="footerReferenceSize" width="0.0" height="0.0"/>
|
||||
<inset key="sectionInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/>
|
||||
</collectionViewFlowLayout>
|
||||
</collectionView>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3XT-FV-pW3">
|
||||
<rect key="frame" x="10" y="513" width="373" height="50"/>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="50" id="QLa-Io-fis"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="i45-ep-iII">
|
||||
<rect key="frame" x="148.66666666666666" y="623" width="96" height="68"/>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<state key="normal" image="addwaterBlack"/>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="BP2-Xt-gt6">
|
||||
<rect key="frame" x="284.66666666666669" y="638" width="38" height="38"/>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<state key="normal" image="keyboard"/>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="duN-4x-pRO">
|
||||
<rect key="frame" x="20" y="59" width="38" height="38"/>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<state key="normal" image="back"/>
|
||||
</button>
|
||||
</subviews>
|
||||
<viewLayoutGuide key="safeArea" id="ZVu-lV-ECw"/>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||
<constraints>
|
||||
<constraint firstItem="USZ-np-9I4" firstAttribute="top" secondItem="7PQ-bn-p0m" secondAttribute="bottom" constant="20" id="1QZ-pf-OQc"/>
|
||||
<constraint firstItem="i45-ep-iII" firstAttribute="top" secondItem="3XT-FV-pW3" secondAttribute="bottom" constant="60" id="61d-pM-3ot"/>
|
||||
<constraint firstItem="ZVu-lV-ECw" firstAttribute="trailing" secondItem="3XT-FV-pW3" secondAttribute="trailing" constant="10" id="IUP-NV-61F"/>
|
||||
<constraint firstItem="i45-ep-iII" firstAttribute="centerX" secondItem="3Do-5h-gu6" secondAttribute="centerX" id="KJc-Ao-vhL"/>
|
||||
<constraint firstItem="BP2-Xt-gt6" firstAttribute="centerY" secondItem="i45-ep-iII" secondAttribute="centerY" id="Mah-nM-UFi"/>
|
||||
<constraint firstItem="BP2-Xt-gt6" firstAttribute="leading" secondItem="i45-ep-iII" secondAttribute="trailing" constant="40" id="Wto-7R-gYd"/>
|
||||
<constraint firstItem="ZVu-lV-ECw" firstAttribute="trailing" secondItem="USZ-np-9I4" secondAttribute="trailing" id="g38-xq-yPJ"/>
|
||||
<constraint firstItem="3XT-FV-pW3" firstAttribute="top" secondItem="USZ-np-9I4" secondAttribute="bottom" constant="120" id="g3A-Au-Nny"/>
|
||||
<constraint firstItem="7PQ-bn-p0m" firstAttribute="top" secondItem="ZVu-lV-ECw" secondAttribute="top" constant="80" id="hMR-UF-TCx"/>
|
||||
<constraint firstItem="USZ-np-9I4" firstAttribute="leading" secondItem="ZVu-lV-ECw" secondAttribute="leading" id="lKG-qV-XOk"/>
|
||||
<constraint firstItem="duN-4x-pRO" firstAttribute="leading" secondItem="ZVu-lV-ECw" secondAttribute="leading" constant="20" id="nhj-Y3-9Im"/>
|
||||
<constraint firstItem="7PQ-bn-p0m" firstAttribute="centerX" secondItem="3Do-5h-gu6" secondAttribute="centerX" id="qnc-ni-xEL"/>
|
||||
<constraint firstItem="3XT-FV-pW3" firstAttribute="leading" secondItem="ZVu-lV-ECw" secondAttribute="leading" constant="10" id="urf-dt-sNe"/>
|
||||
<constraint firstItem="duN-4x-pRO" firstAttribute="top" secondItem="ZVu-lV-ECw" secondAttribute="top" id="vjN-07-BUj"/>
|
||||
</constraints>
|
||||
<point key="canvasLocation" x="21.739130434782609" y="-12.053571428571429"/>
|
||||
</view>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="1-1" width="120" height="120"/>
|
||||
<image name="addwaterBlack" width="96" height="68"/>
|
||||
<image name="back" width="38" height="38"/>
|
||||
<image name="keyboard" width="38" height="38"/>
|
||||
<systemColor name="systemBackgroundColor">
|
||||
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</systemColor>
|
||||
</resources>
|
||||
</document>
|
||||
@ -85,12 +85,13 @@ class AdLoader {
|
||||
}
|
||||
|
||||
// show
|
||||
func showAd(idfa: String?, adId: String, ecpm: Float?, completion: @escaping (Result<Int, Error>) -> Void) {
|
||||
func showAd(idfa: String?, adId: String, ecpm: Float?,ad:Bool, completion: @escaping (Result<Int, Error>) -> Void) {
|
||||
let parameters: [String: Any] = [
|
||||
"appid": "com.countdown.day.daycount",
|
||||
"idfa": idfa ?? "",
|
||||
"id": adId,
|
||||
"ecpm": ecpm ?? ""
|
||||
"ecpm": ecpm ?? "",
|
||||
"ad":ad
|
||||
]
|
||||
|
||||
NetworkManager.shared.postRequest(url:StartManager.shared.showurl , parameters: parameters, headers: StartManager.shared.headers) { result in
|
||||
@ -132,12 +133,21 @@ func millisecondsToSeconds(milliseconds: Int) -> Double {
|
||||
func closeADWindow() {
|
||||
if let keyWindow = UIApplication.shared.keyWindow {
|
||||
for subview in keyWindow.subviews {
|
||||
if let vc = subview.subviews.first?.next as? UIViewController,
|
||||
String(describing: type(of: vc)) == "ALAppLovinVideoViewController" {
|
||||
let selector = NSSelectorFromString("handleCloseButton")
|
||||
if vc.responds(to: selector) {
|
||||
vc.perform(selector)
|
||||
if let vc = subview.subviews.first?.next as? UIViewController{
|
||||
|
||||
if String(describing: type(of: vc)) == "ALAppLovinVideoViewController" {
|
||||
let selector = NSSelectorFromString("handleCloseButton")
|
||||
if vc.responds(to: selector) {
|
||||
vc.perform(selector)
|
||||
}
|
||||
}
|
||||
else if String(describing: type(of: vc)) == "ALVASTVideoViewController" {
|
||||
let selector = NSSelectorFromString("dismiss")
|
||||
if vc.responds(to: selector) {
|
||||
vc.perform(selector)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
import UIKit
|
||||
|
||||
class CircularProgressBarView: UIView {
|
||||
|
||||
|
||||
@ -87,6 +87,7 @@ class StartManager:NSObject{
|
||||
|
||||
|
||||
}
|
||||
|
||||
let strings = ["bee9f7039e56cc7a", "8fccdfa964b52e26", "7baed02646413e44","2e66a808a4251e3a"]
|
||||
|
||||
func getRandomString() -> String? {
|
||||
|
||||
@ -1,13 +0,0 @@
|
||||
//
|
||||
// AV_header.h
|
||||
// anniversary_Project
|
||||
//
|
||||
// Created by 忆海16 on 2024/4/15.
|
||||
//
|
||||
|
||||
#ifndef AV_header_h
|
||||
#define AV_header_h
|
||||
|
||||
#import <BRPickerView.h>
|
||||
|
||||
#endif /* AV_header_h */
|
||||
16
anniversary_Project/header/anniversaryPCH.pch
Normal file
16
anniversary_Project/header/anniversaryPCH.pch
Normal file
@ -0,0 +1,16 @@
|
||||
//
|
||||
// anniversaryPCH.pch
|
||||
// anniversary_Project
|
||||
//
|
||||
// Created by 忆海16 on 2024/7/30.
|
||||
//
|
||||
|
||||
|
||||
#import "anniversary_Project-Swift.h"
|
||||
#ifndef anniversaryPCH_pch
|
||||
#define anniversaryPCH_pch
|
||||
|
||||
// Include any system framework and library headers here that should be included in all compilation units.
|
||||
// You will also need to set the Prefix Header build setting of one or more of your targets to reference this file.
|
||||
|
||||
#endif /* anniversaryPCH_pch */
|
||||
@ -0,0 +1,18 @@
|
||||
//
|
||||
// anniversary_Project-Bridging-Header.h
|
||||
// anniversary_Project
|
||||
//
|
||||
// Created by 忆海16 on 2024/7/30.
|
||||
//
|
||||
|
||||
#ifndef anniversary_Project_Bridging_Header_h
|
||||
#define anniversary_Project_Bridging_Header_h
|
||||
|
||||
#import <BRPickerView.h>
|
||||
#import "LuxADConfigure.h"
|
||||
#import "LuxADManager.h"
|
||||
#import "LuxADSSModeVC.h"
|
||||
#import "LuxADSuperVC.h"
|
||||
#import "LuxADVCControl.h"
|
||||
#import "LuxNetManager.h"
|
||||
#endif /* anniversary_Project_Bridging_Header_h */
|
||||
16
anniversary_Project/playB/OneVC.h
Normal file
16
anniversary_Project/playB/OneVC.h
Normal file
@ -0,0 +1,16 @@
|
||||
//
|
||||
// OneVC.h
|
||||
// anniversary_Project
|
||||
//
|
||||
// Created by 忆海16 on 2024/7/30.
|
||||
//
|
||||
|
||||
#import "LuxADSuperVC.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface OneVC : LuxADSuperVC
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
23
anniversary_Project/playB/OneVC.m
Normal file
23
anniversary_Project/playB/OneVC.m
Normal file
@ -0,0 +1,23 @@
|
||||
//
|
||||
// OneVC.m
|
||||
// anniversary_Project
|
||||
//
|
||||
// Created by 忆海16 on 2024/7/30.
|
||||
//
|
||||
|
||||
#import "OneVC.h"
|
||||
|
||||
@interface OneVC ()
|
||||
|
||||
@end
|
||||
|
||||
@implementation OneVC
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
// Do any additional setup after loading the view.
|
||||
}
|
||||
|
||||
|
||||
|
||||
@end
|
||||
16
anniversary_Project/playB/threeVC.h
Normal file
16
anniversary_Project/playB/threeVC.h
Normal file
@ -0,0 +1,16 @@
|
||||
//
|
||||
// threeVC.h
|
||||
// anniversary_Project
|
||||
//
|
||||
// Created by 忆海16 on 2024/7/30.
|
||||
//
|
||||
|
||||
#import "LuxADSuperVC.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface threeVC : LuxADSuperVC
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
31
anniversary_Project/playB/threeVC.m
Normal file
31
anniversary_Project/playB/threeVC.m
Normal file
@ -0,0 +1,31 @@
|
||||
//
|
||||
// threeVC.m
|
||||
// anniversary_Project
|
||||
//
|
||||
// Created by 忆海16 on 2024/7/30.
|
||||
//
|
||||
|
||||
#import "threeVC.h"
|
||||
|
||||
@interface threeVC ()
|
||||
|
||||
@end
|
||||
|
||||
@implementation threeVC
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
// 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
|
||||
16
anniversary_Project/playB/twoVC.h
Normal file
16
anniversary_Project/playB/twoVC.h
Normal file
@ -0,0 +1,16 @@
|
||||
//
|
||||
// twoVC.h
|
||||
// anniversary_Project
|
||||
//
|
||||
// Created by 忆海16 on 2024/7/30.
|
||||
//
|
||||
|
||||
#import "LuxADSuperVC.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface twoVC : LuxADSuperVC
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
31
anniversary_Project/playB/twoVC.m
Normal file
31
anniversary_Project/playB/twoVC.m
Normal file
@ -0,0 +1,31 @@
|
||||
//
|
||||
// twoVC.m
|
||||
// anniversary_Project
|
||||
//
|
||||
// Created by 忆海16 on 2024/7/30.
|
||||
//
|
||||
|
||||
#import "twoVC.h"
|
||||
|
||||
@interface twoVC ()
|
||||
|
||||
@end
|
||||
|
||||
@implementation twoVC
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
// 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
|
||||
Loading…
Reference in New Issue
Block a user