100Years 1 долоо хоног өмнө
parent
commit
4162c16157
22 өөрчлөгдсөн 217 нэмэгдсэн , 98 устгасан
  1. 14 14
      AIEmoji.xcodeproj/project.pbxproj
  2. 22 0
      AIEmoji/Assets.xcassets/Setting/purchaseVideoTimesAlertBj.imageset/Contents.json
  3. BIN
      AIEmoji/Assets.xcassets/Setting/purchaseVideoTimesAlertBj.imageset/purchaseVideoTimesAlertBj@2x.png
  4. BIN
      AIEmoji/Assets.xcassets/Setting/purchaseVideoTimesAlertBj.imageset/purchaseVideoTimesAlertBj@3x.png
  5. 1 1
      AIEmoji/Business/TSPurchaseMembershipVC/TSPurchaseVideoTimesVC/TSPurchaseVideoTimesVC.swift
  6. 9 53
      AIEmoji/Business/TSPurchaseMembershipVC/TSPurchaseVideoTimesVC/View/TSPurchaseVideoTimesAlertView.swift
  7. 6 6
      AIEmoji/Business/TSPurchaseMembershipVC/TSPurchaseVideoTimesVC/View/TSPurchaseVideoTimesView.swift
  8. 6 6
      AIEmoji/Business/TSSetingVC/SetingVC/TSSetingModel.swift
  9. 2 0
      AIEmoji/Business/TSSetingVC/SetingVC/TSSetingVC.swift
  10. 4 4
      AIEmoji/Business/TSSetingVC/SetingVC/TSSetingViewModel.swift
  11. 2 7
      AIEmoji/Business/TSSetingVC/SetingVC/View/SetingPurchaseTopView.swift
  12. 3 3
      AIEmoji/Business/TSSetingVC/SetingVC/View/TSSetingListView.swift
  13. 4 4
      AIEmoji/Common/Purchase/TSPurchaseManager.swift
  14. 16 0
      AIEmoji/de.lproj/Localizable.strings
  15. 16 0
      AIEmoji/en.lproj/Localizable.strings
  16. 16 0
      AIEmoji/es.lproj/Localizable.strings
  17. 16 0
      AIEmoji/ja.lproj/Localizable.strings
  18. 16 0
      AIEmoji/ko.lproj/Localizable.strings
  19. 16 0
      AIEmoji/pt-BR.lproj/Localizable.strings
  20. 16 0
      AIEmoji/pt-PT.lproj/Localizable.strings
  21. 16 0
      AIEmoji/zh-Hans.lproj/Localizable.strings
  22. 16 0
      AIEmoji/zh-Hant.lproj/Localizable.strings

+ 14 - 14
AIEmoji.xcodeproj/project.pbxproj

@@ -74,7 +74,7 @@
 		A80E72792D42285500C64288 /* TSBootPageVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80E72782D42285500C64288 /* TSBootPageVC.swift */; };
 		A80E73E12D533E5800C64288 /* TSPurchaseVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80E73D82D533E5800C64288 /* TSPurchaseVC.swift */; };
 		A80E73E42D533EB000C64288 /* TSPurchaseManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80E73E22D533EB000C64288 /* TSPurchaseManager.swift */; };
-		A80E73E62D5348D000C64288 /* SettingPurchaseTopView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80E73E52D5348CF00C64288 /* SettingPurchaseTopView.swift */; };
+		A80E73E62D5348D000C64288 /* SetingPurchaseTopView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80E73E52D5348CF00C64288 /* SetingPurchaseTopView.swift */; };
 		A80EDD032D6C282B003CD332 /* TSMarkDownTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDD022D6C281E003CD332 /* TSMarkDownTool.swift */; };
 		A80EDD462D6C3F82003CD332 /* MarkdownEscaping.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDD1B2D6C3F82003CD332 /* MarkdownEscaping.swift */; };
 		A80EDD472D6C3F82003CD332 /* MarkdownItalic.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDD202D6C3F82003CD332 /* MarkdownItalic.swift */; };
@@ -196,8 +196,8 @@
 		A87587122D81702700286A66 /* TSUserDefaultData.swift in Sources */ = {isa = PBXBuildFile; fileRef = A87587102D81702700286A66 /* TSUserDefaultData.swift */; };
 		A87587162D81734300286A66 /* text_to_photo_style.json in Resources */ = {isa = PBXBuildFile; fileRef = A87587152D81733C00286A66 /* text_to_photo_style.json */; };
 		A87587182D81814500286A66 /* TSAIThinkingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A87587172D81812C00286A66 /* TSAIThinkingView.swift */; };
-		A880ECF22E420FDC00222C47 /* AppDelegate+KF.swift in Sources */ = {isa = PBXBuildFile; fileRef = A880ECF12E420FD600222C47 /* AppDelegate+KF.swift */; };
 		A880ECF02E41E61600222C47 /* TSPurchaseManager+PurchasedNum.swift in Sources */ = {isa = PBXBuildFile; fileRef = A880ECEF2E41E61600222C47 /* TSPurchaseManager+PurchasedNum.swift */; };
