Browse Source

feat:埋点 + 效果排序调整

kailen 1 tuần trước cách đây
mục cha
commit
bedeabbbdb
41 tập tin đã thay đổi với 547 bổ sung52 xóa
  1. 44 0
      AIEmoji.xcodeproj/project.pbxproj
  2. 2 0
      AIEmoji/AppDelegate.swift
  3. 22 0
      AIEmoji/Assets.xcassets/Discover/Style/discover_0_EmojiMe.imageset/Contents.json
  4. BIN
      AIEmoji/Assets.xcassets/Discover/Style/discover_0_EmojiMe.imageset/discover_0_EmojiMe@2x.png
  5. BIN
      AIEmoji/Assets.xcassets/Discover/Style/discover_0_EmojiMe.imageset/discover_0_EmojiMe@3x.png
  6. 22 0
      AIEmoji/Assets.xcassets/Discover/Style/discover_1_EmojiMe.imageset/Contents.json
  7. BIN
      AIEmoji/Assets.xcassets/Discover/Style/discover_1_EmojiMe.imageset/discover_1_EmojiMe@2x.png
  8. BIN
      AIEmoji/Assets.xcassets/Discover/Style/discover_1_EmojiMe.imageset/discover_1_EmojiMe@3x.png
  9. 21 0
      AIEmoji/Assets.xcassets/Discover/video/video_style_AlienKidnap.imageset/Contents.json
  10. BIN
      AIEmoji/Assets.xcassets/Discover/video/video_style_AlienKidnap.imageset/video_style_AlienKidnap.png
  11. 21 0
      AIEmoji/Assets.xcassets/Discover/video/video_style_BoxMe.imageset/Contents.json
  12. BIN
      AIEmoji/Assets.xcassets/Discover/video/video_style_BoxMe.imageset/video_style_BoxMe.png
  13. 21 0
      AIEmoji/Assets.xcassets/Discover/video/video_style_DriveMyYacht.imageset/Contents.json
  14. BIN
      AIEmoji/Assets.xcassets/Discover/video/video_style_DriveMyYacht.imageset/video_style_DriveMyYacht.png
  15. 21 0
      AIEmoji/Assets.xcassets/Discover/video/video_style_EarthZoomOut.imageset/Contents.json
  16. BIN
      AIEmoji/Assets.xcassets/Discover/video/video_style_EarthZoomOut.imageset/video_style_EarthZoomOut.png
  17. 21 0
      AIEmoji/Assets.xcassets/Discover/video/video_style_JumpToCloud.imageset/Contents.json
  18. BIN
      AIEmoji/Assets.xcassets/Discover/video/video_style_JumpToCloud.imageset/video_style_JumpToCloud.png
  19. 21 0
      AIEmoji/Assets.xcassets/Discover/video/video_style_RatDance.imageset/Contents.json
  20. BIN
      AIEmoji/Assets.xcassets/Discover/video/video_style_RatDance.imageset/video_style_RatDance.png
  21. 21 0
      AIEmoji/Assets.xcassets/Discover/video/video_style_Shake.imageset/Contents.json
  22. BIN
      AIEmoji/Assets.xcassets/Discover/video/video_style_Shake.imageset/video_style_Shake.png
  23. 21 0
      AIEmoji/Assets.xcassets/Discover/video/video_style_SuperMan.imageset/Contents.json
  24. BIN
      AIEmoji/Assets.xcassets/Discover/video/video_style_SuperMan.imageset/video_style_SuperMan.png
  25. 22 0
      AIEmoji/Assets.xcassets/PTP/style/ptp_style_EmojiMe.imageset/Contents.json
  26. BIN
      AIEmoji/Assets.xcassets/PTP/style/ptp_style_EmojiMe.imageset/ptp_style_EmojiMe@2x.png
  27. BIN
      AIEmoji/Assets.xcassets/PTP/style/ptp_style_EmojiMe.imageset/ptp_style_EmojiMe@3x.png
  28. 5 0
      AIEmoji/Business/TSSetingVC/SetingVC/TSSetingVC.swift
  29. 75 40
      AIEmoji/Business2/DisCover/Data/TSDiscoverViewModel+Data.swift
  30. 156 12
      AIEmoji/Business2/DisCover/Data/TSDiscoverViewModel+Dic.swift
  31. 5 0
      AIEmoji/Business2/DisCover/TSDiscoverVC/TSDiscoverVC.swift
  32. 5 0
      AIEmoji/Business2/DisCover/TSGenerateHistoryVC/TSGenerateHistoryVC.swift
  33. 21 0
      AIEmoji/ClickEvents/ClickEvent.swift
  34. BIN
      AIEmoji/Res/Video/Alien Kidnap.mp4
  35. BIN
      AIEmoji/Res/Video/Box Me.mp4
  36. BIN
      AIEmoji/Res/Video/Drive my yacht.mp4
  37. BIN
      AIEmoji/Res/Video/Earth Zoom out.mp4
  38. BIN
      AIEmoji/Res/Video/Jump to Cloud.mp4
  39. BIN
      AIEmoji/Res/Video/Rat Dance.mp4
  40. BIN
      AIEmoji/Res/Video/Shake.mp4
  41. BIN
      AIEmoji/Res/Video/Superman.mp4

+ 44 - 0
AIEmoji.xcodeproj/project.pbxproj

