diff --git a/ios/ExportOptions.plist b/ios/ExportOptions.plist new file mode 100644 index 0000000..0cee257 --- /dev/null +++ b/ios/ExportOptions.plist @@ -0,0 +1,22 @@ + + + + + destination + export + distributionBundleIdentifier + com.org.yumiparty + manageAppVersionAndBuildNumber + + method + app-store-connect + signingStyle + automatic + stripSwiftSymbols + + teamID + S9YG87C297 + uploadSymbols + + + diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 9d019a1..aaf453e 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -15,10 +15,10 @@ 525B8C722ED013520007B725 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 525B8C712ED013520007B725 /* GoogleService-Info.plist */; }; 52DF38A12F110B0B0086FBE4 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52DF38A02F110B0B0086FBE4 /* StoreKit.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - B7A1D58E2EE51A0000000001 /* GiftMp4VideoPlatformView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7A1D58F2EE51A0000000002 /* GiftMp4VideoPlatformView.swift */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; + B7A1D58E2EE51A0000000001 /* GiftMp4VideoPlatformView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7A1D58F2EE51A0000000002 /* GiftMp4VideoPlatformView.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -63,7 +63,6 @@ 7147A3F76DA0C2CFC820ED1C /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - B7A1D58F2EE51A0000000002 /* GiftMp4VideoPlatformView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GiftMp4VideoPlatformView.swift; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; @@ -72,6 +71,7 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B7A1D58F2EE51A0000000002 /* GiftMp4VideoPlatformView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GiftMp4VideoPlatformView.swift; sourceTree = ""; }; D8CD6B2D6477A38E56A72C61 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ @@ -213,6 +213,7 @@ 3B06AD1E1E4923F5004D2608 /* Thin Binary */, F1AFD9E9E8DBA4F1609CE22F /* [CP] Embed Pods Frameworks */, 5DF67264ADC5268AC3021CED /* [CP] Copy Pods Resources */, + B7A1D5902EE51A0000000003 /* Upload Crashlytics Symbols */, ); buildRules = ( ); @@ -355,6 +356,22 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; + B7A1D5902EE51A0000000003 /* Upload Crashlytics Symbols */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}", + "${PROJECT_DIR}/Runner/GoogleService-Info.plist", + ); + name = "Upload Crashlytics Symbols"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"$CONFIGURATION\" = \"Release\" ] || [ \"$CONFIGURATION\" = \"Profile\" ]; then\n if [ -x \"${PODS_ROOT}/FirebaseCrashlytics/upload-symbols\" ]; then\n \"${PODS_ROOT}/FirebaseCrashlytics/upload-symbols\" -gsp \"${PROJECT_DIR}/Runner/GoogleService-Info.plist\" -p ios \"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}\"\n else\n echo \"warning: FirebaseCrashlytics upload-symbols not found at ${PODS_ROOT}/FirebaseCrashlytics/upload-symbols\"\n fi\nfi\n"; + }; CFD1FCCAE92AFBF15E8B607E /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -502,12 +519,13 @@ isa = XCBuildConfiguration; baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { - ASSETCATALOG_COMPILER_APPat_icon_NAME = AppIcon; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/RunnerRelease.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 150; - DEVELOPMENT_TEAM = S9X2AJ2US9; + DEVELOPMENT_TEAM = S9YG87C297; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 13.0; @@ -692,13 +710,13 @@ isa = XCBuildConfiguration; baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; buildSettings = { - ASSETCATALOG_COMPILER_APPat_icon_NAME = AppIcon; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/RunnerDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 150; - DEVELOPMENT_TEAM = F33K8VUZ62; + DEVELOPMENT_TEAM = S9YG87C297; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 13.0; @@ -721,13 +739,13 @@ isa = XCBuildConfiguration; baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { - ASSETCATALOG_COMPILER_APPat_icon_NAME = AppIcon; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/RunnerRelease.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 150; - DEVELOPMENT_TEAM = F33K8VUZ62; + DEVELOPMENT_TEAM = S9YG87C297; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 13.0; diff --git a/ios/Runner/Assets.xcassets/LaunchBackground.imageset/Contents.json b/ios/Runner/Assets.xcassets/LaunchBackground.imageset/Contents.json new file mode 100644 index 0000000..a3e16c9 --- /dev/null +++ b/ios/Runner/Assets.xcassets/LaunchBackground.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "LaunchBackground.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "LaunchBackground@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "LaunchBackground@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/Runner/Assets.xcassets/LaunchBackground.imageset/LaunchBackground.png b/ios/Runner/Assets.xcassets/LaunchBackground.imageset/LaunchBackground.png new file mode 100644 index 0000000..d7bdabe Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchBackground.imageset/LaunchBackground.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchBackground.imageset/LaunchBackground@2x.png b/ios/Runner/Assets.xcassets/LaunchBackground.imageset/LaunchBackground@2x.png new file mode 100644 index 0000000..846bc9d Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchBackground.imageset/LaunchBackground@2x.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchBackground.imageset/LaunchBackground@3x.png b/ios/Runner/Assets.xcassets/LaunchBackground.imageset/LaunchBackground@3x.png new file mode 100644 index 0000000..4e2e9c7 Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchBackground.imageset/LaunchBackground@3x.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png index 9da19ea..d7bdabe 100644 Binary files a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png index 9da19ea..846bc9d 100644 Binary files a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png index 9da19ea..4e2e9c7 100644 Binary files a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchLogo.imageset/Contents.json b/ios/Runner/Assets.xcassets/LaunchLogo.imageset/Contents.json new file mode 100644 index 0000000..65b63ff --- /dev/null +++ b/ios/Runner/Assets.xcassets/LaunchLogo.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "LaunchLogo.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "LaunchLogo@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "LaunchLogo@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/Runner/Assets.xcassets/LaunchLogo.imageset/LaunchLogo.png b/ios/Runner/Assets.xcassets/LaunchLogo.imageset/LaunchLogo.png new file mode 100644 index 0000000..e220f7e Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchLogo.imageset/LaunchLogo.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchLogo.imageset/LaunchLogo@2x.png b/ios/Runner/Assets.xcassets/LaunchLogo.imageset/LaunchLogo@2x.png new file mode 100644 index 0000000..a0a2e64 Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchLogo.imageset/LaunchLogo@2x.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchLogo.imageset/LaunchLogo@3x.png b/ios/Runner/Assets.xcassets/LaunchLogo.imageset/LaunchLogo@3x.png new file mode 100644 index 0000000..306ea0c Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchLogo.imageset/LaunchLogo@3x.png differ diff --git a/ios/Runner/Base.lproj/LaunchScreen.storyboard b/ios/Runner/Base.lproj/LaunchScreen.storyboard index 497371e..76604e2 100644 --- a/ios/Runner/Base.lproj/LaunchScreen.storyboard +++ b/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -15,15 +15,25 @@ - - - - - - - - - + + + + + + + + + + + + + + + + + + + @@ -32,6 +42,7 @@ - + + diff --git a/ios/Runner/GiftMp4VideoPlatformView.swift b/ios/Runner/GiftMp4VideoPlatformView.swift index 39ab217..7936023 100644 --- a/ios/Runner/GiftMp4VideoPlatformView.swift +++ b/ios/Runner/GiftMp4VideoPlatformView.swift @@ -725,7 +725,7 @@ private final class GiftMp4SourceLayoutResolver { private static func detectPackedAlphaTopRight( asset: AVAsset ) -> GiftMp4PackedAlphaCandidate? { - let frames = sampleFrames(asset: asset) + let frames = samplePackedAlphaFrames(asset: asset) let candidates = frames.compactMap(detectPackedAlphaTopRightInFrame) guard !candidates.isEmpty else { return nil @@ -889,16 +889,41 @@ private final class GiftMp4SourceLayoutResolver { } private static func sampleFrames(asset: AVAsset) -> [CGImage] { - let generator = AVAssetImageGenerator(asset: asset) - generator.appliesPreferredTrackTransform = true - generator.requestedTimeToleranceBefore = .zero - generator.requestedTimeToleranceAfter = .positiveInfinity - let durationSeconds = CMTimeGetSeconds(asset.duration) let desiredSeconds = [0.3, 0.6, 0.9, 1.2, 1.5, 1.8, 2.1, 2.4, 2.7, 3.0] .filter { durationSeconds.isNaN || durationSeconds <= 0 || $0 <= durationSeconds } - let times = (desiredSeconds.isEmpty ? [0.0] : desiredSeconds) - .map { NSValue(time: CMTime(seconds: $0, preferredTimescale: 600)) } + return sampleFrames( + asset: asset, + seconds: desiredSeconds.isEmpty ? [0.0] : desiredSeconds, + toleranceBefore: .zero, + toleranceAfter: .positiveInfinity + ) + } + + private static func samplePackedAlphaFrames(asset: AVAsset) -> [CGImage] { + let durationSeconds = CMTimeGetSeconds(asset.duration) + let desiredSeconds = [0.0, 0.5, 1.0, 2.0, 3.0] + .filter { durationSeconds.isNaN || durationSeconds <= 0 || $0 <= durationSeconds } + return sampleFrames( + asset: asset, + seconds: desiredSeconds.isEmpty ? [0.0] : desiredSeconds, + toleranceBefore: .positiveInfinity, + toleranceAfter: .positiveInfinity + ) + } + + private static func sampleFrames( + asset: AVAsset, + seconds: [Double], + toleranceBefore: CMTime, + toleranceAfter: CMTime + ) -> [CGImage] { + let generator = AVAssetImageGenerator(asset: asset) + generator.appliesPreferredTrackTransform = true + generator.requestedTimeToleranceBefore = toleranceBefore + generator.requestedTimeToleranceAfter = toleranceAfter + + let times = seconds.map { NSValue(time: CMTime(seconds: $0, preferredTimescale: 600)) } var frames: [CGImage] = [] for time in times { @@ -953,8 +978,8 @@ private final class GiftMp4SourceLayoutResolver { ) -> GiftMp4HalfStats { let width = max(1, endX - startX) let height = max(1, endY - startY) - let stepX = max(1, width / 32) - let stepY = max(1, height / 32) + let stepX = max(1, width / 80) + let stepY = max(1, height / 120) var saturationSum = 0.0 var grayErrorSum = 0.0 var brightnessSum = 0.0 diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index ca1ff54..7a762e6 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -35,23 +35,39 @@ $(FLUTTER_BUILD_NAME) CFBundleSignature ???? - CFBundleURLTypes - - - CFBundleTypeRole - Editor - - + CFBundleURLTypes + + + CFBundleURLName + com.googleusercontent.apps.52796773508-dk441c9e7tdmqv47mbdt2vpbn2clrii8 + CFBundleURLSchemes + + com.googleusercontent.apps.52796773508-dk441c9e7tdmqv47mbdt2vpbn2clrii8 + + + + CFBundleURLName + com.org.yumiparty + CFBundleTypeRole + Editor + CFBundleURLSchemes + + yumi + + + CFBundleVersion $(FLUTTER_BUILD_NUMBER) LSRequiresIPhoneOS NSCameraUsageDescription We need access to your camera so you can take a photo and make it a profile picture, or take and share a picture in real time in a voice chat room. - NSMicrophoneUsageDescription - We need access to your microphone so that you can make live calls, record, and send voice messages with other users in the voice dating room. - NSPhotoLibraryAddUsageDescription - We need your permission to save beautiful images you take or edit in the app to your phone album. + NSMicrophoneUsageDescription + We need access to your microphone so that you can make live calls, record, and send voice messages with other users in the voice dating room. + NSAppleMusicUsageDescription + We need access to your media library so you can select local music to play in voice rooms. + NSPhotoLibraryAddUsageDescription + We need your permission to save beautiful images you take or edit in the app to your phone album. NSPhotoLibraryUsageDescription We need access to your photo album so you can choose photos from it to update your profile picture or share moments from your life in chat. UIApplicationSupportsIndirectInputEvents @@ -77,9 +93,5 @@ audio - com.apple.developer.applesignin - - Default - - - + + diff --git a/ios/Runner/RunnerDebug.entitlements b/ios/Runner/RunnerDebug.entitlements index 82e827f..de093d5 100644 --- a/ios/Runner/RunnerDebug.entitlements +++ b/ios/Runner/RunnerDebug.entitlements @@ -2,9 +2,13 @@ - com.apple.developer.applesignin - - Default - - - + com.apple.developer.applesignin + + Default + + com.apple.developer.associated-domains + + applinks:h5.yumi.com + + + diff --git a/ios/Runner/RunnerRelease.entitlements b/ios/Runner/RunnerRelease.entitlements index 82e827f..de093d5 100644 --- a/ios/Runner/RunnerRelease.entitlements +++ b/ios/Runner/RunnerRelease.entitlements @@ -2,9 +2,13 @@ - com.apple.developer.applesignin - - Default - - - + com.apple.developer.applesignin + + Default + + com.apple.developer.associated-domains + + applinks:h5.yumi.com + + + diff --git a/lib/modules/splash/splash_page.dart b/lib/modules/splash/splash_page.dart index eed85c0..0f38c69 100644 --- a/lib/modules/splash/splash_page.dart +++ b/lib/modules/splash/splash_page.dart @@ -178,7 +178,8 @@ class _SplashPageState extends State { Image.asset( SCGlobalConfig.businessLogicStrategy.getSplashPageIcon(), width: 107.w, - height: 159.w, + height: 97.w, + fit: BoxFit.contain, ), ], );