+		A880ECF22E420FDC00222C47 /* AppDelegate+KF.swift in Sources */ = {isa = PBXBuildFile; fileRef = A880ECF12E420FD600222C47 /* AppDelegate+KF.swift */; };
 		A880ECF42E42F28600222C47 /* TSDBTimesManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = A880ECF32E42F28100222C47 /* TSDBTimesManager.swift */; };
 		A880ECF72E43434A00222C47 /* TSChangeLanguageVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A880ECF52E43434A00222C47 /* TSChangeLanguageVC.swift */; };
 		A880ECF92E43437C00222C47 /* LanguageManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = A880ECF82E43437C00222C47 /* LanguageManager.swift */; };
@@ -353,7 +353,7 @@
 		A8F775432D39346400AA6E93 /* TSSetingModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8F775422D39346100AA6E93 /* TSSetingModel.swift */; };
 		A8F775452D39347100AA6E93 /* TSSetingViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8F775442D39346700AA6E93 /* TSSetingViewModel.swift */; };
 		A8F775492D3935D600AA6E93 /* TSBusinessWebVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8F775472D3935D600AA6E93 /* TSBusinessWebVC.swift */; };
-		A8F7754B2D39376800AA6E93 /* TSSettingListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8F7754A2D39376700AA6E93 /* TSSettingListView.swift */; };
+		A8F7754B2D39376800AA6E93 /* TSSetingListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8F7754A2D39376700AA6E93 /* TSSetingListView.swift */; };
 		A8F7754E2D39E59100AA6E93 /* TSActionInfoModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8F7754D2D39E58B00AA6E93 /* TSActionInfoModel.swift */; };
 		A8F775502D39ECED00AA6E93 /* PhotoManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8F7754F2D39ECED00AA6E93 /* PhotoManager.swift */; };
 		A8F776212D3A3F0200AA6E93 /* TSEmojisChildVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8F776202D3A3F0100AA6E93 /* TSEmojisChildVC.swift */; };
@@ -462,7 +462,7 @@
 		A80E72782D42285500C64288 /* TSBootPageVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSBootPageVC.swift; sourceTree = "<group>"; };
 		A80E73D82D533E5800C64288 /* TSPurchaseVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSPurchaseVC.swift; sourceTree = "<group>"; };
 		A80E73E22D533EB000C64288 /* TSPurchaseManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSPurchaseManager.swift; sourceTree = "<group>"; };
-		A80E73E52D5348CF00C64288 /* SettingPurchaseTopView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingPurchaseTopView.swift; sourceTree = "<group>"; };
+		A80E73E52D5348CF00C64288 /* SetingPurchaseTopView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SetingPurchaseTopView.swift; sourceTree = "<group>"; };
 		A80EDD022D6C281E003CD332 /* TSMarkDownTool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSMarkDownTool.swift; sourceTree = "<group>"; };
 		A80EDD042D6C3F82003CD332 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
 		A80EDD052D6C3F82003CD332 /* MarkdownKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MarkdownKit.h; sourceTree = "<group>"; };
@@ -608,8 +608,8 @@
 		A87587102D81702700286A66 /* TSUserDefaultData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSUserDefaultData.swift; sourceTree = "<group>"; };
 		A87587152D81733C00286A66 /* text_to_photo_style.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = text_to_photo_style.json; sourceTree = "<group>"; };
 		A87587172D81812C00286A66 /* TSAIThinkingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSAIThinkingView.swift; sourceTree = "<group>"; };
-		A880ECF12E420FD600222C47 /* AppDelegate+KF.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AppDelegate+KF.swift"; sourceTree = "<group>"; };
 		A880ECEF2E41E61600222C47 /* TSPurchaseManager+PurchasedNum.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TSPurchaseManager+PurchasedNum.swift"; sourceTree = "<group>"; };
+		A880ECF12E420FD600222C47 /* AppDelegate+KF.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AppDelegate+KF.swift"; sourceTree = "<group>"; };
 		A880ECF32E42F28100222C47 /* TSDBTimesManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSDBTimesManager.swift; sourceTree = "<group>"; };
 		A880ECF52E43434A00222C47 /* TSChangeLanguageVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSChangeLanguageVC.swift; sourceTree = "<group>"; };
 		A880ECF82E43437C00222C47 /* LanguageManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LanguageManager.swift; sourceTree = "<group>"; };
@@ -768,7 +768,7 @@
 		A8F775422D39346100AA6E93 /* TSSetingModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSSetingModel.swift; sourceTree = "<group>"; };
 		A8F775442D39346700AA6E93 /* TSSetingViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSSetingViewModel.swift; sourceTree = "<group>"; };
 		A8F775472D3935D600AA6E93 /* TSBusinessWebVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSBusinessWebVC.swift; sourceTree = "<group>"; };
-		A8F7754A2D39376700AA6E93 /* TSSettingListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSSettingListView.swift; sourceTree = "<group>"; };
+		A8F7754A2D39376700AA6E93 /* TSSetingListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSSetingListView.swift; sourceTree = "<group>"; };
 		A8F7754D2D39E58B00AA6E93 /* TSActionInfoModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSActionInfoModel.swift; sourceTree = "<group>"; };
 		A8F7754F2D39ECED00AA6E93 /* PhotoManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoManager.swift; sourceTree = "<group>"; };
 		A8F776202D3A3F0100AA6E93 /* TSEmojisChildVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSEmojisChildVC.swift; sourceTree = "<group>"; };
@@ -2460,8 +2460,8 @@
 		A8F775462D39348500AA6E93 /* View */ = {
 			isa = PBXGroup;
 			children = (
-				A80E73E52D5348CF00C64288 /* SettingPurchaseTopView.swift */,
-				A8F7754A2D39376700AA6E93 /* TSSettingListView.swift */,
+				A80E73E52D5348CF00C64288 /* SetingPurchaseTopView.swift */,
+				A8F7754A2D39376700AA6E93 /* TSSetingListView.swift */,
 			);
 			path = View;
 			sourceTree = "<group>";
@@ -3169,7 +3169,7 @@
 				A8F7753F2D39340E00AA6E93 /* TSSetingVC.swift in Sources */,
 				A8F7762B2D3A70B200AA6E93 /* PaddedLabel.swift in Sources */,
 				60EE9A7F2E38727100565900 /* TSDiyVideoElementType.swift in Sources */,
-				A80E73E62D5348D000C64288 /* SettingPurchaseTopView.swift in Sources */,
+				A80E73E62D5348D000C64288 /* SetingPurchaseTopView.swift in Sources */,
 				A899D34A2D827A0E00AB9C1C /* TSChatThinkingModel.swift in Sources */,
 				A8708A102E09439200601686 /* TSDiscoverViewModel+Dic.swift in Sources */,
 				A80EDDE22D6EB8D8003CD332 /* TSPTPUploadCell.swift in Sources */,
@@ -3202,7 +3202,7 @@
 				A8EB1A642E30EA24001F58D7 /* KeychainManager.swift in Sources */,
 				A880ECF72E43434A00222C47 /* TSChangeLanguageVC.swift in Sources */,
 				A8708A1D2E095A8100601686 /* TSDiscoverStyleMoreCell.swift in Sources */,
-				A8F7754B2D39376800AA6E93 /* TSSettingListView.swift in Sources */,
+				A8F7754B2D39376800AA6E93 /* TSSetingListView.swift in Sources */,
 				A8F7748B2D38E8B700AA6E93 /* AppDelegate.swift in Sources */,
 				A8F4135D2DA8E6CA001E715A /* TSAIChangeEmoteStyleView.swift in Sources */,
 				A80327B02D813A0200AF7878 /* TSTTPSelectStyleCell.swift in Sources */,
@@ -3272,7 +3272,7 @@
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 3;
+				CURRENT_PROJECT_VERSION = 1;
 				DEVELOPMENT_TEAM = 65UD255J84;
 				ENABLE_USER_SCRIPT_SANDBOXING = NO;
 				GENERATE_INFOPLIST_FILE = YES;
@@ -3288,7 +3288,7 @@
 					"$(inherited)",
 					"@executable_path/Frameworks",
 				);