@@ -10,6 +10,15 @@
 		605E20552DCC90CE0069F4B6 /* SchemeHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 605E20542DCC90CE0069F4B6 /* SchemeHandler.swift */; };
 		605E20592DCCAF3C0069F4B6 /* SchemeHandler+Ext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 605E20582DCCAF3C0069F4B6 /* SchemeHandler+Ext.swift */; };
 		605E205B2DCCB8D20069F4B6 /* TSCustomAlertController+Ext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 605E205A2DCCB8D20069F4B6 /* TSCustomAlertController+Ext.swift */; };
+		608C606B2E41AB7D00B567DA /* ClickEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 608C606A2E41AB7D00B567DA /* ClickEvent.swift */; };
+		608C606D2E41B89200B567DA /* Alien Kidnap.mp4 in Resources */ = {isa = PBXBuildFile; fileRef = 608C606C2E41B89200B567DA /* Alien Kidnap.mp4 */; };
+		608C60752E41BCAA00B567DA /* Shake.mp4 in Resources */ = {isa = PBXBuildFile; fileRef = 608C60732E41BCAA00B567DA /* Shake.mp4 */; };
+		608C60762E41BCAA00B567DA /* Box Me.mp4 in Resources */ = {isa = PBXBuildFile; fileRef = 608C606E2E41BCAA00B567DA /* Box Me.mp4 */; };
+		608C60772E41BCAA00B567DA /* Superman.mp4 in Resources */ = {isa = PBXBuildFile; fileRef = 608C60742E41BCAA00B567DA /* Superman.mp4 */; };
+		608C60782E41BCAA00B567DA /* Drive my yacht.mp4 in Resources */ = {isa = PBXBuildFile; fileRef = 608C606F2E41BCAA00B567DA /* Drive my yacht.mp4 */; };
+		608C60792E41BCAA00B567DA /* Jump to Cloud.mp4 in Resources */ = {isa = PBXBuildFile; fileRef = 608C60712E41BCAA00B567DA /* Jump to Cloud.mp4 */; };
+		608C607A2E41BCAA00B567DA /* Earth Zoom out.mp4 in Resources */ = {isa = PBXBuildFile; fileRef = 608C60702E41BCAA00B567DA /* Earth Zoom out.mp4 */; };
+		608C607B2E41BCAA00B567DA /* Rat Dance.mp4 in Resources */ = {isa = PBXBuildFile; fileRef = 608C60722E41BCAA00B567DA /* Rat Dance.mp4 */; };
 		60AE42912E31E046009FBB77 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 60AE42902E31E046009FBB77 /* GoogleService-Info.plist */; };
 		60B3845F2E39BF2700D77E20 /* TSAiModelCellView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60B3845E2E39BF2700D77E20 /* TSAiModelCellView.swift */; };
 		60B384612E39C33200D77E20 /* TSDiyVideoPopoverViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60B384602E39C33200D77E20 /* TSDiyVideoPopoverViewController.swift */; };
