From 957383c9cd8111f16328dfbdd42a39bcbcd16bce Mon Sep 17 00:00:00 2001 From: kingslay Date: Mon, 13 Nov 2023 21:57:43 +0800 Subject: [PATCH] udpate swiftui demo --- .../Demo.xcworkspace/contents.xcworkspacedata | 2 +- ...acyPlayer-Info.plist => Player-Info.plist} | 1 - .../project.pbxproj | 34 ++++++------ .../contents.xcworkspacedata | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../xcshareddata/xcschemes/Player.xcscheme} | 33 ++++------- Demo/SwiftUI/Shared/MovieModel.swift | 12 +--- Demo/SwiftUI/Shared/Persistence.swift | 55 +------------------ Demo/SwiftUI/TracyPlayer.entitlements | 10 +--- FFmpegKit | 2 +- Package.swift | 1 + Package@swift-5.9.swift | 1 + 12 files changed, 40 insertions(+), 111 deletions(-) rename Demo/SwiftUI/{TracyPlayer-Info.plist => Player-Info.plist} (99%) rename Demo/SwiftUI/{TracyPlayer.xcodeproj => Player.xcodeproj}/project.pbxproj (95%) rename Demo/SwiftUI/{TracyPlayer.xcodeproj => Player.xcodeproj}/project.xcworkspace/contents.xcworkspacedata (100%) rename Demo/SwiftUI/{TracyPlayer.xcodeproj => Player.xcodeproj}/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename Demo/SwiftUI/{TracyPlayer.xcodeproj/xcshareddata/xcschemes/TracyPlayer.xcscheme => Player.xcodeproj/xcshareddata/xcschemes/Player.xcscheme} (71%) diff --git a/Demo/Demo.xcworkspace/contents.xcworkspacedata b/Demo/Demo.xcworkspace/contents.xcworkspacedata index de56ef0c2..bac8a9cbb 100644 --- a/Demo/Demo.xcworkspace/contents.xcworkspacedata +++ b/Demo/Demo.xcworkspace/contents.xcworkspacedata @@ -2,7 +2,7 @@ + location = "group:/Users/kintan/Documents/Github/TracyPlayer/KSPlayer/Demo/SwiftUI/Player.xcodeproj"> diff --git a/Demo/SwiftUI/TracyPlayer-Info.plist b/Demo/SwiftUI/Player-Info.plist similarity index 99% rename from Demo/SwiftUI/TracyPlayer-Info.plist rename to Demo/SwiftUI/Player-Info.plist index 226db24f9..59cdb7170 100644 --- a/Demo/SwiftUI/TracyPlayer-Info.plist +++ b/Demo/SwiftUI/Player-Info.plist @@ -572,7 +572,6 @@ audio fetch - remote-notification diff --git a/Demo/SwiftUI/TracyPlayer.xcodeproj/project.pbxproj b/Demo/SwiftUI/Player.xcodeproj/project.pbxproj similarity index 95% rename from Demo/SwiftUI/TracyPlayer.xcodeproj/project.pbxproj rename to Demo/SwiftUI/Player.xcodeproj/project.pbxproj index d7d1d0ae6..7c94ba2bd 100644 --- a/Demo/SwiftUI/TracyPlayer.xcodeproj/project.pbxproj +++ b/Demo/SwiftUI/Player.xcodeproj/project.pbxproj @@ -34,12 +34,12 @@ AC77DFB026402327001351AE /* TracyApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TracyApp.swift; sourceTree = ""; }; AC77DFB126402327001351AE /* URLImportView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = URLImportView.swift; sourceTree = ""; }; AC77DFB226402329001351AE /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - AC77DFB726402329001351AE /* TracyPlayer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TracyPlayer.app; sourceTree = BUILT_PRODUCTS_DIR; }; + AC77DFB726402329001351AE /* Player.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Player.app; sourceTree = BUILT_PRODUCTS_DIR; }; ACADA07528EDC067001B76D1 /* TracyPlayer.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = TracyPlayer.entitlements; sourceTree = ""; }; ACB965462A42EDCD00378A4C /* SettingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingView.swift; sourceTree = ""; }; ACD2F747275F6E860006D16F /* KSPlayer */ = {isa = PBXFileReference; lastKnownFileType = folder; name = KSPlayer; path = ../..; sourceTree = ""; }; ACD786482A6A8648004A0220 /* Defaults.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Defaults.swift; sourceTree = ""; }; - ACE3619328EB689F00F234EB /* TracyPlayer-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = "TracyPlayer-Info.plist"; sourceTree = ""; }; + ACE3619328EB689F00F234EB /* Player-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Player-Info.plist"; sourceTree = ""; }; ACEA9FEA298BFC8800FBA74B /* MovieModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovieModel.swift; sourceTree = ""; }; /* End PBXFileReference section */ @@ -59,7 +59,7 @@ isa = PBXGroup; children = ( ACADA07528EDC067001B76D1 /* TracyPlayer.entitlements */, - ACE3619328EB689F00F234EB /* TracyPlayer-Info.plist */, + ACE3619328EB689F00F234EB /* Player-Info.plist */, ACD2F743275F6D7A0006D16F /* Packages */, AC77DFAF26402327001351AE /* Shared */, AC77DFB826402329001351AE /* Products */, @@ -92,7 +92,7 @@ AC77DFB826402329001351AE /* Products */ = { isa = PBXGroup; children = ( - AC77DFB726402329001351AE /* TracyPlayer.app */, + AC77DFB726402329001351AE /* Player.app */, ); name = Products; sourceTree = ""; @@ -123,9 +123,9 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - AC77DFB626402329001351AE /* TracyPlayer */ = { + AC77DFB626402329001351AE /* Player */ = { isa = PBXNativeTarget; - buildConfigurationList = AC77DFCB26402329001351AE /* Build configuration list for PBXNativeTarget "TracyPlayer" */; + buildConfigurationList = AC77DFCB26402329001351AE /* Build configuration list for PBXNativeTarget "Player" */; buildPhases = ( AC77DFB326402329001351AE /* Sources */, AC77DFB426402329001351AE /* Frameworks */, @@ -135,12 +135,12 @@ ); dependencies = ( ); - name = TracyPlayer; + name = Player; packageProductDependencies = ( ACD2F771275F735C0006D16F /* KSPlayer */, ); productName = "demo-SPM (iOS)"; - productReference = AC77DFB726402329001351AE /* TracyPlayer.app */; + productReference = AC77DFB726402329001351AE /* Player.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ @@ -158,7 +158,7 @@ }; }; }; - buildConfigurationList = AC77DFAE26402327001351AE /* Build configuration list for PBXProject "TracyPlayer" */; + buildConfigurationList = AC77DFAE26402327001351AE /* Build configuration list for PBXProject "Player" */; compatibilityVersion = "Xcode 9.3"; developmentRegion = en; hasScannedForEncodings = 0; @@ -171,7 +171,7 @@ projectDirPath = ""; projectRoot = ""; targets = ( - AC77DFB626402329001351AE /* TracyPlayer */, + AC77DFB626402329001351AE /* Player */, ); }; /* End PBXProject section */ @@ -356,7 +356,7 @@ ENABLE_HARDENED_RUNTIME = YES; "ENABLE_HARDENED_RUNTIME[sdk=macosx*]" = YES; ENABLE_PREVIEWS = YES; - INFOPLIST_FILE = "TracyPlayer-Info.plist"; + INFOPLIST_FILE = "Player-Info.plist"; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.video"; INFOPLIST_KEY_LSSupportsOpeningDocumentsInPlace = YES; INFOPLIST_KEY_UILaunchStoryboardName = " "; @@ -369,7 +369,8 @@ "@executable_path/Frameworks", ); MARKETING_VERSION = 2.1.2; - PRODUCT_BUNDLE_IDENTIFIER = com.kintan.tracy; + PRODUCT_BUNDLE_IDENTIFIER = com.kintan.player; + PRODUCT_NAME = Player; PROVISIONING_PROFILE_SPECIFIER = ""; "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = ""; SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx xros xrsimulator"; @@ -398,7 +399,7 @@ ENABLE_HARDENED_RUNTIME = YES; "ENABLE_HARDENED_RUNTIME[sdk=macosx*]" = YES; ENABLE_PREVIEWS = YES; - INFOPLIST_FILE = "TracyPlayer-Info.plist"; + INFOPLIST_FILE = "Player-Info.plist"; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.video"; INFOPLIST_KEY_LSSupportsOpeningDocumentsInPlace = YES; INFOPLIST_KEY_UILaunchStoryboardName = " "; @@ -411,7 +412,8 @@ "@executable_path/Frameworks", ); MARKETING_VERSION = 2.1.2; - PRODUCT_BUNDLE_IDENTIFIER = com.kintan.tracy; + PRODUCT_BUNDLE_IDENTIFIER = com.kintan.player; + PRODUCT_NAME = Player; PROVISIONING_PROFILE_SPECIFIER = ""; "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = ""; SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx xros xrsimulator"; @@ -428,7 +430,7 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - AC77DFAE26402327001351AE /* Build configuration list for PBXProject "TracyPlayer" */ = { + AC77DFAE26402327001351AE /* Build configuration list for PBXProject "Player" */ = { isa = XCConfigurationList; buildConfigurations = ( AC77DFC926402329001351AE /* Debug */, @@ -437,7 +439,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - AC77DFCB26402329001351AE /* Build configuration list for PBXNativeTarget "TracyPlayer" */ = { + AC77DFCB26402329001351AE /* Build configuration list for PBXNativeTarget "Player" */ = { isa = XCConfigurationList; buildConfigurations = ( AC77DFCC26402329001351AE /* Debug */, diff --git a/Demo/SwiftUI/TracyPlayer.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Demo/SwiftUI/Player.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from Demo/SwiftUI/TracyPlayer.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to Demo/SwiftUI/Player.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/Demo/SwiftUI/TracyPlayer.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Demo/SwiftUI/Player.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from Demo/SwiftUI/TracyPlayer.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to Demo/SwiftUI/Player.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/Demo/SwiftUI/TracyPlayer.xcodeproj/xcshareddata/xcschemes/TracyPlayer.xcscheme b/Demo/SwiftUI/Player.xcodeproj/xcshareddata/xcschemes/Player.xcscheme similarity index 71% rename from Demo/SwiftUI/TracyPlayer.xcodeproj/xcshareddata/xcschemes/TracyPlayer.xcscheme rename to Demo/SwiftUI/Player.xcodeproj/xcshareddata/xcschemes/Player.xcscheme index b39be4265..f26caae11 100644 --- a/Demo/SwiftUI/TracyPlayer.xcodeproj/xcshareddata/xcschemes/TracyPlayer.xcscheme +++ b/Demo/SwiftUI/Player.xcodeproj/xcshareddata/xcschemes/Player.xcscheme @@ -1,7 +1,7 @@ + version = "1.7"> @@ -15,9 +15,9 @@ + BuildableName = "Player.app" + BlueprintName = "Player" + ReferencedContainer = "container:Player.xcodeproj"> @@ -26,16 +26,13 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - shouldUseLaunchSchemeArgsEnv = "YES"> - - + shouldUseLaunchSchemeArgsEnv = "YES" + shouldAutocreateTestPlan = "YES"> + BuildableName = "Player.app" + BlueprintName = "Player" + ReferencedContainer = "container:Player.xcodeproj"> - - - - + BuildableName = "Player.app" + BlueprintName = "Player" + ReferencedContainer = "container:Player.xcodeproj"> diff --git a/Demo/SwiftUI/Shared/MovieModel.swift b/Demo/SwiftUI/Shared/MovieModel.swift index ad87a64c4..88578a806 100644 --- a/Demo/SwiftUI/Shared/MovieModel.swift +++ b/Demo/SwiftUI/Shared/MovieModel.swift @@ -253,16 +253,8 @@ extension MovieModel { return playmodel } let model = PlayModel() - guard let context = managedObjectContext, let privateStore = PersistenceController.shared.privateStore else { - return model - } - let newMovieModel = MovieModel(context: context) - newMovieModel.setValuesForKeys(dictionaryWithValues(forKeys: entity.attributesByName.keys.map { $0 })) - newMovieModel.playmodel = model - context.assign(newMovieModel, to: privateStore) -// try? context.save() - newMovieModel.save() - context.delete(self) + playmodel = model + model.save() return model } } diff --git a/Demo/SwiftUI/Shared/Persistence.swift b/Demo/SwiftUI/Shared/Persistence.swift index 7072bdd89..98993c578 100644 --- a/Demo/SwiftUI/Shared/Persistence.swift +++ b/Demo/SwiftUI/Shared/Persistence.swift @@ -48,7 +48,6 @@ struct PersistenceController { let container: NSPersistentCloudKitContainer let viewContext: NSManagedObjectContext - let privateStore: NSPersistentStore? init(inMemory: Bool = false) { let modelName = "Model" // load Data Model @@ -59,39 +58,9 @@ struct PersistenceController { } container = NSPersistentCloudKitContainer(name: modelName, managedObjectModel: model) viewContext = container.viewContext -// viewContext = container.newBackgroundContext() - let publicURL: URL - let privateURL: URL - let localURL: URL if inMemory { - publicURL = URL(fileURLWithPath: "/dev/null") - privateURL = URL(fileURLWithPath: "/dev/null") - localURL = URL(fileURLWithPath: "/dev/null") - - } else { - let directory = NSPersistentContainer.defaultDirectoryURL() - KSLog("coreData directory \(directory)") - publicURL = directory.appendingPathComponent("public.sqlite") - privateURL = directory.appendingPathComponent("private.sqlite") - localURL = directory.appendingPathComponent("local.sqlite") + container.persistentStoreDescriptions.first!.url = URL(fileURLWithPath: "/dev/null") } - let publicDesc = NSPersistentStoreDescription(url: publicURL) - publicDesc.configuration = "public" - publicDesc.cloudKitContainerOptions = NSPersistentCloudKitContainerOptions(containerIdentifier: "iCloud.TracyPlayer") - publicDesc.cloudKitContainerOptions?.databaseScope = .public - publicDesc.setOption(true as NSObject, forKey: NSPersistentHistoryTrackingKey) - publicDesc.setOption(true as NSObject, forKey: NSPersistentStoreRemoteChangeNotificationPostOptionKey) - let privateDesc = NSPersistentStoreDescription(url: privateURL) - privateDesc.configuration = "private" - privateDesc.cloudKitContainerOptions = NSPersistentCloudKitContainerOptions(containerIdentifier: "iCloud.TracyPlayer") - privateDesc.setOption(true as NSObject, forKey: NSPersistentHistoryTrackingKey) - privateDesc.setOption(true as NSObject, forKey: NSPersistentStoreRemoteChangeNotificationPostOptionKey) - let localDesc = NSPersistentStoreDescription(url: localURL) - localDesc.configuration = "local" - localDesc.setOption(true as NSObject, forKey: NSPersistentHistoryTrackingKey) - localDesc.setOption(true as NSObject, forKey: NSPersistentStoreRemoteChangeNotificationPostOptionKey) - container.persistentStoreDescriptions = [localDesc, privateDesc, publicDesc] -// let persistentStoreCoordinator = container.persistentStoreCoordinator container.loadPersistentStores { storeDescription, error in if let error = error as NSError? { // Replace this implementation with code to handle the error appropriately. @@ -112,26 +81,6 @@ struct PersistenceController { // } } } - privateStore = container.persistentStoreCoordinator.persistentStore(for: privateURL) - let viewContext = container.newBackgroundContext() - viewContext.automaticallyMergesChangesFromParent = true - viewContext.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy -// #if DEBUG -// viewContext.mergePolicy = NSOverwriteMergePolicy -// #endif - viewContext.perform { - do { - try viewContext.setQueryGenerationFrom(.current) - } catch { - fatalError("Failed to pin viewContext to the current generation:\(error)") - } - } -// let privateContainer = NSPersistentCloudKitContainer(name: modelName, managedObjectModel: model) -// privateContainer.persistentStoreDescriptions = [privateDesc] -// privateContainer.loadPersistentStores { _, _ in -// } -// privateContainer.viewContext.automaticallyMergesChangesFromParent = true -// privateContainer.viewContext.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy -// try? privateContainer.viewContext.setQueryGenerationFrom(.current) + container.viewContext.automaticallyMergesChangesFromParent = true } } diff --git a/Demo/SwiftUI/TracyPlayer.entitlements b/Demo/SwiftUI/TracyPlayer.entitlements index 47e409da0..a8149f44b 100644 --- a/Demo/SwiftUI/TracyPlayer.entitlements +++ b/Demo/SwiftUI/TracyPlayer.entitlements @@ -7,15 +7,9 @@ com.apple.developer.aps-environment development com.apple.developer.icloud-container-identifiers - - iCloud.TracyPlayer - + com.apple.developer.icloud-services - - CloudKit - - com.apple.developer.ubiquity-kvstore-identifier - $(TeamIdentifierPrefix)$(CFBundleIdentifier) + com.apple.security.app-sandbox com.apple.security.assets.movies.read-write diff --git a/FFmpegKit b/FFmpegKit index ce7d13b16..4e0f718da 160000 --- a/FFmpegKit +++ b/FFmpegKit @@ -1 +1 @@ -Subproject commit ce7d13b161ad527417cfda9f00eaad2f8f7f9330 +Subproject commit 4e0f718dab5267e30b3f3a5b7d29c2254c9dd629 diff --git a/Package.swift b/Package.swift index 0719ca7b1..fdd81451b 100644 --- a/Package.swift +++ b/Package.swift @@ -38,6 +38,7 @@ var ffmpegKitPath = FileManager.default.currentDirectoryPath + "/FFmpegKit" if !FileManager.default.fileExists(atPath: ffmpegKitPath) { ffmpegKitPath = FileManager.default.currentDirectoryPath + "/KSPlayer/FFmpegKit" } + if !FileManager.default.fileExists(atPath: ffmpegKitPath), let url = URL(string: #file) { let path = url.deletingLastPathComponent().path // 解决用xcode引入spm的时候,依赖关系出错的问题 diff --git a/Package@swift-5.9.swift b/Package@swift-5.9.swift index 193e863fe..24d818892 100644 --- a/Package@swift-5.9.swift +++ b/Package@swift-5.9.swift @@ -39,6 +39,7 @@ var ffmpegKitPath = FileManager.default.currentDirectoryPath + "/FFmpegKit" if !FileManager.default.fileExists(atPath: ffmpegKitPath) { ffmpegKitPath = FileManager.default.currentDirectoryPath + "/KSPlayer/FFmpegKit" } + if !FileManager.default.fileExists(atPath: ffmpegKitPath), let url = URL(string: #file) { let path = url.deletingLastPathComponent().path // 解决用xcode引入spm的时候,依赖关系出错的问题