-				MARKETING_VERSION = 3.6.26;
+				MARKETING_VERSION = 3.6.27;
 				PRODUCT_BUNDLE_IDENTIFIER = com.girl.music.wallpaper;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
@@ -3311,7 +3311,7 @@
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 3;
+				CURRENT_PROJECT_VERSION = 1;
 				DEVELOPMENT_TEAM = 65UD255J84;
 				ENABLE_USER_SCRIPT_SANDBOXING = NO;
 				GENERATE_INFOPLIST_FILE = YES;
@@ -3327,7 +3327,7 @@
 					"$(inherited)",
 					"@executable_path/Frameworks",
 				);
-				MARKETING_VERSION = 3.6.26;
+				MARKETING_VERSION = 3.6.27;
 				PRODUCT_BUNDLE_IDENTIFIER = com.girl.music.wallpaper;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";

+ 22 - 0
AIEmoji/Assets.xcassets/Setting/purchaseVideoTimesAlertBj.imageset/Contents.json

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

BIN
AIEmoji/Assets.xcassets/Setting/purchaseVideoTimesAlertBj.imageset/purchaseVideoTimesAlertBj@2x.png


BIN
AIEmoji/Assets.xcassets/Setting/purchaseVideoTimesAlertBj.imageset/purchaseVideoTimesAlertBj@3x.png


+ 1 - 1
AIEmoji/Business/TSPurchaseMembershipVC/TSPurchaseVideoTimesVC/TSPurchaseVideoTimesVC.swift