@@ -377,6 +386,15 @@
 		605E20542DCC90CE0069F4B6 /* SchemeHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SchemeHandler.swift; sourceTree = "<group>"; };
 		605E20582DCCAF3C0069F4B6 /* SchemeHandler+Ext.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SchemeHandler+Ext.swift"; sourceTree = "<group>"; };
 		605E205A2DCCB8D20069F4B6 /* TSCustomAlertController+Ext.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TSCustomAlertController+Ext.swift"; sourceTree = "<group>"; };
+		608C606A2E41AB7D00B567DA /* ClickEvent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClickEvent.swift; sourceTree = "<group>"; };
+		608C606C2E41B89200B567DA /* Alien Kidnap.mp4 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Alien Kidnap.mp4"; sourceTree = "<group>"; };
+		608C606E2E41BCAA00B567DA /* Box Me.mp4 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Box Me.mp4"; sourceTree = "<group>"; };
+		608C606F2E41BCAA00B567DA /* Drive my yacht.mp4 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Drive my yacht.mp4"; sourceTree = "<group>"; };
+		608C60702E41BCAA00B567DA /* Earth Zoom out.mp4 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Earth Zoom out.mp4"; sourceTree = "<group>"; };
+		608C60712E41BCAA00B567DA /* Jump to Cloud.mp4 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Jump to Cloud.mp4"; sourceTree = "<group>"; };
+		608C60722E41BCAA00B567DA /* Rat Dance.mp4 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Rat Dance.mp4"; sourceTree = "<group>"; };
+		608C60732E41BCAA00B567DA /* Shake.mp4 */ = {isa = PBXFileReference; lastKnownFileType = file; path = Shake.mp4; sourceTree = "<group>"; };
+		608C60742E41BCAA00B567DA /* Superman.mp4 */ = {isa = PBXFileReference; lastKnownFileType = file; path = Superman.mp4; sourceTree = "<group>"; };
 		60AE42902E31E046009FBB77 /* GoogleService-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
 		60B3845E2E39BF2700D77E20 /* TSAiModelCellView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSAiModelCellView.swift; sourceTree = "<group>"; };
 		60B384602E39C33200D77E20 /* TSDiyVideoPopoverViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSDiyVideoPopoverViewController.swift; sourceTree = "<group>"; };
@@ -804,6 +822,14 @@
 			path = SchemeHandler;
 			sourceTree = "<group>";
 		};
+		608C60692E41AB6B00B567DA /* ClickEvents */ = {
+			isa = PBXGroup;
+			children = (
+				608C606A2E41AB7D00B567DA /* ClickEvent.swift */,
+			);
+			path = ClickEvents;
+			sourceTree = "<group>";
+		};
 		60EE9A762E386E8300565900 /* Elements */ = {
 			isa = PBXGroup;
 			children = (
@@ -1441,6 +1467,7 @@
 				A8EB1ABE2E321E9B001F58D7 /* Punch Face.mp4 */,
 				A8EB1ABF2E321E9B001F58D7 /* Sexy me.mp4 */,
 				A8EB1AC02E321E9B001F58D7 /* Shake it Down.mp4 */,
+				608C606C2E41B89200B567DA /* Alien Kidnap.mp4 */,
 				A8EB1A852E320438001F58D7 /* Animal Diving Show.mp4 */,
 				A8EB1A862E320438001F58D7 /* Anime Me.mp4 */,
 				A8EB1A872E320438001F58D7 /* Fairy.mp4 */,
@@ -1456,6 +1483,13 @@
 				A8EB1A902E320438001F58D7 /* Making Face.mp4 */,
 				A8EB1A912E320438001F58D7 /* Mermaid.mp4 */,
 				A8EB1A922E320438001F58D7 /* Motor Dance.mp4 */,
+				608C606E2E41BCAA00B567DA /* Box Me.mp4 */,
+				608C606F2E41BCAA00B567DA /* Drive my yacht.mp4 */,
+				608C60702E41BCAA00B567DA /* Earth Zoom out.mp4 */,
+				608C60712E41BCAA00B567DA /* Jump to Cloud.mp4 */,
+				608C60722E41BCAA00B567DA /* Rat Dance.mp4 */,
+				608C60732E41BCAA00B567DA /* Shake.mp4 */,
+				608C60742E41BCAA00B567DA /* Superman.mp4 */,
 				A8EB1A932E320438001F58D7 /* MuscleUp.mp4 */,
 				A8EB1A942E320438001F58D7 /* Oscar Gala.mp4 */,
 				A8EB1A952E320438001F58D7 /* Pet to Human.mp4 */,
@@ -2139,6 +2173,7 @@
 		A8F7748A2D38E8B700AA6E93 /* AIEmoji */ = {
 			isa = PBXGroup;
 			children = (
+				608C60692E41AB6B00B567DA /* ClickEvents */,
 				A8FDB1702DCC4B1100E9919B /* Enums */,
 				A8FB02AE2D3E38FA0031A396 /* Res */,
 				A8F7751E2D38ED4500AA6E93 /* DataManger */,
@@ -2735,6 +2770,7 @@
 				A83404FE2DA35BFE00C140E4 /* Localizable.strings in Resources */,
 				A8F3D64A2E2E2AC000DE6C9D /* launch2.png in Resources */,
 				A8FB02D12D3E6B2A0031A396 /* Cat🐱.json in Resources */,
+				608C606D2E41B89200B567DA /* Alien Kidnap.mp4 in Resources */,
 				A80E72462D3F4EED00C64288 /* sticker.json in Resources */,
 				A80EDDFD2D6EF34F003CD332 /* photo_to_photo_style.json in Resources */,
 				A8708A532E0D4FA000601686 /* discover_0_AnimatePhoto1.gif in Resources */,
@@ -2745,6 +2781,13 @@
 				A8EB1AC52E321E9B001F58D7 /* 360° Microwave.mp4 in Resources */,
 				A8EB1AC62E321E9B001F58D7 /* Shake it Down.mp4 in Resources */,
 				A8EEADD62D3E6CD80032C5A0 /* Fish🐠.json in Resources */,
+				608C60752E41BCAA00B567DA /* Shake.mp4 in Resources */,
+				608C60762E41BCAA00B567DA /* Box Me.mp4 in Resources */,
+				608C60772E41BCAA00B567DA /* Superman.mp4 in Resources */,
+				608C60782E41BCAA00B567DA /* Drive my yacht.mp4 in Resources */,
+				608C60792E41BCAA00B567DA /* Jump to Cloud.mp4 in Resources */,
+				608C607A2E41BCAA00B567DA /* Earth Zoom out.mp4 in Resources */,
+				608C607B2E41BCAA00B567DA /* Rat Dance.mp4 in Resources */,
 				A8EEADE22D3E76110032C5A0 /* Dog🐕.json in Resources */,
 				A83405032DA35CB700C140E4 /* InfoPlist.strings in Resources */,
 				A81BECB12DD4AE9A005D06A2 /* Poppins-BoldItalic.otf in Resources */,
@@ -2979,6 +3022,7 @@
 				A8BA76542DA54571000B6707 /* CollectionViewObserver.swift in Sources */,
 				A8F775452D39347100AA6E93 /* TSSetingViewModel.swift in Sources */,
 				A80E72202D3F3A8600C64288 /* DiyElementBaseView.swift in Sources */,
+				608C606B2E41AB7D00B567DA /* ClickEvent.swift in Sources */,
 				A8F776212D3A3F0200AA6E93 /* TSEmojisChildVC.swift in Sources */,
 				A8708A2B2E0A9FF700601686 /* TSPTPUploadImageVC+View.swift in Sources */,
 				A8FDB1712DCC4B1100E9919B /* TSLoadState.swift in Sources */,

+ 2 - 0
AIEmoji/AppDelegate.swift

@@ -8,6 +8,8 @@
 import FirebaseCore
 import UIKit
 import IQKeyboardManagerSwift
+import FirebaseAnalytics
+
 var kAppNewVerison = ""
 @main
 class AppDelegate: UIResponder, UIApplicationDelegate {

+ 22 - 0
AIEmoji/Assets.xcassets/Discover/Style/discover_0_EmojiMe.imageset/Contents.json

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

BIN
AIEmoji/Assets.xcassets/Discover/Style/discover_0_EmojiMe.imageset/discover_0_EmojiMe@2x.png


BIN
AIEmoji/Assets.xcassets/Discover/Style/discover_0_EmojiMe.imageset/discover_0_EmojiMe@3x.png


+ 22 - 0
AIEmoji/Assets.xcassets/Discover/Style/discover_1_EmojiMe.imageset/Contents.json

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

BIN
AIEmoji/Assets.xcassets/Discover/Style/discover_1_EmojiMe.imageset/discover_1_EmojiMe@2x.png


BIN
AIEmoji/Assets.xcassets/Discover/Style/discover_1_EmojiMe.imageset/discover_1_EmojiMe@3x.png


+ 21 - 0
AIEmoji/Assets.xcassets/Discover/video/video_style_AlienKidnap.imageset/Contents.json

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

BIN
AIEmoji/Assets.xcassets/Discover/video/video_style_AlienKidnap.imageset/video_style_AlienKidnap.png


+ 21 - 0
AIEmoji/Assets.xcassets/Discover/video/video_style_BoxMe.imageset/Contents.json

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

BIN
AIEmoji/Assets.xcassets/Discover/video/video_style_BoxMe.imageset/video_style_BoxMe.png


+ 21 - 0
AIEmoji/Assets.xcassets/Discover/video/video_style_DriveMyYacht.imageset/Contents.json

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

BIN
AIEmoji/Assets.xcassets/Discover/video/video_style_DriveMyYacht.imageset/video_style_DriveMyYacht.png


+ 21 - 0
AIEmoji/Assets.xcassets/Discover/video/video_style_EarthZoomOut.imageset/Contents.json

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

BIN
AIEmoji/Assets.xcassets/Discover/video/video_style_EarthZoomOut.imageset/video_style_EarthZoomOut.png


+ 21 - 0
AIEmoji/Assets.xcassets/Discover/video/video_style_JumpToCloud.imageset/Contents.json

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

BIN
AIEmoji/Assets.xcassets/Discover/video/video_style_JumpToCloud.imageset/video_style_JumpToCloud.png


+ 21 - 0
AIEmoji/Assets.xcassets/Discover/video/video_style_RatDance.imageset/Contents.json

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

BIN
AIEmoji/Assets.xcassets/Discover/video/video_style_RatDance.imageset/video_style_RatDance.png


+ 21 - 0
AIEmoji/Assets.xcassets/Discover/video/video_style_Shake.imageset/Contents.json

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

BIN
AIEmoji/Assets.xcassets/Discover/video/video_style_Shake.imageset/video_style_Shake.png


+ 21 - 0
AIEmoji/Assets.xcassets/Discover/video/video_style_SuperMan.imageset/Contents.json

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

BIN
AIEmoji/Assets.xcassets/Discover/video/video_style_SuperMan.imageset/video_style_SuperMan.png


+ 22 - 0
AIEmoji/Assets.xcassets/PTP/style/ptp_style_EmojiMe.imageset/Contents.json

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

BIN
AIEmoji/Assets.xcassets/PTP/style/ptp_style_EmojiMe.imageset/ptp_style_EmojiMe@2x.png


BIN
AIEmoji/Assets.xcassets/PTP/style/ptp_style_EmojiMe.imageset/ptp_style_EmojiMe@3x.png


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

@@ -28,6 +28,11 @@ class TSSetingVC: TSBaseVC {
         return vc
     }()
     
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        ClickEvent.logEvent(type: .settingTab)
+    }
+    
     override func createView() {
         edgesForExtendedLayout = []
         setNavBarViewHidden(true)

+ 75 - 40
AIEmoji/Business2/DisCover/Data/TSDiscoverViewModel+Data.swift

@@ -11,10 +11,8 @@ let kTSDiscoverVM = TSDiscoverViewModel.shared
 class TSDiscoverViewModel {
     static let shared: TSDiscoverViewModel = TSDiscoverViewModel()
 
-    
     lazy var bannerItems: [TSDiscoverItemModel] = {
-        return [
-           
+        [
             TSDiscoverItemModel(style: .videoV2,
                                 viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Animal Diving Show.mp4"]),
                                 generateModel: TSGenerateModel(json: video_AnimalDivingShow)),
@@ -22,11 +20,11 @@ class TSDiscoverViewModel {
                                 viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Oscar Gala.mp4"]),
                                 generateModel: TSGenerateModel(json: video_OscarGala)),
             TSDiscoverItemModel(style: .ptp,
-                                viewModel: TSDiscoverBaseItemVM(title: "", imageNamed:"discover_0_AnimeBanner"),
+                                viewModel: TSDiscoverBaseItemVM(title: "", imageNamed: "discover_0_AnimeBanner"),
                                 generateModel: TSGenerateModel(json: ptp_Anime)),
         ]
     }()
-    
+
     lazy var bannerSection: TSDiscoverSectionModel = {
         let section = TSDiscoverSectionModel()
         section.style = .banner
@@ -35,27 +33,56 @@ class TSDiscoverViewModel {
         return section
     }()
 
-    
     lazy var videoEffectItems: [TSDiscoverItemModel] = {
-        return [
+        [
+            
+            ///Trending Video Effect
             TSDiscoverItemModel(style: .videoV2,
-                                viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["360° Microwave.mp4"]),
-                                generateModel: TSGenerateModel(json: video_360Microwave)),
+                                viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Alien Kidnap.mp4"]),
+                                generateModel: TSGenerateModel(json: video_AlienKidnap)),
             TSDiscoverItemModel(style: .videoV2,
-                                viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Subject 3.mp4"]),
-                                generateModel: TSGenerateModel(json: video_Subject3)),
+                                viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Drive my yacht.mp4"]),
+                                generateModel: TSGenerateModel(json: video_DriveMyYacht)),
             TSDiscoverItemModel(style: .videoV2,
-                                viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["PUBG Winner Hit.mp4"]),
-                                generateModel: TSGenerateModel(json: video_PUBGWinnerHit)),
+                                viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Earth Zoom out.mp4"]),
+                                generateModel: TSGenerateModel(json: video_EarthZoomOut)),
             TSDiscoverItemModel(style: .videoV2,
-                                viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Body Shake.mp4"]),
-                                generateModel: TSGenerateModel(json: video_BodyShake)),
+                                viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Superman.mp4"]),
+                                generateModel: TSGenerateModel(json: video_SuperMan)),
+            TSDiscoverItemModel(style: .videoV2,
+                                viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Box Me.mp4"]),
+                                generateModel: TSGenerateModel(json: video_BoxMe)),
+            TSDiscoverItemModel(style: .videoV2,
+                                viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Toy Me.mp4"]),
+                                generateModel: TSGenerateModel(json: video_ToyMe)),
             TSDiscoverItemModel(style: .videoV2,
                                 viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Mermaid.mp4"]),
                                 generateModel: TSGenerateModel(json: video_Mermaid)),
             TSDiscoverItemModel(style: .videoV2,
                                 viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Fairy.mp4"]),
                                 generateModel: TSGenerateModel(json: video_Fairy)),
+            TSDiscoverItemModel(style: .videoV2,
+                                viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Anime Me.mp4"]),
+                                generateModel: TSGenerateModel(json: video_AnimeMe)),
+            TSDiscoverItemModel(style: .videoV2,
+                                viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["360° Microwave.mp4"]),
+                                generateModel: TSGenerateModel(json: video_360Microwave)),
+        
+            
+            
+            ///AI Dance
+            TSDiscoverItemModel(style: .videoV2,
+                                viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Shake.mp4"]),
+                                generateModel: TSGenerateModel(json: video_Shake)),
+            TSDiscoverItemModel(style: .videoV2,
+                                viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["PUBG Winner Hit.mp4"]),
+                                generateModel: TSGenerateModel(json: video_PUBGWinnerHit)),
+            TSDiscoverItemModel(style: .videoV2,
+                                viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Subject 3.mp4"]),
+                                generateModel: TSGenerateModel(json: video_Subject3)),
+            TSDiscoverItemModel(style: .videoV2,
+                                viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Body Shake.mp4"]),
+                                generateModel: TSGenerateModel(json: video_BodyShake)),
             TSDiscoverItemModel(style: .videoV2,
                                 viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Motor Dance.mp4"]),
                                 generateModel: TSGenerateModel(json: video_MotorDance)),
@@ -63,17 +90,24 @@ class TSDiscoverViewModel {
                                 viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Hip Twist.mp4"]),
                                 generateModel: TSGenerateModel(json: video_HipTwist)),
             TSDiscoverItemModel(style: .videoV2,
-                                viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Lafufu.mp4"]),
-                                generateModel: TSGenerateModel(json: video_Lafufu)),
+                                viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Rat Dance.mp4"]),
+                                generateModel: TSGenerateModel(json: video_RatDance)),
             TSDiscoverItemModel(style: .videoV2,
-                                viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Anime Me.mp4"]),
-                                generateModel: TSGenerateModel(json: video_AnimeMe)),
+                                viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Shake it Down.mp4"]),
+                                generateModel: TSGenerateModel(json: video_ShakeitDown)),
+            
+            
+            
+            //Creative Effect
+            TSDiscoverItemModel(style: .videoV2,
+                                viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Fly.mp4"]),
+                                generateModel: TSGenerateModel(json: video_Fly)),
             TSDiscoverItemModel(style: .videoV2,
                                 viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Happy Birthday.mp4"]),
                                 generateModel: TSGenerateModel(json: video_HappyBirthday)),
             TSDiscoverItemModel(style: .videoV2,
-                                viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Surprise Flower.mp4"]),
-                                generateModel: TSGenerateModel(json: video_SurpriseFlower)),
+                                  viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Surprise Flower.mp4"]),
+                                  generateModel: TSGenerateModel(json: video_SurpriseFlower)),
             TSDiscoverItemModel(style: .videoV2,
                                 viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Pet to Human.mp4"]),
                                 generateModel: TSGenerateModel(json: video_PettoHuman)),
