Compare commits

...

4 Commits

Author SHA1 Message Date
澜声世纪
4c250038e0 1.w2a 启动页 通知 2025-12-10 10:23:22 +08:00
澜声世纪
b7a0a86a1a 1.文件目录修改 2025-12-08 17:32:39 +08:00
澜声世纪
41b7bc80c4 1.vip挽留 2025-12-08 17:06:30 +08:00
澜声世纪
50d1cd9069 1.ui调整 2025-12-08 16:04:26 +08:00
230 changed files with 2093 additions and 315 deletions

View File

@ -33,4 +33,11 @@ target 'SynthReel' do
pod 'HWPanModal'
pod 'LYEmptyView'
pod 'ZLPhotoBrowser'
pod 'Adjust'
# # AdMob SDK
# pod 'Google-Mobile-Ads-SDK'
#
# # AppLovin SDK
# pod 'AppLovinSDK'
end

View File

@ -194,8 +194,32 @@
3754B0312EE2C9D4009EBCAD /* SRVideoRechargeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3754B0302EE2C9D4009EBCAD /* SRVideoRechargeView.swift */; };
3779D0612ECF1CB8006B1698 /* SRShortHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3779D0602ECF1CB8006B1698 /* SRShortHeaderView.swift */; };
47BB39E2DD30787FA591F8EB /* Pods_SynthReel.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F9255BF4D4B1CFDDB5CFFB43 /* Pods_SynthReel.framework */; };
85ACDA312EE6C3640009B306 /* SRVipRetainAlert.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85ACDA302EE6C3640009B306 /* SRVipRetainAlert.swift */; };
85AE54682EE7F7940058FEA3 /* SRCoinPackCanReceiveModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85AE54672EE7F7940058FEA3 /* SRCoinPackCanReceiveModel.swift */; };
85AE546A2EE7F8790058FEA3 /* SRCoinsPackAlert.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85AE54692EE7F8790058FEA3 /* SRCoinsPackAlert.swift */; };
85AE546C2EE804A90058FEA3 /* SRHomeCoinsPackButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85AE546B2EE804A90058FEA3 /* SRHomeCoinsPackButton.swift */; };
85AE546E2EE809850058FEA3 /* AppDelegate+SRAPNS.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85AE546D2EE809850058FEA3 /* AppDelegate+SRAPNS.swift */; };
85AE54712EE80AFE0058FEA3 /* adjustManger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85AE54702EE80AFE0058FEA3 /* adjustManger.swift */; };
85AE54732EE80B700058FEA3 /* AppDelegate+adjust.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85AE54722EE80B700058FEA3 /* AppDelegate+adjust.swift */; };
85AE54762EE80D900058FEA3 /* SROpenAppModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85AE54752EE80D900058FEA3 /* SROpenAppModel.swift */; };
85AE54782EE8106F0058FEA3 /* SRApnsAlert.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85AE54772EE8106F0058FEA3 /* SRApnsAlert.swift */; };
85AE547A2EE8154A0058FEA3 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 85AE54792EE8154A0058FEA3 /* GoogleService-Info.plist */; };
85AE549C2EE81E730058FEA3 /* SRAppStartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85AE549B2EE81E730058FEA3 /* SRAppStartViewController.swift */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
85AE54992EE818190058FEA3 /* Embed Foundation Extensions */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 13;
files = (
);
name = "Embed Foundation Extensions";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
03980F4E2ECEB91C0006E317 /* SRRecommendPlayerViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SRRecommendPlayerViewModel.swift; sourceTree = "<group>"; };
03980F502ECEBEE20006E317 /* SRRecommendPlayerCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SRRecommendPlayerCell.swift; sourceTree = "<group>"; };
@ -338,7 +362,6 @@
3754AD012EDA8AF7009EBCAD /* SRLoginController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SRLoginController.swift; sourceTree = "<group>"; };
3754AD192EDD745A009EBCAD /* SRVideoLockView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SRVideoLockView.swift; sourceTree = "<group>"; };
3754AD1B2EDD77BA009EBCAD /* SRVideoUnlockResult.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SRVideoUnlockResult.swift; sourceTree = "<group>"; };
3754AD1D2EDD84DD009EBCAD /* SynthReel.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = SynthReel.entitlements; sourceTree = "<group>"; };
3754AD302EDD939A009EBCAD /* SRUserLoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SRUserLoginView.swift; sourceTree = "<group>"; };
3754AD322EDD96E0009EBCAD /* SRLoginButtonView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SRLoginButtonView.swift; sourceTree = "<group>"; };
3754AD352EDD9AA7009EBCAD /* SRLogin.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SRLogin.swift; sourceTree = "<group>"; };
@ -497,6 +520,20 @@
85ACDA282EE69CD90009B306 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
85ACDA292EE69CD90009B306 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
85ACDA2B2EE69CD90009B306 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
85ACDA302EE6C3640009B306 /* SRVipRetainAlert.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SRVipRetainAlert.swift; sourceTree = "<group>"; };
85AE54672EE7F7940058FEA3 /* SRCoinPackCanReceiveModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SRCoinPackCanReceiveModel.swift; sourceTree = "<group>"; };
85AE54692EE7F8790058FEA3 /* SRCoinsPackAlert.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SRCoinsPackAlert.swift; sourceTree = "<group>"; };
85AE546B2EE804A90058FEA3 /* SRHomeCoinsPackButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SRHomeCoinsPackButton.swift; sourceTree = "<group>"; };
85AE546D2EE809850058FEA3 /* AppDelegate+SRAPNS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AppDelegate+SRAPNS.swift"; sourceTree = "<group>"; };
85AE54702EE80AFE0058FEA3 /* adjustManger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = adjustManger.swift; sourceTree = "<group>"; };
85AE54722EE80B700058FEA3 /* AppDelegate+adjust.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AppDelegate+adjust.swift"; sourceTree = "<group>"; };
85AE54752EE80D900058FEA3 /* SROpenAppModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SROpenAppModel.swift; sourceTree = "<group>"; };
85AE54772EE8106F0058FEA3 /* SRApnsAlert.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SRApnsAlert.swift; sourceTree = "<group>"; };
85AE54792EE8154A0058FEA3 /* GoogleService-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
85AE54802EE818180058FEA3 /* WidgetKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WidgetKit.framework; path = System/Library/Frameworks/WidgetKit.framework; sourceTree = SDKROOT; };
85AE54822EE818180058FEA3 /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = System/Library/Frameworks/SwiftUI.framework; sourceTree = SDKROOT; };
85AE549A2EE8183A0058FEA3 /* SynthReel.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = SynthReel.entitlements; sourceTree = "<group>"; };
85AE549B2EE81E730058FEA3 /* SRAppStartViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SRAppStartViewController.swift; sourceTree = "<group>"; };
AA88214030574193B51DE563 /* Pods-SynthReel.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SynthReel.release.xcconfig"; path = "Target Support Files/Pods-SynthReel/Pods-SynthReel.release.xcconfig"; sourceTree = "<group>"; };
F9255BF4D4B1CFDDB5CFFB43 /* Pods_SynthReel.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SynthReel.framework; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
@ -566,6 +603,7 @@
03B1A8422EC5CB99006C353F /* SRTabBarController.swift */,
03B1A8442EC5CBBB006C353F /* SRNavigationController.swift */,
03B1A8462EC5CBCF006C353F /* SRViewController.swift */,
85AE549B2EE81E730058FEA3 /* SRAppStartViewController.swift */,
);
path = ViewController;
sourceTree = "<group>";
@ -655,6 +693,7 @@
370D2F2C2ED5AA9700571E77 /* SRViralHitCell.swift */,
3754ACC02ED69105009EBCAD /* SRTopChartsHeaderView.swift */,
3754ACDB2ED83F80009EBCAD /* SRHomeHistoryBottomView.swift */,
85AE546B2EE804A90058FEA3 /* SRHomeCoinsPackButton.swift */,
);
path = V;
sourceTree = "<group>";
@ -681,8 +720,8 @@
03B1A8EA2EC72BFB006C353F /* Player */ = {
isa = PBXGroup;
children = (
03B1A9202ECB2F25006C353F /* VC */,
03B1A9242ECBFF03006C353F /* V */,
03B1A9202ECB2F25006C353F /* VC */,
03B1A8EB2EC72C0E006C353F /* M */,
03B1A9232ECBFEF9006C353F /* VM */,
);
@ -731,6 +770,7 @@
3754ACD62ED82774009EBCAD /* SRDetailRecommendCell.swift */,
3754AD192EDD745A009EBCAD /* SRVideoLockView.swift */,
3754B0302EE2C9D4009EBCAD /* SRVideoRechargeView.swift */,
85ACDA302EE6C3640009B306 /* SRVipRetainAlert.swift */,
);
path = V;
sourceTree = "<group>";
@ -756,7 +796,7 @@
03E9A7C82EC47177000D1067 /* SynthReel */ = {
isa = PBXGroup;
children = (
3754AD1D2EDD84DD009EBCAD /* SynthReel.entitlements */,
85AE549A2EE8183A0058FEA3 /* SynthReel.entitlements */,
03E9A7D02EC471D6000D1067 /* Delegate */,
03E9A7D22EC47204000D1067 /* Base */,
03E9A7D32EC4720F000D1067 /* Class */,
@ -773,6 +813,8 @@
03E9A7BF2EC47177000D1067 /* AppDelegate.swift */,
03E9A7C62EC47177000D1067 /* SceneDelegate.swift */,
03B1A83F2EC5CA2E006C353F /* AppDelegate+Config.swift */,
85AE546D2EE809850058FEA3 /* AppDelegate+SRAPNS.swift */,
85AE54722EE80B700058FEA3 /* AppDelegate+adjust.swift */,
);
path = Delegate;
sourceTree = "<group>";
@ -780,6 +822,7 @@
03E9A7D12EC471F3000D1067 /* Source */ = {
isa = PBXGroup;
children = (
85AE54792EE8154A0058FEA3 /* GoogleService-Info.plist */,
03E9A7C02EC47177000D1067 /* Assets.xcassets */,
03E9A7C12EC47177000D1067 /* Info.plist */,
03E9A7C32EC47177000D1067 /* LaunchScreen.storyboard */,
@ -792,6 +835,7 @@
03E9A7D22EC47204000D1067 /* Base */ = {
isa = PBXGroup;
children = (
85AE54742EE80D7A0058FEA3 /* Model */,
3754ACE22ED93E04009EBCAD /* webview */,
03B1A8412EC5CB4F006C353F /* ViewController */,
03B1A8D62EC6D03A006C353F /* View */,
@ -820,8 +864,9 @@
03E9A7D42EC4764A000D1067 /* Libs */ = {
isa = PBXGroup;
children = (
3754AF022EDED751009EBCAD /* SRAppstore */,
3754AEFF2EDED691009EBCAD /* payManger */,
85AE546F2EE80AE40058FEA3 /* adjust */,
3754AF022EDED751009EBCAD /* SRAppstore */,
3754AD342EDD9A8F009EBCAD /* SRLogin */,
3754ACD82ED83724009EBCAD /* FSPagerView */,
3754ACCF2ED81F2F009EBCAD /* Alert */,
@ -974,6 +1019,7 @@
isa = PBXGroup;
children = (
3754ACD02ED81F55009EBCAD /* SRBaseAlert.swift */,
85AE54772EE8106F0058FEA3 /* SRApnsAlert.swift */,
);
path = Alert;
sourceTree = "<group>";
@ -1015,6 +1061,7 @@
3754B0162EE12633009EBCAD /* SRCoinPackConfirmItemView.swift */,
3754B0182EE1267B009EBCAD /* SRCoinPackConfirmItem1View.swift */,
3754B01A2EE12690009EBCAD /* SRCoinPackConfirmItem2View.swift */,
85AE54692EE7F8790058FEA3 /* SRCoinsPackAlert.swift */,
);
path = view;
sourceTree = "<group>";
@ -1125,6 +1172,7 @@
children = (
3754ACFB2ED9A36C009EBCAD /* SRCoinsPackModel.swift */,
3754ACFD2ED9A3A0009EBCAD /* SRCoinsPackReceiveModel.swift */,
85AE54672EE7F7940058FEA3 /* SRCoinPackCanReceiveModel.swift */,
);
path = M;
sourceTree = "<group>";
@ -1526,6 +1574,22 @@
path = "tokenizedHrtf 2";
sourceTree = "<group>";
};
85AE546F2EE80AE40058FEA3 /* adjust */ = {
isa = PBXGroup;
children = (
85AE54702EE80AFE0058FEA3 /* adjustManger.swift */,
);
path = adjust;
sourceTree = "<group>";
};
85AE54742EE80D7A0058FEA3 /* Model */ = {
isa = PBXGroup;
children = (
85AE54752EE80D900058FEA3 /* SROpenAppModel.swift */,
);
path = Model;
sourceTree = "<group>";
};
8CAFCEC2C631CAE75726D90C /* Pods */ = {
isa = PBXGroup;
children = (
@ -1539,6 +1603,8 @@
isa = PBXGroup;
children = (
F9255BF4D4B1CFDDB5CFFB43 /* Pods_SynthReel.framework */,
85AE54802EE818180058FEA3 /* WidgetKit.framework */,
85AE54822EE818180058FEA3 /* SwiftUI.framework */,
);
name = Frameworks;
sourceTree = "<group>";
@ -1555,6 +1621,7 @@
03E9A7A42EC4716A000D1067 /* Frameworks */,
03E9A7A52EC4716A000D1067 /* Resources */,
92A47CFFAED31670C9452A17 /* [CP] Embed Pods Frameworks */,
85AE54992EE818190058FEA3 /* Embed Foundation Extensions */,
);
buildRules = (
);
@ -1573,7 +1640,7 @@
attributes = {
BuildIndependentTargetsInParallel = 1;
CLASSPREFIX = SR;
LastSwiftUpdateCheck = 2600;
LastSwiftUpdateCheck = 1610;
LastUpgradeCheck = 2600;
ORGANIZATIONNAME = SR;
TargetAttributes = {
@ -1614,6 +1681,7 @@
files = (
03E9A7CC2EC47177000D1067 /* Assets.xcassets in Resources */,
03B1A8582EC5E4F1006C353F /* Localizable.strings in Resources */,
85AE547A2EE8154A0058FEA3 /* GoogleService-Info.plist in Resources */,
03B1A8DD2EC6D0EB006C353F /* SRHomeChildCell.xib in Resources */,
03E9A7CE2EC47177000D1067 /* LaunchScreen.storyboard in Resources */,
);
@ -1669,6 +1737,7 @@
buildActionMask = 2147483647;
files = (
03B1A9402ECC45BA006C353F /* SRTableViewCell.swift in Sources */,
85AE54682EE7F7940058FEA3 /* SRCoinPackCanReceiveModel.swift in Sources */,
03E9A7EA2EC4995D000D1067 /* SRKeychain.swift in Sources */,
03E9A7D92EC47B90000D1067 /* SRNetworkReachableManager.swift in Sources */,
3754ACF82ED9A32C009EBCAD /* SRCoinPackHeaderView.swift in Sources */,
@ -1683,6 +1752,7 @@
3754B0312EE2C9D4009EBCAD /* SRVideoRechargeView.swift in Sources */,
3754AF1C2EDEF112009EBCAD /* SRStoreCoinsView.swift in Sources */,
03B1A8452EC5CBBB006C353F /* SRNavigationController.swift in Sources */,
85AE54712EE80AFE0058FEA3 /* adjustManger.swift in Sources */,
03B1A9092ECAAF55006C353F /* SRHomeTopChartsView.swift in Sources */,
03E9A7E42EC49593000D1067 /* SRUrlPath.swift in Sources */,
3754AF122EDEDEBF009EBCAD /* SRIapOrderModel.swift in Sources */,
@ -1694,10 +1764,13 @@
03B1A9172ECAF14F006C353F /* SRHomeHotView.swift in Sources */,
03B1A8FD2EC81C62006C353F /* SRHomeBannerCell.swift in Sources */,
3754AF2A2EDEF425009EBCAD /* SRStoreCoinsCell.swift in Sources */,
85AE54762EE80D900058FEA3 /* SROpenAppModel.swift in Sources */,
03E9A7DB2EC485BE000D1067 /* SRNetwork.swift in Sources */,
85AE546A2EE7F8790058FEA3 /* SRCoinsPackAlert.swift in Sources */,
370D2F152ED457F000571E77 /* SRUserTopCell.swift in Sources */,
3754ACBD2ED5B6B6009EBCAD /* UINavigationBar+SRAdd.swift in Sources */,
3754ACE82ED93ED9009EBCAD /* SRWebMessageModel.swift in Sources */,
85AE54732EE80B700058FEA3 /* AppDelegate+adjust.swift in Sources */,
03E9A7F42EC4A94D000D1067 /* SRAccountToken.swift in Sources */,
3754ACD12ED81F55009EBCAD /* SRBaseAlert.swift in Sources */,
370D2F222ED54CA400571E77 /* SRPrivacyController.swift in Sources */,
@ -1733,6 +1806,7 @@
03E9A7EC2EC499A9000D1067 /* SRDeviceId.swift in Sources */,
03E9A7E22EC494F9000D1067 /* SRTargetType.swift in Sources */,
370D2F092ED44A6D00571E77 /* SRListMenuCell.swift in Sources */,
85AE549C2EE81E730058FEA3 /* SRAppStartViewController.swift in Sources */,
03980F532ECEDEAB0006E317 /* SRRecommendPlayerControlView.swift in Sources */,
03B1A90F2ECAC768006C353F /* SRHomeBingeWorthyView.swift in Sources */,
3754B0192EE1267B009EBCAD /* SRCoinPackConfirmItem1View.swift in Sources */,
@ -1746,6 +1820,7 @@
3754AD332EDD96E0009EBCAD /* SRLoginButtonView.swift in Sources */,
03B1A8402EC5CA37006C353F /* AppDelegate+Config.swift in Sources */,
03B1A9152ECAEE63006C353F /* SRHomeViralHitsCell.swift in Sources */,
85AE546E2EE809850058FEA3 /* AppDelegate+SRAPNS.swift in Sources */,
03B1A8472EC5CBCF006C353F /* SRViewController.swift in Sources */,
3754AF192EDEF0AF009EBCAD /* SRStoreController.swift in Sources */,
370D2F052ED3FEE700571E77 /* SRHistoryCell.swift in Sources */,
@ -1757,6 +1832,7 @@
3754AF262EDEF3A7009EBCAD /* SRSmallCoinViewCell.swift in Sources */,
03B1A8D82EC6D051006C353F /* SRCollectionView.swift in Sources */,
03B1A90D2ECAC51A006C353F /* NSNumber+SRAdd.swift in Sources */,
85AE54782EE8106F0058FEA3 /* SRApnsAlert.swift in Sources */,
3754AF082EDED91C009EBCAD /* SRPayDateModel.swift in Sources */,
03E9A7DD2EC485E1000D1067 /* SRNetworkModel.swift in Sources */,
3754ACEC2ED943AB009EBCAD /* SRAppWebViewController.swift in Sources */,
@ -1769,6 +1845,7 @@
03B1A9302ECC10D1006C353F /* SRSearchViewController.swift in Sources */,
03B1A8432EC5CB99006C353F /* SRTabBarController.swift in Sources */,
3754AD3E2EDD9C88009EBCAD /* SRLogin+FB.swift in Sources */,
85ACDA312EE6C3640009B306 /* SRVipRetainAlert.swift in Sources */,
03B1A8EF2EC72C78006C353F /* SRShortModel.swift in Sources */,
03B1A8ED2EC72C1F006C353F /* SRHomeModuleItem.swift in Sources */,
370D2F102ED4534500571E77 /* SRUserViewController.swift in Sources */,
@ -1836,6 +1913,7 @@
03B1A93C2ECC406E006C353F /* SRHotSearchView.swift in Sources */,
03B1A8E32EC6F577006C353F /* SRHomeMenuCell.swift in Sources */,
3754AD362EDD9AA7009EBCAD /* SRLogin.swift in Sources */,
85AE546C2EE804A90058FEA3 /* SRHomeCoinsPackButton.swift in Sources */,
3754AF142EDEE1AC009EBCAD /* SRStatAPI.swift in Sources */,
3754B01B2EE12690009EBCAD /* SRCoinPackConfirmItem2View.swift in Sources */,
3754ACE12ED93C4D009EBCAD /* SRCoinPackController.swift in Sources */,
@ -1890,8 +1968,8 @@
CODE_SIGN_ENTITLEMENTS = SynthReel/SynthReel.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = 6RZK7QBQQ7;
CURRENT_PROJECT_VERSION = 1.1;
DEVELOPMENT_TEAM = 9JR2Y32ZU3;
EXCLUDED_ARCHS = "";
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64;
GENERATE_INFOPLIST_FILE = YES;
@ -1906,7 +1984,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0;
MARKETING_VERSION = 1.0.1;
PRODUCT_BUNDLE_IDENTIFIER = com.SynthReel.Tv.lssj;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
@ -1934,8 +2012,8 @@
CODE_SIGN_ENTITLEMENTS = SynthReel/SynthReel.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = 6RZK7QBQQ7;
CURRENT_PROJECT_VERSION = 1.1;
DEVELOPMENT_TEAM = 9JR2Y32ZU3;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = SynthReel/Source/Info.plist;
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
@ -1948,7 +2026,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0;
MARKETING_VERSION = 1.0.1;
PRODUCT_BUNDLE_IDENTIFIER = com.SynthReel.Tv.lssj;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";

View File

@ -2,7 +2,7 @@
// SRHomeApi.swift
// SynthReel
//
// Created by on 2025/11/14.
// Created by on 2025/11/14.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRShortApi.swift
// SynthReel
//
// Created by on 2025/11/18.
// Created by on 2025/11/18.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRStatAPI.swift
// SynthReel
//
// Created by CSGY on 2025/12/2.
// Created by on 2025/12/2.
// Copyright © 2025 SR. All rights reserved.
//
@ -42,7 +42,7 @@ class SRStatAPI: NSObject {
var param = SRNetwork.Parameters(path: "/createOrder")
param.method = .post
param.parameters = [
"userId" : SRAccountManager.manager.userInfo?.customer_id ?? "",
"userId" : SRLogin.manager.userInfo?.customer_id ?? "",
"short_play_video_id" : videoId ?? "0",
"short_play_id" : shortPlayId ?? "0",
"event_key" : eventKey.rawValue,
@ -64,4 +64,35 @@ class SRStatAPI: NSObject {
}
}
}
static func requestUploadApnsAuthorizationStatus(_ status: Bool) async {
await withCheckedContinuation { continuation in
var param = SRNetwork.Parameters(path: "/customer/uploadNoticeStatus")
param.method = .post
param.parameters = [
"is_open_notice" : status ? 1 : 0
]
SRNetwork.request(parameters: param) { (_: SRNetwork.Response<String>) in
continuation.resume()
}
}
}
}
extension SRStatAPI {
///
static func uploadApnsAuthorizationStatus() {
UNUserNotificationCenter.current().getNotificationSettings { settings in
if settings.authorizationStatus == .authorized {
Task {
await requestUploadApnsAuthorizationStatus(true)
}
} else if settings.authorizationStatus == .denied {
Task {
await requestUploadApnsAuthorizationStatus(false)
}
}
}
}
}

View File

@ -2,7 +2,7 @@
// SRStoreAPI.swift
// SynthReel
//
// Created by CSGY on 2025/12/2.
// Created by on 2025/12/2.
// Copyright © 2025 SR. All rights reserved.
//
@ -72,9 +72,23 @@ class SRStoreAPI: NSObject {
}
}
static func requestCoinBagCanReceiveInfo() async -> SRCoinPackCanReceiveModel? {
await withCheckedContinuation { continuation in
var param = SRNetwork.Parameters(path: "/getReceiveDayCoin")
param.method = .get
SRNetwork.request(parameters: param) { (response: SRNetwork.Response<SRCoinPackCanReceiveModel>) in
continuation.resume(returning: response.data)
}
}
}
static func requestReceiveCoinsPackCoins(id: String?) async -> Bool {
await withCheckedContinuation { continuation in
var param = SRNetwork.Parameters(path: "/getReceiveDayCoinInfo")
var param = SRNetwork.Parameters(path: "/receiveDayCoin")
param.method = .post
param.parameters = [
"id" : id ?? ""
@ -89,5 +103,19 @@ class SRStoreAPI: NSObject {
}
}
static func requestVipRetainPayInfo() async -> SRPayAlertModel? {
await withCheckedContinuation { continuation in
var param = SRNetwork.Parameters(path: "/getRetainVipPaySetting")
param.method = .get
SRNetwork.request(parameters: param) { (response: SRNetwork.Response<SRPayAlertModel>) in
if let model = response.data,
model.info != nil {
continuation.resume(returning: model)
} else {
continuation.resume(returning: nil)
}
}
}
}
}

View File

@ -2,7 +2,7 @@
// SRUserApi.swift
// SynthReel
//
// Created by on 2025/11/13.
// Created by on 2025/11/13.
// Copyright © 2025 SR. All rights reserved.
//
@ -80,7 +80,7 @@ struct SRUserApi {
static func requestUploadApnsDeviceToken(token: String) async {
await withCheckedContinuation { continuation in
var param = SRNetwork.Parameters(path: "/customer/onLine")
var param = SRNetwork.Parameters(path: "/customer/firebaseToken")
param.method = .post
param.parameters = [
"fcm_token": token
@ -111,4 +111,17 @@ struct SRUserApi {
}
}
}
static func requestUploadW2a(data: String) async {
await withCheckedContinuation { continuation in
var param = SRNetwork.Parameters(path: "/w2aSelfAttribution")
param.method = .post
param.parameters = [
"data": data
]
SRNetwork.request(parameters: param) { (_: SRNetwork.Response<String>) in
continuation.resume()
}
}
}
}

View File

@ -2,7 +2,7 @@
// SRDefine.swift
// SynthReel
//
// Created by on 2025/11/12.
// Created by on 2025/11/12.
// Copyright © 2025 SR. All rights reserved.
//
import UIKit

View File

@ -2,7 +2,7 @@
// SRUserDefaultsKey.swift
// SynthReel
//
// Created by on 2025/11/12.
// Created by on 2025/11/12.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// Dictionary+SRAdd.swift
// SynthReel
//
// Created by CSGY on 2025/11/28.
// Created by on 2025/11/28.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// NSNumber+SRAdd.swift
// SynthReel
//
// Created by on 2025/11/17.
// Created by on 2025/11/17.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// String+SRAdd.swift
// SynthReel
//
// Created by on 2025/11/13.
// Created by on 2025/11/13.
// Copyright © 2025 SR. All rights reserved.
//
@ -36,3 +36,22 @@ extension String: SmartCodable {
}
}
extension String {
///url
func urlQuryToDictionary() -> [String : Any] {
let array = self.components(separatedBy: "&")
var tempDic: [String : Any] = [:]
array.forEach {
if let strRange = $0.range(of: "=") {
var key: String = String($0.prefix(upTo: strRange.upperBound))
key.removeLast()
var value: String = String($0.suffix(from: strRange.upperBound))
value = value.removingPercentEncoding ?? value
tempDic[key] = value
}
}
return tempDic
}
}

View File

@ -2,7 +2,7 @@
// UIFont+SRAdd.swift
// SynthReel
//
// Created by on 2025/11/13.
// Created by on 2025/11/13.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// UINavigationBar+SRAdd.swift
// SynthReel
//
// Created by CSGY on 2025/11/25.
// Created by on 2025/11/25.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// UIScreen+SRAdd.swift
// SynthReel
//
// Created by on 2025/11/13.
// Created by on 2025/11/13.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// UIScrollView+SRAdd.swift
// SynthReel
//
// Created by on 2025/11/17.
// Created by on 2025/11/17.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// UIStackView+SRAdd.swift
// SynthReel
//
// Created by on 2025/11/15.
// Created by on 2025/11/15.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// UIView+SRAdd.swift
// SynthReel
//
// Created by on 2025/11/17.
// Created by on 2025/11/17.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// UserDefaults+SRAdd.swift
// SynthReel
//
// Created by on 2025/11/12.
// Created by on 2025/11/12.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -0,0 +1,26 @@
//
// SROpenAppModel.swift
// SynthReel
//
// Created by on 2025/12/9.
// Copyright © 2025 SR. All rights reserved.
//
import UIKit
import SmartCodable
struct SROpenAppModel: SmartCodable {
enum Path: String, SmartCaseDefaultable {
case videoDetail = "detail"
///
case feedback = "feedback"
///
case promotion = "promotion"
}
var id: String?
var message_id: String?
var short_play_id: String?
var path: Path?
}

View File

@ -2,7 +2,7 @@
// SRNetwork.swift
// SynthReel
//
// Created by on 2025/11/12.
// Created by on 2025/11/12.
// Copyright © 2025 SR. All rights reserved.
//
@ -20,7 +20,8 @@ class SRNetwork: NSObject {
static func request<T>(parameters: SRNetwork.Parameters, completion: ((_ response: SRNetwork.Response<T>) -> Void)?) {
if SRAccountManager.manager.token == nil {
if SRLogin.manager.token == nil {
print(SRLogin.manager.token ?? "123")
self.requestToken(completer: nil)
}
@ -81,7 +82,7 @@ class SRNetwork: NSObject {
self.requestToken { token in
if token != nil {
_Concurrency.Task {
await SRAccountManager.manager.updateUserInfo()
await SRLogin.manager.requestUserToken(completer: nil)
}
}
}
@ -164,7 +165,7 @@ class SRNetwork: NSObject {
extension SRNetwork {
///token
static func requestToken(completer: ((_ token: SRAccountToken?) -> Void)?) {
static func requestToken(completer: ((_ token: SRTokenModel?) -> Void)?) {
guard self.tokenOperation == nil else {
completer?(nil)
return
@ -173,11 +174,11 @@ extension SRNetwork {
self.tokenOperation = BlockOperation(block: {
let semaphore = DispatchSemaphore(value: 0)
let param = SRNetwork.Parameters(path: "/customer/register")
print("chongfu")
DispatchQueue.main.async {
SRNetwork.request(parameters: param) { (response: SRNetwork.Response<SRAccountToken>) in
SRNetwork.request(parameters: param) { (response: SRNetwork.Response<SRTokenModel>) in
if let token = response.data {
SRAccountManager.manager.setAccountToken(token)
SRLogin.manager.loginSuccessSaveToken(token)
}
do { semaphore.signal() }
self.tokenOperation = nil
@ -189,5 +190,4 @@ extension SRNetwork {
operationQueue.addOperation(self.tokenOperation!)
}
}

View File

@ -2,7 +2,7 @@
// SRNetworkModel.swift
// SynthReel
//
// Created by on 2025/11/12.
// Created by on 2025/11/12.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRNetworkReachableManager.swift
// SynthReel
//
// Created by on 2025/11/12.
// Created by on 2025/11/12.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRResponseCryptor.swift
// SynthReel
//
// Created by on 2025/11/12.
// Created by on 2025/11/12.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRTargetType.swift
// SynthReel
//
// Created by on 2025/11/12.
// Created by on 2025/11/12.
// Copyright © 2025 SR. All rights reserved.
//
@ -56,7 +56,7 @@ extension SRTargetType: TargetType {
"device-id" : SRDeviceId.shared.id, //id
"system-type" : "ios",
"model" : UIDevice.current.machineModelName ?? "",
"authorization" : SRAccountManager.manager.token?.token ?? "",
"authorization" : SRLogin.manager.token?.token ?? "",
"device-gaid" : UIDevice.current.identifierForVendor?.uuidString ?? "",
"product-prefix" : "SynthReel"
]

View File

@ -2,14 +2,12 @@
// SRUrlPath.swift
// SynthReel
//
// Created by on 2025/11/12.
// Created by on 2025/11/12.
// Copyright © 2025 SR. All rights reserved.
//
let SRBaseURL = "https://api-synthreeltv.synthreeltv.com"
//let SRBaseURL = "https://api-univicos.univicos.com"
let SRUrlPathPrefix = "/th"
//let SRUrlPathPrefix = "/uni"
let SRWebBaseURL = "https://www.synthreeltv.com"
let SRCampaignWebURL = "https://campaign.synthreeltv.com"

View File

@ -2,7 +2,7 @@
// SRCollectionView.swift
// SynthReel
//
// Created by on 2025/11/14.
// Created by on 2025/11/14.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRGradientView.swift
// SynthReel
//
// Created by on 2025/11/15.
// Created by on 2025/11/15.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRGradientbutton.swift
// SynthReel
//
// Created by CSGY on 2025/11/27.
// Created by on 2025/11/27.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRImageView.swift
// SynthReel
//
// Created by on 2025/11/15.
// Created by on 2025/11/15.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRLabel.swift
// SynthReel
//
// Created by on 2025/11/14.
// Created by on 2025/11/14.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRNavgationTitleView.swift
// SynthReel
//
// Created by CSGY on 2025/11/25.
// Created by on 2025/11/25.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRPanModalContentView.swift
// SynthReel
//
// Created by on 2025/11/18.
// Created by on 2025/11/18.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRScrollView.swift
// SynthReel
//
// Created by on 2025/11/15.
// Created by on 2025/11/15.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRTableView.swift
// SynthReel
//
// Created by on 2025/11/18.
// Created by on 2025/11/18.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRTableViewCell.swift
// SynthReel
//
// Created by on 2025/11/18.
// Created by on 2025/11/18.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -0,0 +1,52 @@
//
// SRAppStartViewController.swift
// SynthReel
//
// Created by on 2025/12/9.
// Copyright © 2025 SR. All rights reserved.
//
import UIKit
class SRAppStartViewController: SRViewController {
var openAppBlock: (() -> Void)?
private lazy var lanuchVC: UIViewController? = {
let vc = SRTool.lanuchViewController
return vc
}()
private lazy var startButton: UIButton = {
let button = SRGradientbutton(type: .custom, primaryAction: UIAction(handler: { [weak self] _ in
guard let self = self else { return }
self.openAppBlock?()
}))
button.setBackgroundImage(.startButton, for: .normal)
button.setTitle("start", for: .normal)
button.setTitleColor(.white, for: .normal)
button.titleLabel?.font = .font(ofSize:16, weight: .semibold)
return button
}()
override func viewDidLoad() {
super.viewDidLoad()
if let vc = lanuchVC {
addChild(vc)
view.addSubview(vc.view)
}
view.addSubview(startButton)
startButton.snp.makeConstraints { make in
make.left.right.equalToSuperview().inset(48)
make.height.equalTo(50)
make.bottom.equalToSuperview().offset(-(UIScreen.safeBottom + 110))
}
}
}

View File

@ -2,7 +2,7 @@
// SRNavigationController.swift
// SynthReel
//
// Created by on 2025/11/13.
// Created by on 2025/11/13.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRTabBarController.swift
// SynthReel
//
// Created by on 2025/11/13.
// Created by on 2025/11/13.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRViewController.swift
// SynthReel
//
// Created by on 2025/11/13.
// Created by on 2025/11/13.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRAppWebViewController.swift
// SynthReel
//
// Created by CSGY on 2025/11/28.
// Created by on 2025/11/28.
// Copyright © 2025 SR. All rights reserved.
//
@ -52,7 +52,7 @@ extension SRAppWebViewController {
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { [weak self] in
guard let self = self else { return }
var dic = [
"token" : SRAccountManager.manager.token?.token ?? "",
"token" : SRLogin.manager.token?.token ?? "",
"time_zone" : String.timeZone(),
// "lang" : FALanguageManager.manager.currentLanguageKey,
"lang" : "en",

View File

@ -2,7 +2,7 @@
// SRBaseWebViewController + Script.swift
// SynthReel
//
// Created by CSGY on 2025/11/28.
// Created by on 2025/11/28.
// Copyright © 2025 SR. All rights reserved.
//
@ -75,7 +75,7 @@ extension SRBaseWebViewController {
case kSRWebMessageAccountDeletionFinish:
self.navigationController?.popToRootViewController(animated: true)
// NotificationCenter.default.post(name: FALogin.loginStatusChangeNotification, object: nil)
NotificationCenter.default.post(name: SRLogin.loginStatusChangeNotification, object: nil)
default:
break

View File

@ -2,7 +2,7 @@
// SRBaseWebViewController.swift
// SynthReel
//
// Created by CSGY on 2025/11/28.
// Created by on 2025/11/28.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRWebMessageModel.swift
// SynthReel
//
// Created by CSGY on 2025/11/28.
// Created by on 2025/11/28.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRWebView.swift
// SynthReel
//
// Created by CSGY on 2025/11/28.
// Created by on 2025/11/28.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -0,0 +1,14 @@
//
// SRCoinPackCanReceiveModel.swift
// SynthReel
//
// Created by on 2025/12/9.
// Copyright © 2025 SR. All rights reserved.
//
import UIKit
import SmartCodable
struct SRCoinPackCanReceiveModel: SmartCodable {
var coins: Int?
}

View File

@ -2,7 +2,7 @@
// SRCoinsPackModel.swift
// SynthReel
//
// Created by CSGY on 2025/11/28.
// Created by on 2025/11/28.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRCoinsPackReceiveModel.swift
// SynthReel
//
// Created by CSGY on 2025/11/28.
// Created by on 2025/11/28.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRCoinPackController.swift
// SynthReel
//
// Created by CSGY on 2025/11/28.
// Created by on 2025/11/28.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRCoinPackConfirmItem1View.swift
// SynthReel
//
// Created by CSGY on 2025/12/4.
// Created by on 2025/12/4.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRCoinPackConfirmItem2View.swift
// SynthReel
//
// Created by CSGY on 2025/12/4.
// Created by on 2025/12/4.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRCoinPackConfirmItemView.swift
// SynthReel
//
// Created by CSGY on 2025/12/4.
// Created by on 2025/12/4.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRCoinPackConfirmView.swift
// SynthReel
//
// Created by CSGY on 2025/12/4.
// Created by on 2025/12/4.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRCoinPackHeaderView.swift
// SynthReel
//
// Created by CSGY on 2025/11/28.
// Created by on 2025/11/28.
// Copyright © 2025 SR. All rights reserved.
//
@ -96,7 +96,7 @@ class SRCoinPackHeaderView: UIView {
//
let coinImage = UIImage(named: "smallCoins")!
let coinText = NSTextAttachment(image: coinImage)
coinText.bounds = CGRect(x: 0, y: -2.5, width: coinImage.size.width, height: coinImage.size.height)
coinText.bounds = CGRect(x: 0, y: -2.5, width: 13, height: 13)
let coinAtt = AttributedString(NSAttributedString(attachment: coinText))
let textAtt = AttributedString("synthreel_claim_all".localized + " ", attributes: AttributeContainer([

View File

@ -0,0 +1,124 @@
//
// SRCoinsPackAlert.swift
// SynthReel
//
// Created by on 2025/12/9.
// Copyright © 2025 SR. All rights reserved.
//
import UIKit
class SRCoinsPackAlert: SRBaseAlert {
var claimButtonClick: (() -> Void)?
var coinsCount: Int? {
didSet {
}
}
private lazy var imageView = UIImageView(image: UIImage(named: "coinalertBg"))
private lazy var titleLabel: UILabel = {
let label = UILabel()
label.font = .font(ofSize: 18, weight: .bold)
label.textColor = .white
label.textAlignment = .center
label.numberOfLines = 0
label.text = "coins_pack_alert_title".localized
return label
}()
private lazy var moreCoinimageView = UIImageView(image: UIImage(named: "moreCoins"))
private lazy var coinLabel: SRLabel = {
let label = SRLabel()
label.textColors = [UIColor.F_1_FF_2_F.cgColor, UIColor.srBlue.cgColor]
label.textStartPoint = .init(x: 0, y: 0.5)
label.textEndPoint = .init(x: 1, y: 0.5)
label.font = .font(ofSize: 20, weight: .semibold)
return label
}()
private lazy var claimButton: UIButton = {
let button = UIButton(type: .custom)
button.setTitle("synthreel_claim_now".localized, for: .normal)
button.setTitleColor(.black, for: .normal)
button.titleLabel?.font = .font(ofSize: 16, weight: .semibold)
button.setBackgroundImage(.cliamNowBg, for: .normal)
button.addTarget(self, action: #selector(claimButtonAciton), for: .touchUpInside)
return button
}()
private lazy var laterButton: UIButton = {
let button = UIButton(type: .custom)
button.setTitle("synthreel_open_notification_later".localized, for: .normal)
button.setTitleColor(.FFFFFF_40, for: .normal)
button.titleLabel?.font = .font(ofSize: 14, weight: .regular)
button.addTarget(self, action: #selector(dismiss), for: .touchUpInside)
return button
}()
override init(frame: CGRect) {
super.init(frame: frame)
fa_setupLayout()
}
@MainActor required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
@objc func claimButtonAciton () {
self.claimButtonClick?()
}
}
extension SRCoinsPackAlert {
private func fa_setupLayout() {
contentView.addSubview(imageView)
imageView.addSubview(titleLabel)
imageView.addSubview(moreCoinimageView)
imageView.addSubview(coinLabel)
imageView.addSubview(claimButton)
imageView.addSubview(laterButton)
imageView.isUserInteractionEnabled = true
imageView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
titleLabel.snp.makeConstraints { make in
make.left.equalTo(17)
make.right.lessThanOrEqualToSuperview().offset(-110)
make.top.equalTo(15)
}
moreCoinimageView.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.top.equalTo(titleLabel.snp.bottom).offset(35)
}
coinLabel.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.top.equalTo(moreCoinimageView.snp.bottom).offset(2)
}
claimButton.snp.makeConstraints { make in
make.top.equalTo(coinLabel.snp.bottom).offset(35)
make.left.right.equalToSuperview().inset(17)
make.height.equalTo(48)
}
laterButton.snp.makeConstraints { make in
make.left.right.height.equalTo(claimButton)
make.top.equalTo(claimButton.snp.bottom).offset(1)
make.bottom.equalToSuperview().offset(-13)
}
}
}

View File

@ -2,7 +2,7 @@
// SRCoinsPackBuyView.swift
// SynthReel
//
// Created by CSGY on 2025/12/4.
// Created by on 2025/12/4.
// Copyright © 2025 SR. All rights reserved.
//
@ -104,7 +104,7 @@ extension SRCoinsPackBuyView: UICollectionViewDelegate, UICollectionViewDataSour
view.buyFinishHandle = { [weak self] in
guard let self = self else { return }
Task {
await SRAccountManager.manager.updateUserInfo()
await SRLogin.manager.requestUserInfo(completer: nil)
self.buyFinishHandle?()
}
}

View File

@ -2,7 +2,7 @@
// SRCoinsPackClaimListCell.swift
// SynthReel
//
// Created by CSGY on 2025/12/4.
// Created by on 2025/12/4.
// Copyright © 2025 SR. All rights reserved.
//
@ -82,7 +82,7 @@ class SRCoinsPackClaimListCell: UICollectionViewCell {
button.configuration?.background.image = UIImage(named: "coinStackBg")
let coinImage = UIImage(named: "bigCoins")!
let coinText = NSTextAttachment(image: coinImage)
coinText.bounds = .init(x: 0, y: -2.5, width: coinImage.size.width, height: coinImage.size.height)
coinText.bounds = .init(x: 0, y: -2.5, width: 13, height: 13)
let coinAtt = AttributedString(NSAttributedString(attachment: coinText))
let countAtt = AttributedString(" \(self.model?.receive_coins ?? 0)", attributes: AttributeContainer([
.font : UIFont.font(ofSize: 12, weight: .bold),
@ -90,7 +90,7 @@ class SRCoinsPackClaimListCell: UICollectionViewCell {
]))
button.configuration?.attributedTitle = AttributedString("fableon_claim".localized, attributes: AttributeContainer([
button.configuration?.attributedTitle = AttributedString("synthreel_claim".localized, attributes: AttributeContainer([
.font : UIFont.font(ofSize: 14, weight: .bold),
.foregroundColor : UIColor.white
]))
@ -175,7 +175,7 @@ extension SRCoinsPackClaimListCell {
coinsView1.snp.makeConstraints { make in
make.left.equalToSuperview().offset(12)
make.bottom.equalToSuperview().offset(-18)
make.bottom.equalToSuperview().offset(-14)
}
lineView2.snp.makeConstraints { make in
@ -190,7 +190,7 @@ extension SRCoinsPackClaimListCell {
claimButton.snp.makeConstraints { make in
make.right.equalToSuperview().offset(-12)
make.centerY.equalTo(coinsView1)
make.bottom.equalTo(-14)
make.height.equalTo(48)
make.width.equalTo(120)
}
@ -221,14 +221,12 @@ extension SRCoinsPackClaimListCell {
return label
}()
private lazy var iconImageView = UIImageView(image: UIImage(named: "coins_icon_03"))
private lazy var iconImageView = UIImageView(image: UIImage(named: "bigCoins"))
private lazy var coinsLabel: UILabel = {
let label = SRLabel()
label.font = .font(ofSize: 14, weight: .bold)
label.textColors = [UIColor._4_CFFD_4.cgColor, UIColor._51_D_4_FF.cgColor]
label.textStartPoint = .init(x: 0.5, y: 0)
label.textEndPoint = .init(x: 0.5, y: 1)
label.textColor = .white
label.text = "0"
return label
}()

View File

@ -2,7 +2,7 @@
// SRCoinsPackClaimListView.swift
// SynthReel
//
// Created by CSGY on 2025/12/4.
// Created by on 2025/12/4.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRCategoryModel.swift
// SynthReel
//
// Created by on 2025/11/14.
// Created by on 2025/11/14.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRHomeModuleItem.swift
// SynthReel
//
// Created by on 2025/11/14.
// Created by on 2025/11/14.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRHomeBannerCell.swift
// SynthReel
//
// Created by on 2025/11/15.
// Created by on 2025/11/15.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRHomeBannerMiniCell.swift
// SynthReel
//
// Created by on 2025/11/17.
// Created by on 2025/11/17.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRHomeBannerView.swift
// SynthReel
//
// Created by on 2025/11/15.
// Created by on 2025/11/15.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRHomeBingeWorthyCell.swift
// SynthReel
//
// Created by on 2025/11/17.
// Created by on 2025/11/17.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRHomeBingeWorthyView.swift
// SynthReel
//
// Created by on 2025/11/17.
// Created by on 2025/11/17.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRHomeChildCell.swift
// SynthReel
//
// Created by on 2025/11/14.
// Created by on 2025/11/14.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -0,0 +1,50 @@
//
// SRHomeCoinsPackButton.swift
// SynthReel
//
// Created by on 2025/12/9.
// Copyright © 2025 SR. All rights reserved.
//
import UIKit
class SRHomeCoinsPackButton: UIControl {
private lazy var bgImageView = UIImageView(image: UIImage(named: "浮窗"))
private lazy var textBgImageView = UIImageView(image: UIImage(named: "Rectangle 1098"))
private lazy var textLabel: UILabel = {
let label = UILabel()
label.font = .font(ofSize: 10, weight: .init(900)).withBoldItalic()
label.textColor = .white
label.text = "synthreel_daily_coins".localized
return label
}()
override init(frame: CGRect) {
super.init(frame: frame)
addSubview(bgImageView)
addSubview(textBgImageView)
textBgImageView.addSubview(textLabel)
bgImageView.snp.makeConstraints { make in
make.left.right.top.equalToSuperview()
}
textBgImageView.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.bottom.equalToSuperview()
make.top.equalToSuperview().offset(50)
}
textLabel.snp.makeConstraints { make in
make.centerY.equalToSuperview()
make.centerX.equalToSuperview()
}
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}

View File

@ -2,7 +2,7 @@
// SRHomeHeaderView.swift
// SynthReel
//
// Created by on 2025/11/15.
// Created by on 2025/11/15.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRHomeHistoryBottomView.swift
// SynthReel
//
// Created by CSGY on 2025/11/27.
// Created by on 2025/11/27.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRHomeHotView.swift
// SynthReel
//
// Created by on 2025/11/17.
// Created by on 2025/11/17.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRHomeMenuCell.swift
// SynthReel
//
// Created by on 2025/11/14.
// Created by on 2025/11/14.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRHomeModuleView.swift
// SynthReel
//
// Created by on 2025/11/15.
// Created by on 2025/11/15.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRHomePremiereNowView.swift
// SynthReel
//
// Created by on 2025/11/17.
// Created by on 2025/11/17.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRHomeTopChartsContentView.swift
// SynthReel
//
// Created by on 2025/11/17.
// Created by on 2025/11/17.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRHomeTopChartsView.swift
// SynthReel
//
// Created by on 2025/11/17.
// Created by on 2025/11/17.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRHomeViralHitsCell.swift
// SynthReel
//
// Created by on 2025/11/17.
// Created by on 2025/11/17.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRHomeViralHitsView.swift
// SynthReel
//
// Created by on 2025/11/17.
// Created by on 2025/11/17.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRHomeYouLikeCell.swift
// SynthReel
//
// Created by on 2025/11/15.
// Created by on 2025/11/15.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRHomeYouLikeView.swift
// SynthReel
//
// Created by on 2025/11/15.
// Created by on 2025/11/15.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRHotSearchCell.swift
// SynthReel
//
// Created by on 2025/11/18.
// Created by on 2025/11/18.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRHotSearchView.swift
// SynthReel
//
// Created by on 2025/11/18.
// Created by on 2025/11/18.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRSearchHomeView.swift
// SynthReel
//
// Created by on 2025/11/18.
// Created by on 2025/11/18.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRSearchRecordCell.swift
// SynthReel
//
// Created by on 2025/11/18.
// Created by on 2025/11/18.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRSearchRecordView.swift
// SynthReel
//
// Created by on 2025/11/18.
// Created by on 2025/11/18.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRSearchResultCell.swift
// SynthReel
//
// Created by on 2025/11/18.
// Created by on 2025/11/18.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRSearchResultView.swift
// SynthReel
//
// Created by on 2025/11/18.
// Created by on 2025/11/18.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRSearchTextView.swift
// SynthReel
//
// Created by on 2025/11/18.
// Created by on 2025/11/18.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRTopChartsCell.swift
// SynthReel
//
// Created by CSGY on 2025/11/25.
// Created by on 2025/11/25.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRTopChartsHeaderView.swift
// SynthReel
//
// Created by CSGY on 2025/11/26.
// Created by on 2025/11/26.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRViralHitCell.swift
// SynthReel
//
// Created by CSGY on 2025/11/25.
// Created by on 2025/11/25.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRHomeChildViewController.swift
// SynthReel
//
// Created by on 2025/11/14.
// Created by on 2025/11/14.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRHomeViewController.swift
// SynthReel
//
// Created by on 2025/11/13.
// Created by on 2025/11/13.
// Copyright © 2025 SR. All rights reserved.
//
@ -117,6 +117,18 @@ class SRHomeViewController: SRViewController {
return view
}()
private lazy var coinPackButton: SRHomeCoinsPackButton = {
let view = SRHomeCoinsPackButton()
view.addAction(UIAction(handler: { [weak self] _ in
guard let self = self else { return }
let vc = SRCoinPackController()
self.navigationController?.pushViewController(vc, animated: true)
}), for: .touchUpInside)
return view
}()
deinit {
srPrint(message: "销毁")
}
@ -124,10 +136,11 @@ class SRHomeViewController: SRViewController {
override func viewDidLoad() {
super.viewDidLoad()
sr_setupUI()
print("authorization =", SRAccountManager.manager.token?.token ?? "")
print("authorization =", SRLogin.manager.token?.token ?? "")
Task {
await requestModuleList()
requestCoinsPackData()
}
}
@ -163,7 +176,7 @@ extension SRHomeViewController {
moreButton.addSubview(moreTitleLabel)
view.addSubview(playHistoryView)
// moreButton.addSubview(moreIconImageView)
view.addSubview(coinPackButton)
menuView.listContainer = pageView.listContainerView
searchButton.snp.makeConstraints { make in
@ -215,6 +228,11 @@ extension SRHomeViewController {
// make.centerY.equalToSuperview()
// make.right.equalToSuperview()
// }
coinPackButton.snp.makeConstraints { make in
make.right.equalToSuperview().offset(-2)
make.bottom.equalTo(playHistoryView.snp.top).offset(-100)
}
}
}
@ -300,5 +318,23 @@ extension SRHomeViewController {
self.playHistoryView.isHidden = true
}
}
func requestCoinsPackData() {
Task {
let model = await SRStoreAPI.requestCoinBagCanReceiveInfo()
guard let model = model else { return }
let coins = model.coins ?? 0
if coins > 0 {
let view = SRCoinsPackAlert()
view.coinsCount = coins
view.show(in: self.view)
view.claimButtonClick = { [weak self] in
let vc = SRCoinPackController()
self?.navigationController?.pushViewController(vc, animated: true)
}
}
}
}
}

View File

@ -2,7 +2,7 @@
// SRSearchViewController.swift
// SynthReel
//
// Created by on 2025/11/18.
// Created by on 2025/11/18.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRTopChartsViewController.swift
// SynthReel
//
// Created by CSGY on 2025/11/25.
// Created by on 2025/11/25.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRViralHitController.swift
// SynthReel
//
// Created by CSGY on 2025/11/25.
// Created by on 2025/11/25.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRHomeMenuDataSource.swift
// SynthReel
//
// Created by on 2025/11/14.
// Created by on 2025/11/14.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRHomeViewModel.swift
// SynthReel
//
// Created by on 2025/11/14.
// Created by on 2025/11/14.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRSearchViewModel.swift
// SynthReel
//
// Created by on 2025/11/18.
// Created by on 2025/11/18.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRLoginController.swift
// SynthReel
//
// Created by CSGY on 2025/11/29.
// Created by on 2025/11/29.
// Copyright © 2025 SR. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// SRFavoritesCell.swift
// SynthReel
//
// Created by CSGY on 2025/11/24.
// Created by on 2025/11/24.
// Copyright © 2025 SR. All rights reserved.
//

Some files were not shown because too many files have changed in this diff Show More