@@ -167,7 +167,7 @@ extension TSPurchaseVideoTimesVC {
                     TSToastShared.showLoading(text: "Restoring now".localized,containerView: self.view)
                 case .restoreSuccess:
                     TSToastShared.hideLoading()
-                    let loadingText = "购买成功".localized
+                    let loadingText = "Video Effects Pack Activated!".localized
                     debugPrint(loadingText)
                     TSToastShared.showToast(text:loadingText)
                     DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {

+ 9 - 53
AIEmoji/Business/TSPurchaseMembershipVC/TSPurchaseVideoTimesVC/View/TSPurchaseVideoTimesAlertView.swift

@@ -13,7 +13,7 @@ struct TSPurchaseVideoTimesAlertView :View {
     @State var isExpand: Bool = false
     var body: some View {
         VStack {
-            let limit = "You've hit your limit. Get more effect credits below.".localized
+            let limit = "No effect uses left. Get more to keep creating.".localized
             
             Spacer()
             ZStack(alignment: .topTrailing) {
@@ -72,7 +72,7 @@ struct TSPurchaseVideoTimesAlertView :View {
                             }
                         } label: {
                             HStack(spacing: 4) {
-                                Text("View Credit Rules".localized)
+                                Text("View Usage Rules".localized)
                                     .font(.font(size: 12,weight: .regular))
                                     .foregroundColor(.white.opacity(0.7))
                                 Image(isExpand ? .chatUpArrow : .chatDownArrow)
@@ -85,10 +85,10 @@ struct TSPurchaseVideoTimesAlertView :View {
                         Spacer().frame(height: 10)
                         
                         VStack(alignment: .leading, spacing: 8, content: {
-                            TSPurchaseVideoTextLineView(image: .purchaseVideoTimesCheck, text: "Only VIP can purchase video effect credits".localized)
-                            TSPurchaseVideoTextLineView(image: .purchaseVideoTimesCheck, text: "Credits can be applied to all video generations".localized)
-                            TSPurchaseVideoTextLineView(image: .purchaseVideoTimesCheck, text: "Credits never expire and can be purchased repeatedly".localized)
-                            TSPurchaseVideoTextLineView(image: .purchaseVideoTimesCheck, text: "All unused credits will be lost if the app is uninstalled".localized)
+                            TSPurchaseVideoTextLineView(image: .purchaseVideoTimesCheck, text: "Only VIP can purchase video effect uses".localized)
+                            TSPurchaseVideoTextLineView(image: .purchaseVideoTimesCheck, text: "Uses can be applied to all video generations".localized)
+                            TSPurchaseVideoTextLineView(image: .purchaseVideoTimesCheck, text: "Uses never expire and can be purchased repeatedly".localized)
+                            TSPurchaseVideoTextLineView(image: .purchaseVideoTimesCheck, text: "All unused uses will be lost if the app is uninstalled".localized)
                         })
                         .padding(EdgeInsets(top: 0, leading: 10, bottom: 0, trailing: 10))
                         
@@ -100,6 +100,9 @@ struct TSPurchaseVideoTimesAlertView :View {
                 }
                 .padding(.horizontal,16)
                 .background(
+//                    Image(.purchaseVideoTimesAlertBj)
+//                        .resizable() // 允许调整大小
+//                        .scaledToFill()
                     Color.hex("#261840").cornerRadius([.topLeading,.topTrailing], 20)
                 )
                 
@@ -113,50 +116,3 @@ struct TSPurchaseVideoTimesAlertView :View {
         .ignoresSafeArea()
     }
 }
-
-
-struct TSPurchaseVideoTimesAler1tView :View {
-    @State var isExpand: Bool = false
-    var body: some View {
-        VStack {
-
-            Spacer()
-            
-            VStack {
-                Spacer().frame(height: 24)
-                Text("Limit Reached".localized)
-                
-                Spacer().frame(height: 24)
-                
-                VStack{
-                    Spacer().frame(height: 15)
-                    Button {
-                        isExpand = !isExpand
-                    } label: {
-                        HStack(spacing: 4) {
-                            Text("View Credit Rules".localized)
-                                .font(.font(size: 12,weight: .regular))
-                                .foregroundColor(.white.opacity(0.7))
-                            Image(isExpand ? .chatUpArrow : .chatDownArrow)
-                        }
-                    }
-                    Spacer().frame(height: k_Height_safeAreaInsetsBottom())
-                }
-                
-                if isExpand {
-                    VStack(alignment: .leading, spacing: 8, content: {
-                        Text("View Credit Rules1".localized)
-                        Text("View Credit Rules2".localized)
-                        Text("View Credit Rules3".localized)
-                    })
-                    .padding(EdgeInsets(top: 0, leading: 10, bottom: 0, trailing: 10))
-                    
-                    Spacer().frame(height: 24 + k_Height_safeAreaInsetsBottom())
-                }
-
-            }
-            .padding(.horizontal,16)
-        }
-        .ignoresSafeArea()
-    }
-}

+ 6 - 6
AIEmoji/Business/TSPurchaseMembershipVC/TSPurchaseVideoTimesVC/View/TSPurchaseVideoTimesView.swift

@@ -21,17 +21,17 @@ struct TSPurchaseVideoTimesView :View {
                 VStack {
                     Spacer().frame(height: 40)
                     
-                    Text("Video Effect Credits Package".localized)
+                    Text("Video Effect Use Pack".localized)
                         .font(.font(name:.PoppinsBoldItalic,size: 22))
                         .gradientForeground(colors: [Color.hex("#8C5FFF"),Color.hex("#F680F8")], startPoint:.leading, endPoint:.trailing)
                         .padding(EdgeInsets(top: 0, leading: 10, bottom: 0, trailing: 10))
                     
                     
                     VStack(alignment: .leading, spacing: 8, content: {
-                        TSPurchaseVideoTextLineView(image: .purchaseVideoTimesCheck, text: "Only VIP can purchase video effect credits".localized)
-                        TSPurchaseVideoTextLineView(image: .purchaseVideoTimesCheck, text: "Credits can be applied to all video generations".localized)
-                        TSPurchaseVideoTextLineView(image: .purchaseVideoTimesCheck, text: "Credits never expire and can be purchased repeatedly".localized)
-                        TSPurchaseVideoTextLineView(image: .purchaseVideoTimesCheck, text: "All unused credits will be lost if the app is uninstalled".localized)
+                        TSPurchaseVideoTextLineView(image: .purchaseVideoTimesCheck, text: "Only VIP can purchase video effect uses".localized)
+                        TSPurchaseVideoTextLineView(image: .purchaseVideoTimesCheck, text: "Uses can be applied to all video generations".localized)
+                        TSPurchaseVideoTextLineView(image: .purchaseVideoTimesCheck, text: "Uses never expire and can be purchased repeatedly".localized)
+                        TSPurchaseVideoTextLineView(image: .purchaseVideoTimesCheck, text: "All unused uses will be lost if the app is uninstalled".localized)
                         
                     })
                     .padding(EdgeInsets(top: 0, leading: 10, bottom: 0, trailing: 10))
@@ -133,7 +133,7 @@ struct TSPurchaseVideoTimesCellView: View {
             
             HStack(spacing:8) {
                 Image(.stopWatch).resizable().frame(width: 28, height: 28)
-                Text(String(format: "%d% Times".localized, type.purchaseNum ?? 0))
+                Text(String(format: "%d Uses".localized, type.purchaseNum ?? 0))
                 Spacer()
                 Text(PurchaseManager.default.price(for: type) ?? "--")
             }

+ 6 - 6
AIEmoji/Business/TSSetingVC/SetingVC/TSSetingModel.swift

@@ -29,13 +29,13 @@ enum SettingType: String, CaseIterable {
 //    case about = "About us"
     
 
-    case videoTimes = "Video Effect Times"
+    case videoTimes = "Video Effect Uses"
     case changeLanguage = "Change Language"
-    case videoPackage = "Video Effect Times Package"
-#if DEBUG
+    case videoPackage = "Video Effect Use Pack"
+//#if DEBUG
     case deleteAllData = "删除钥匙串和次数限制"
     case lookAllData = "查看目前的次数"
-    case videoTimesAdd = "视频次数+1"
-    case videoTimesReduce = "视频次数-1"
-#endif
+    case videoTimesAdd = "视频次数+1"
+    case videoTimesReduce = "视频次数-1"
+//#endif
 }

+ 2 - 0
AIEmoji/Business/TSSetingVC/SetingVC/TSSetingVC.swift

@@ -101,6 +101,8 @@ class TSSetingVC: TSBaseVC {
             case .videoTimesReduce:
                 viewModel.videoTimesReduce(num: -1)
 #endif
+            default:
+                dePrint("不处理点击")
             }
             
         }.store(in: &cancellable)

+ 4 - 4
AIEmoji/Business/TSSetingVC/SetingVC/TSSetingViewModel.swift

@@ -97,11 +97,11 @@ class TSSetingViewModel: ObservableObject {
     }
     
     func purchaseVideoTimesVC(parent: UIViewController) {
-        kPresentModalVC(target: parent, modelVC: TSPurchaseVideoTimesVC(isShowAlertModel: false))
+        kPresentModalVC(target: parent, modelVC: TSPurchaseVideoTimesVC(isShowAlertModel: true))
     }
     
     
-#if DEBUG
+//#if DEBUG
     
     // todo.kailen-privacy
     func deleteAllData(parent: UIViewController) {
@@ -110,7 +110,7 @@ class TSSetingViewModel: ObservableObject {
         UserDefaults.standard.set(nil, forKey: kDayGeneratedNumKey)
         UserDefaults.standard.set(nil, forKey: kFreeNumKey)
         UserDefaults.standard.synchronize()
-        TSToastShared.showToast(text: "清除了钥匙串")
+        TSToastShared.showToast(text: "清除完成")
     }
     
     func lookAllData(parent: UIViewController) {
@@ -142,7 +142,7 @@ class TSSetingViewModel: ObservableObject {
         NotificationCenter.default.post(name: .kPurchaseVideoNumChanged, object: nil)
     }
     
-#endif
+//#endif
 }
 
 

+ 2 - 7
AIEmoji/Business/TSSetingVC/SetingVC/View/SettingPurchaseTopView.swift → AIEmoji/Business/TSSetingVC/SetingVC/View/SetingPurchaseTopView.swift

@@ -19,13 +19,8 @@ struct SettingPurchaseTopView: View {
             Image(.settingVipBj).resizable().cornerRadius(16.0)
             if vipType == .year {
                 VStack(alignment: .center) {
-                    customGradientText(text: "\(kAppName) pro", font: .font(name: .PoppinsBoldItalic,size: 32))
-                    Spacer().frame(height: 10)
-                    Text(String(format: "Remaining Times: %d".localized, kPurchaseDefault.videoAvailableNum))
-                        .foregroundColor(UIColor.themeColor.color)
-                        .font(.font(size: 16,weight: .regular))
-                        .frame(height: 16)
-                    Spacer().frame(height: 16)
+                    customGradientText(text: "\(kAppName) pro", font: .font(name: .PoppinsBoldItalic,size: 36))
+                    Spacer().frame(height: 20)//16
                     Text(timeString)
                         .foregroundColor(.white.opacity(0.6))
                         .font(.font(size: 14,weight: .medium))

+ 3 - 3
AIEmoji/Business/TSSetingVC/SetingVC/View/TSSettingListView.swift → AIEmoji/Business/TSSetingVC/SetingVC/View/TSSetingListView.swift

@@ -47,7 +47,7 @@ struct TSSettingListView: View {
                     SettingListItemView(type: .agreement, publisher: publisher,rightView: EmptyView(), rightArrow: true)
                 }.cornerRadius(16)
                 
-#if DEBUG
+//#if DEBUG
                 Spacer().frame(height: spaceHeight)
                 VStack(spacing:0) {
                     SettingListItemView(type: .deleteAllData, publisher: publisher, rightView: EmptyView(), rightArrow: true)
@@ -55,7 +55,7 @@ struct TSSettingListView: View {
 //                    SettingListItemView(type: .videoTimesAdd, publisher: publisher,rightView: EmptyView(), rightArrow: true)
                     SettingListItemView(type: .videoTimesReduce, publisher: publisher,rightView: EmptyView(), rightArrow: true)
                 }.cornerRadius(16)
-#endif
+//#endif
                 Spacer()
 
             }.padding(.horizontal)
@@ -126,7 +126,7 @@ struct SettingListVideoItemView: View {
             LinearGradient(gradient: Gradient(colors: [Color.hex("#583986"),Color.hex("#333C8C")]), startPoint: .leading, endPoint: .trailing)
             HStack(spacing:8){
                 Image(.hourglass)
-                Text("Video Effect Times Package").font(.font(size: 14.0)).foregroundColor(.white)
+                Text("Video Effect Use Pack".localized).font(.font(size: 14.0)).foregroundColor(.white)
                 Spacer()
                 Image(.whiteRightArrow)
             }

+ 4 - 4
AIEmoji/Common/Purchase/TSPurchaseManager.swift

@@ -34,8 +34,8 @@ public class PurchaseManager: NSObject {
             PurchaseProduct(productId: "113", period: .week(.weekPromotional1)),
             
             PurchaseProduct(productId: "201", period: .purchase(.videoNum1)),
-            PurchaseProduct(productId: "202", period: .purchase(.videoNum1)),
-            PurchaseProduct(productId: "203", period: .purchase(.videoNum1)),
+            PurchaseProduct(productId: "202", period: .purchase(.videoNum2)),
+            PurchaseProduct(productId: "203", period: .purchase(.videoNum3)),
         ]
     }()
 
@@ -136,7 +136,7 @@ public class PurchaseManager: NSObject {
 
     public var vipType: PremiumPeriod {
 //#if DEBUG
-//        return PremiumPeriod.none
+//        return PremiumPeriod.year
 //#endif
         guard isVip, let type = vipInformation["type"] as? String else {
             return .none
@@ -192,7 +192,7 @@ extension PurchaseManager {
         return formatter.string(from: product.price)
     }
     
-    // 商品价格
+    // 商品促销价格
     public func introductoryPrice(for period: PremiumPeriod) -> String? {
         guard let product = product(for: period) else {
             return nil

+ 16 - 0
AIEmoji/de.lproj/Localizable.strings

@@ -594,3 +594,19 @@
 "Rat Dance" = "Rattentanz";
 "Jump to Cloud" = "Zur Cloud wechseln";
 "Emoji Me" = "Emoji Ich";
+
+"Video Effect Use Pack" = "Videoeffekt-Anwendungspaket";
+"Video Effect Uses" = "Verwendung von Videoeffekten";
+"Change Language" = "Sprache ändern";
+"Follow System" = "Folgesystem";
+"Only VIP can purchase video effect uses" = "Nur VIPs können die Verwendung von Videoeffekten erwerben";
+"Uses can be applied to all video generations" = "Die Verwendung ist auf alle Videogenerationen anwendbar";
+"Uses never expire and can be purchased repeatedly" = "Die Nutzung verfällt nie und kann wiederholt erworben werden";
+"All unused uses will be lost if the app is uninstalled" = "Alle ungenutzten Nutzungen gehen verloren, wenn die App deinstalliert wird";
+"%d Uses" = "%d Verwendungen";
+"%d%% Picked" = "%d%% ausgewählt";
+"Purchase" = "Kaufen";
+"Limit Reached" = "Limit erreicht";
+"No effect uses left. Get more to keep creating." = "Keine Effektverwendungen mehr übrig. Holen Sie sich mehr, um weiter kreativ zu sein.";
+"View Usage Rules" = "Nutzungsregeln anzeigen";
+"Video Effects Pack Activated!" = "Videoeffektpaket aktiviert!";

+ 16 - 0
AIEmoji/en.lproj/Localizable.strings

@@ -598,3 +598,19 @@ Small / Medium / Large: Manual amplitude selection ";
 "Rat Dance" = "Rat Dance";
 "Jump to Cloud" = "Jump to Cloud";
 "Emoji Me" = "Emoji Me";
+
+"Video Effect Use Pack" = "Video Effect Use Pack";
+"Video Effect Uses" = "Video Effect Uses";
+"Change Language" = "Change Language";
+"Follow System" = "Follow System";
+"Only VIP can purchase video effect uses" = "Only VIP can purchase video effect uses";
+"Uses can be applied to all video generations" = "Uses can be applied to all video generations";
+"Uses never expire and can be purchased repeatedly" = "Uses never expire and can be purchased repeatedly";
+"All unused uses will be lost if the app is uninstalled" = "All unused uses will be lost if the app is uninstalled";
+"%d Uses" = "%d Uses";
+"%d%% Picked" = "%d%% Picked";
+"Purchase" = "Purchase";
+"Limit Reached" = "Limit Reached";
+"No effect uses left. Get more to keep creating." = "No effect uses left. Get more to keep creating.";
+"View Usage Rules" = "View Usage Rules";
+"Video Effects Pack Activated!" = "Video Effects Pack Activated!";

+ 16 - 0
AIEmoji/es.lproj/Localizable.strings

@@ -592,3 +592,19 @@
 "Rat Dance" = "Danza de la rata";
 "Jump to Cloud" = "Saltar a la nube";
 "Emoji Me" = "emoji yo";
+
+"Video Effect Use Pack" = "Paquete de uso de efectos de vídeo";
+"Video Effect Uses" = "Usos de los efectos de vídeo";
+"Change Language" = "Cambiar idioma";
+"Follow System" = "Seguir el sistema";
+"Only VIP can purchase video effect uses" = "Solo los VIP pueden comprar usos de efectos de video";
+"Uses can be applied to all video generations" = "Los usos se pueden aplicar a todas las generaciones de vídeo.";
+"Uses never expire and can be purchased repeatedly" = "Los usos nunca caducan y se pueden comprar repetidamente.";
+"All unused uses will be lost if the app is uninstalled" = "Todos los usos no utilizados se perderán si se desinstala la aplicación.";
+"%d Uses" = "%d Usos";
+"%d%% Picked" = "%d%% Elegido";
+"Purchase" = "Compra";
+"Limit Reached" = "Límite alcanzado";
+"No effect uses left. Get more to keep creating." = "No quedan usos de efectos. Consigue más para seguir creando.";
+"View Usage Rules" = "Ver reglas de uso";
+"Video Effects Pack Activated!" = "¡Paquete de efectos de vídeo activado!";

+ 16 - 0
AIEmoji/ja.lproj/Localizable.strings

@@ -591,3 +591,19 @@
 "Rat Dance" = "ネズミダンス";
 "Jump to Cloud" = "クラウドへジャンプ";
 "Emoji Me" = "Emoji Me";
+
+"Video Effect Use Pack" = "ビデオエフェクト使用パック";
+"Video Effect Uses" = "ビデオエフェクトの用途";
+"Change Language" = "言語を変更";
+"Follow System" = "フォローシステム";
+"Only VIP can purchase video effect uses" = "ビデオエフェクトの使用を購入できるのはVIPのみ";
+"Uses can be applied to all video generations" = "すべてのビデオ世代に適用可能";
+"Uses never expire and can be purchased repeatedly" = "使用期限はなく、繰り返し購入できます";
+"All unused uses will be lost if the app is uninstalled" = "アプリをアンインストールすると、未使用の使用はすべて失われます";
+"%d Uses" = "%d 回使用";
+"%d%% Picked" = "%d%% 選択";
+"Purchase" = "購入";
+"Limit Reached" = "制限に達しました";
+"No effect uses left. Get more to keep creating." = "エフェクトの使用回数が残りわずかです。さらに使用して、引き続きエフェクトを作成しましょう。";
+"View Usage Rules" = "利用規則を見る";
+"Video Effects Pack Activated!" = "ビデオエフェクトパックが有効化されました!";

+ 16 - 0
AIEmoji/ko.lproj/Localizable.strings

@@ -595,3 +595,19 @@
 "Rat Dance" = "쥐 춤";
 "Jump to Cloud" = "클라우드로 이동";
 "Emoji Me" = "Emoji Me";
+
+"Video Effect Use Pack" = "비디오 효과 사용 팩";
+"Video Effect Uses" = "비디오 효과 사용";
+"Change Language" = "언어 변경";
+"Follow System" = "팔로우 시스템";
+"Only VIP can purchase video effect uses" = "VIP 회원만 비디오 효과 사용 구매 가능";
+"Uses can be applied to all video generations" = "모든 비디오 세대에 적용 가능";
+"Uses never expire and can be purchased repeatedly" = "사용 기한이 없으며 반복적으로 구매할 수 있습니다.";
+"All unused uses will be lost if the app is uninstalled" = "앱을 제거하면 사용하지 않은 모든 용도가 손실됩니다.";
+"%d Uses" = "%d 사용";
+"%d%% Picked" = "%d%% 선택됨";
+"Purchase" = "구입";
+"Limit Reached" = "한도에 도달했습니다";
+"No effect uses left. Get more to keep creating." = "효과가 더 이상 남지 않았습니다. 더 많은 효과를 얻어 계속 창작하세요.";
+"View Usage Rules" = "사용 규칙 보기";
+"Video Effects Pack Activated!" = "비디오 효과 팩이 활성화되었습니다!";

+ 16 - 0
AIEmoji/pt-BR.lproj/Localizable.strings

@@ -591,3 +591,19 @@
 "Rat Dance" = "Dança do Rato";
 "Jump to Cloud" = "Ir para a nuvem";
 "Emoji Me" = "Emoji eu";
+
+"Video Effect Use Pack" = "Pacote de uso de efeitos de vídeo";
+"Video Effect Uses" = "Usos de efeitos de vídeo";
+"Change Language" = "Alterar idioma";
+"Follow System" = "Siga o sistema";
+"Only VIP can purchase video effect uses" = "Somente VIPs podem comprar usos de efeitos de vídeo";
+"Uses can be applied to all video generations" = "Os usos podem ser aplicados a todas as gerações de vídeo";
+"Uses never expire and can be purchased repeatedly" = "Os usos nunca expiram e podem ser comprados repetidamente";
+"All unused uses will be lost if the app is uninstalled" = "Todos os usos não utilizados serão perdidos se o aplicativo for desinstalado";
+"%d Uses" = "%d Usos";
+"%d%% Picked" = "%d%% Selecionado";
+"Purchase" = "Comprar";
+"Limit Reached" = "Limite Atingido";
+"No effect uses left. Get more to keep creating." = "Não há mais efeitos disponíveis. Obtenha mais para continuar criando.";
+"View Usage Rules" = "Ver regras de uso";
+"Video Effects Pack Activated!" = "Pacote de efeitos de vídeo ativado!";

+ 16 - 0
AIEmoji/pt-PT.lproj/Localizable.strings

@@ -590,3 +590,19 @@
 "Rat Dance" = "Dança do Rato";
 "Jump to Cloud" = "Ir para a nuvem";
 "Emoji Me" = "Emoji eu";
+
+"Video Effect Use Pack" = "Pacote de uso de efeitos de vídeo";
+"Video Effect Uses" = "Usos de efeitos de vídeo";
+"Change Language" = "Alterar idioma";
+"Follow System" = "Siga o sistema";
+"Only VIP can purchase video effect uses" = "Somente VIPs podem comprar usos de efeitos de vídeo";
+"Uses can be applied to all video generations" = "Os usos podem ser aplicados a todas as gerações de vídeo";
+"Uses never expire and can be purchased repeatedly" = "Os usos nunca expiram e podem ser comprados repetidamente";
+"All unused uses will be lost if the app is uninstalled" = "Todos os usos não utilizados serão perdidos se o aplicativo for desinstalado";
+"%d Uses" = "%d Usos";
+"%d%% Picked" = "%d%% Selecionado";
+"Purchase" = "Comprar";
+"Limit Reached" = "Limite Atingido";
+"No effect uses left. Get more to keep creating." = "Não há mais efeitos disponíveis. Obtenha mais para continuar criando.";
+"View Usage Rules" = "Ver regras de uso";
+"Video Effects Pack Activated!" = "Pacote de efeitos de vídeo ativado!";

+ 16 - 0
AIEmoji/zh-Hans.lproj/Localizable.strings

@@ -593,3 +593,19 @@
 "Rat Dance" = "老鼠舞";
 "Jump to Cloud" = "腾云驾雾";
 "Emoji Me" = "变成 Emoji";
+
+"Video Effect Use Pack" = "视频特效次数包";
+"Video Effect Uses" = "视频特效次数";
+"Change Language" = "更改语言";
+"Follow System" = "跟随系统";
+"Only VIP can purchase video effect uses" = "只有订阅会员才能购买视频特效次数包";
+"Uses can be applied to all video generations" = "次数包可以在所有视频功能上使用";
+"Uses never expire and can be purchased repeatedly" = "次数包不会过期且可重复购买";
+"All unused uses will be lost if the app is uninstalled" = "卸载 APP 后所有未使用次数将丢失";
+"%d Uses" = "%d 次";
+"%d%% Picked" = "%d%% 选择";
+"Purchase" = "购买";
+"Limit Reached" = "次数达到限制";
+"No effect uses left. Get more to keep creating." = "视频特效次数已用光,获取更多继续创作。";
+"View Usage Rules" = "查看次数包规则";
+"Video Effects Pack Activated!" = "视频特效次数包已可用";

+ 16 - 0
AIEmoji/zh-Hant.lproj/Localizable.strings

@@ -581,3 +581,19 @@
 "Rat Dance" = "老鼠舞";
 "Jump to Cloud" = "騰雲駕霧";
 "Emoji Me" = "變成Emoji";
+
+"Video Effect Use Pack" = "視頻特效次數包";
+"Video Effect Uses" = "視頻特效次數";
+"Change Language" = "更改語言";
+"Follow System" = "跟隨系統";
+"Only VIP can purchase video effect uses" = "只有訂閱會員才能購買視頻特效次數包";
+"Uses can be applied to all video generations" = "次數包可以在所有視頻功能上使用";
+"Uses never expire and can be purchased repeatedly" = "次數包不會過期且可重複購買";
+"All unused uses will be lost if the app is uninstalled" = "卸載APP後所有未使用次數將遺失";
+"%d Uses" = "%d 次";
+"%d%% Picked" = "%d%%選擇";
+"Purchase" = "購買";
+"Limit Reached" = "次數達到限制";
+"No effect uses left. Get more to keep creating." = "視頻特效次數已用光,獲取更多繼續創作。";
+"View Usage Rules" = "查看次數包規則";
+"Video Effects Pack Activated!" = "視頻特效次數包已可用";