@@ -86,9 +120,7 @@ class TSDiscoverViewModel {
             TSDiscoverItemModel(style: .videoV2,
                                 viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Robot.mp4"]),
                                 generateModel: TSGenerateModel(json: video_Robot)),
-            TSDiscoverItemModel(style: .videoV2,
-                                viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Fly.mp4"]),
-                                generateModel: TSGenerateModel(json: video_Fly)),
+
             TSDiscoverItemModel(style: .videoV2,
                                 viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Pinch.mp4"]),
                                 generateModel: TSGenerateModel(json: video_Pinch)),
@@ -98,15 +130,9 @@ class TSDiscoverViewModel {
             TSDiscoverItemModel(style: .videoV2,
                                 viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Grab doll.mp4"]),
                                 generateModel: TSGenerateModel(json: video_Grabdoll)),
-            TSDiscoverItemModel(style: .videoV2,
-                                viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Toy Me.mp4"]),
-                                generateModel: TSGenerateModel(json: video_ToyMe)),
             TSDiscoverItemModel(style: .videoV2,
                                 viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Hulk.mp4"]),
                                 generateModel: TSGenerateModel(json: video_Hulk)),
-            TSDiscoverItemModel(style: .videoV2,
-                                viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Shake it Down.mp4"]),
-                                generateModel: TSGenerateModel(json: video_ShakeitDown)),
             TSDiscoverItemModel(style: .videoV2,
                                 viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Walking with Beasts.mp4"]),
                                 generateModel: TSGenerateModel(json: video_WalkingwithBeasts)),
@@ -116,23 +142,29 @@ class TSDiscoverViewModel {
             TSDiscoverItemModel(style: .videoV2,
                                 viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["MuscleUp.mp4"]),
                                 generateModel: TSGenerateModel(json: video_MuscleUp)),
-//            TSDiscoverItemModel(style: .videoV2,
-//                                viewModel: TSDiscoverAnimationItemVM(title: "",style: .video, imageNameds: ["French Kiss.mp4"]),
-//                                generateModel: TSGenerateModel(json: video_FrenchKiss))
-            
             TSDiscoverItemModel(style: .videoV2,
-                                viewModel: TSDiscoverAnimationItemVM(title: "",style: .video, imageNameds: ["Photo Animater.mp4"]),
-                                generateModel: TSGenerateModel(json: video_PhotoAnimater),
-                                showAtHome: false
-                               )
+                                viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Lafufu.mp4"]),
+                                generateModel: TSGenerateModel(json: video_Lafufu)),
+            TSDiscoverItemModel(style: .videoV2,
+                                viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Jump to Cloud.mp4"]),
+                                generateModel: TSGenerateModel(json: video_JumpToCloud)),
+            TSDiscoverItemModel(style: .videoV2,
+                                viewModel: TSDiscoverAnimationItemVM(title: "",style: .video, imageNameds: ["French Kiss.mp4"]),
+                                generateModel: TSGenerateModel(json: video_FrenchKiss)),
+
+//            TSDiscoverItemModel(style: .videoV2,
+//                                viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Photo Animater.mp4"]),
+//                                generateModel: TSGenerateModel(json: video_PhotoAnimater),
+//                                showAtHome: false
+//            ),
         ]
     }()
-    
+
     lazy var videoEffectSection: TSDiscoverSectionModel = {
         let section = TSDiscoverSectionModel()
         section.style = .styleMore
         section.setTitle(title: "Video Effect".localized, imageNamed: "🎞️", colors: ["#E7D1AB", "#FFFFFF"])
-        section.items = [videoEffectItems.filter({$0.showAtHome == true})]
+        section.items = [videoEffectItems.filter({ $0.showAtHome == true })]
 
         return section
     }()
@@ -170,6 +202,9 @@ class TSDiscoverViewModel {
             TSDiscoverItemModel(style: .ptp,
                                 viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_ToonMe", "discover_1_ToonMe"]),
                                 generateModel: TSGenerateModel(json: ptp_ToonMe)),
+            TSDiscoverItemModel(style: .ptp,
+                                viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_EmojiMe", "discover_1_EmojiMe"]),
+                                generateModel: TSGenerateModel(json: ptp_EmojiMe)),
             TSDiscoverItemModel(style: .ptp,
                                 viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Bride", "discover_1_Bride"]),
                                 generateModel: TSGenerateModel(json: ptp_Bride)),

+ 156 - 12
AIEmoji/Business2/DisCover/Data/TSDiscoverViewModel+Dic.swift

@@ -28,6 +28,7 @@ let flux = "flux"               //走kie--flux
 第四种:适用于法式热吻,文档玫红色说明文字
 第五种:适用于奥斯卡奖项特效,文档黑色说明文字
 第六种:适用于
+第七种:适用于背景非纯色,适用于地球缩放
  */
 private let hintType = "hintType"
 
@@ -47,6 +48,7 @@ extension TSDiscoverViewModel {
             TSGenerateModel(json: ptp_Anime),
             TSGenerateModel(json: ptp_StickerMe),
             TSGenerateModel(json: ptp_ToonMe),
+            TSGenerateModel(json: ptp_EmojiMe),
             TSGenerateModel(json: ptp_Bride),
             TSGenerateModel(json: ptp_90sAnime),
             TSGenerateModel(json: ptp_Irasutoya),
@@ -164,37 +166,50 @@ extension TSDiscoverViewModel {
             
             //video
 //            TSGenerateModel(json: video_Kiss),
+            
+            TSGenerateModel(json: video_AlienKidnap),
+            TSGenerateModel(json: video_DriveMyYacht),
+            TSGenerateModel(json: video_EarthZoomOut),
+            TSGenerateModel(json: video_SuperMan),
+            TSGenerateModel(json: video_BoxMe),
+            TSGenerateModel(json: video_ToyMe),
+            TSGenerateModel(json: video_Mermaid),
+            TSGenerateModel(json: video_Fairy),
+            TSGenerateModel(json: video_AnimeMe),
             TSGenerateModel(json: video_360Microwave),
-            TSGenerateModel(json: video_Subject3),
+            
+            
+            TSGenerateModel(json: video_Shake),
             TSGenerateModel(json: video_PUBGWinnerHit),
+            TSGenerateModel(json: video_Subject3),
             TSGenerateModel(json: video_BodyShake),
-            TSGenerateModel(json: video_Mermaid),
-            TSGenerateModel(json: video_Fairy),
             TSGenerateModel(json: video_MotorDance),
             TSGenerateModel(json: video_HipTwist),
-//            TSGenerateModel(json: video_Sexyme),
-            TSGenerateModel(json: video_Lafufu),
-            TSGenerateModel(json: video_AnimeMe),
+            TSGenerateModel(json: video_RatDance),
+            TSGenerateModel(json: video_ShakeitDown),
+            
+            TSGenerateModel(json: video_Fly),
             TSGenerateModel(json: video_HappyBirthday),
             TSGenerateModel(json: video_SurpriseFlower),
             TSGenerateModel(json: video_PettoHuman),
             TSGenerateModel(json: video_MakingFace),
             TSGenerateModel(json: video_PixelWorld),
             TSGenerateModel(json: video_Robot),
-            TSGenerateModel(json: video_Fly),
             TSGenerateModel(json: video_Pinch),
             TSGenerateModel(json: video_PunchFace),
             TSGenerateModel(json: video_Grabdoll),
-            TSGenerateModel(json: video_ToyMe),
             TSGenerateModel(json: video_Hulk),
-            TSGenerateModel(json: video_ShakeitDown),
             TSGenerateModel(json: video_WalkingwithBeasts),
             TSGenerateModel(json: video_FunnyPet),
             TSGenerateModel(json: video_MuscleUp),
-//            TSGenerateModel(json: video_FrenchKiss),
-            TSGenerateModel(json: video_PhotoAnimater),
+            TSGenerateModel(json: video_Lafufu),
+            TSGenerateModel(json: video_JumpToCloud),
+            TSGenerateModel(json: video_FrenchKiss),
+            TSGenerateModel(json: video_OscarGala),
             TSGenerateModel(json: video_AnimalDivingShow),
-            TSGenerateModel(json: video_OscarGala)
+            
+//            TSGenerateModel(json: video_Sexyme),
+//            TSGenerateModel(json: video_PhotoAnimater),
         ]
         return array
     }
@@ -680,8 +695,125 @@ extension TSDiscoverViewModel {
             model:kie
         ]
     }
+    
+    var video_AlienKidnap:[String:Any]{
+        [
+            imageName: "video_style_AlienKidnap",
+            imageText: "Alien Kidnap",
+            prompt:"",
+            template:"aliens_coming",
+            specialStyle:0,
+            isVip: true,
+            unionType: videoUnionType,
+            hintType:2,
+            model:kie
+        ]
+    }
+    
+    var video_DriveMyYacht:[String:Any]{
+        [
+            imageName: "video_style_DriveMyYacht",
+            imageText: "Drive my yacht",
+            prompt:"",
+            template:"drive_yacht",
+            specialStyle:0,
+            isVip: true,
+            unionType: videoUnionType,
+            hintType:2,
+            model:kie
+        ]
+    }
+    
+    var video_EarthZoomOut:[String:Any]{
+        [
+            imageName: "video_style_EarthZoomOut",
+            imageText: "Earth Zoom out",
+            prompt:"",
+            template:"earth_zoom_out",
+            specialStyle:0,
+            isVip: true,
+            unionType: videoUnionType,
+            hintType:7,
+            model:kie
+        ]
+    }
+    
+    var video_SuperMan:[String:Any]{
+        [
+            imageName: "video_style_SuperMan",
+            imageText: "Superman",
+            prompt:"Subject: [Male/Female]\n [Specify the subject's gender] suddenly rises, seamlessly transforming into Superman in an instant. With explosive momentum, they shoot into the sky at lightning speed. The surrounding scenery shifts rapidly as the flight path quickly transitions from close-up to distant views, soaring through high-altitude scenes with an immense range. The cape flutters violently in the high-speed airflow. The movements are grand and powerful, filled with dynamic energy, and the camera captures a strong sense of speed and force.\nGender-specific appearance rules:\nIf identified as female, she wears a classic red-and-blue Superman top, a brown skirt, and red leather shoes, complemented by a bright red cape. Her posture is agile and bursting with power, with smooth and clean flight movements.\nIf identified as male, he wears the traditional Superman suit: a form-fitting red-and-blue outfit with a clearly visible “S” symbol on the chest. He has a muscular build with defined lines, showcasing a rugged sense of strength.",
+            template:"superman",
+            specialStyle:0,
+            isVip: true,
+            unionType: videoUnionType,
+            hintType:2,
+            model:kie
+        ]
+    }
+    
+    var video_BoxMe:[String:Any]{
+        [
+            imageName: "video_style_BoxMe",
+            imageText: "Box Me",
+            prompt:"Video content\\n A large hand suddenly appears in the frame and swiftly picks up one of the dolls with ease, leaving behind the toy accessories on the right side.\\nRequirement:\\nMotion Level:Large",
+            template:"box_me",
+            specialStyle:0,
+            isVip: true,
+            unionType: videoUnionType,
+            hintType:2,
+            model:kie
+        ]
+    }
+    
+    var video_JumpToCloud:[String:Any]{
+        [
+            imageName: "video_style_JumpToCloud",
+            imageText: "Jump to Cloud",
+            prompt:"The subject leaps gracefully into the air and lands lightly on a soft, white cloud. The cloud, as if powered by some mysterious force, gently lifts her(him) up and carries her(him) into the sky. As it glides through the air, (his)her figure gradually moves away from the camera.\\nRequirements:\\nMotion Level:Large",
+            template:"jump_to_cloud",
+            specialStyle:0,
+            isVip: true,
+            unionType: videoUnionType,
+            hintType:2,
+            model:kie
+        ]
+    }
+    
+    var video_RatDance:[String:Any]{
+        [
+            imageName: "video_style_RatDance",
+            imageText: "Rat Dance",
+            prompt:"",
+            template:"rat_dance",
+            specialStyle:0,
+            isVip: true,
+            unionType: videoUnionType,
+            hintType:6,
+            model:kie
+        ]
+    }
+    
+    var video_Shake:[String:Any]{
+        [
+            imageName: "video_style_Shake",
+            imageText: "Shake",
+            prompt:"In 【scene/background】, the image shows 【number and types of subjects】 — 【subject 1 description】, 【subject 2 description】 (if present), … .They are 【current action, e.g., standing, sitting, looking upward】.Next, each subject begins to perform a twerking dance: both hands lift and rest behind the head, fingers interlaced or lightly touching the neck, while the hips sway powerfully and expressively from side to side to the rhythm.\\nRequirements\\n1.Replace every 【 】 placeholder with the specific content from the image.\\n2. If the image contains two or more subjects, all subjects must perform the twerking dance with the key points described above",
+            template:"shake_it_dance",
+            specialStyle:0,
+            isVip: true,
+            unionType: videoUnionType,
+            hintType:3,
+            model:kie
+        ]
+    }
 }
 
+/*
+ Alien Kidnap
+ Drive my yacht
+ */
+
 //MARK: 功能性模型
 extension TSDiscoverViewModel {
     //变老
@@ -868,6 +1000,18 @@ extension TSDiscoverViewModel {
         ]
     }
     
+    var ptp_EmojiMe:[String:Any]{
+        [
+            imageName: "ptp_style_EmojiMe",
+            imageText: "Emoji Me",
+            prompt:"Create an Apple iOS Memoji-style sticker character inspired by the person in upload photo, sticker's face similar with the exact face. The sticker should look like the real character with similar hairstyle, hair accessories, outfit, and pose. Keep the original person in the photo completely unchanged with their real human face and appearance. Do not modify or stylize their face or body in any way. Place the new Memoji-style sticker character next to the original person in the photo in a natural and balanced position, as if it is an official iOS sticker placed on top of the photo. The final style should be cute, clean, three-dimensional , Bright, brightly colored and identical to official Apple iOS Memoji stickers style, while ensuring the original person remains fully realistic and untouched for clear comparison with the sticker.",
+            specialStyle:0,
+            isVip: false,
+            unionType: 1,
+            model:kie
+        ]
+    }
+    
     var ptp_Irasutoya:[String:Any]{
         [
             imageName: "ptp_style_Irasutoya",

+ 5 - 0
AIEmoji/Business2/DisCover/TSDiscoverVC/TSDiscoverVC.swift

@@ -80,6 +80,11 @@ class TSDiscoverVC: TSBaseVC {
         return collectionView
     }()
     
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        ClickEvent.logEvent(type: .discoverTab)
+    }
+    
     override func createView() {
         addNormalNavBarView()
 

+ 5 - 0
AIEmoji/Business2/DisCover/TSGenerateHistoryVC/TSGenerateHistoryVC.swift

@@ -118,6 +118,11 @@ class TSGenerateHistoryVC: TSBaseVC {
     }
     
     var navRightBtn = UIButton()
+    
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        ClickEvent.logEvent(type: .creationsTab)
+    }
     override func createView() {
         addNormalNavBarView()
 

+ 21 - 0
AIEmoji/ClickEvents/ClickEvent.swift

@@ -0,0 +1,21 @@
+//
+//  ClickEvent.swift
+//  AIEmoji
+//
+//  Created by nkl on 2025/8/5.
+//
+
+import FirebaseAnalytics
+import Foundation
+
+struct ClickEvent {
+    enum ClickEventType: String {
+        case discoverTab = "Discover_exposure"
+        case settingTab = "Setting_exposure"
+        case creationsTab = "Creations_exposure"
+    }
+
+    static func logEvent(type: ClickEventType) {
+        Analytics.logEvent(type.rawValue, parameters: nil)
+    }
+}

BIN
AIEmoji/Res/Video/Alien Kidnap.mp4


BIN
AIEmoji/Res/Video/Box Me.mp4


BIN
AIEmoji/Res/Video/Drive my yacht.mp4


BIN
AIEmoji/Res/Video/Earth Zoom out.mp4


BIN
AIEmoji/Res/Video/Jump to Cloud.mp4


BIN
AIEmoji/Res/Video/Rat Dance.mp4


BIN
AIEmoji/Res/Video/Shake.mp4


BIN
AIEmoji/Res/Video/Superman.mp4