├── .gitattributes ├── Screen Time ├── Resources │ └── Assets.xcassets │ │ ├── Contents.json │ │ ├── AccentColor.colorset │ │ └── Contents.json │ │ └── AppIcon.appiconset │ │ └── Contents.json ├── Preview Content │ └── Preview Assets.xcassets │ │ └── Contents.json ├── App │ └── Screen_TimeApp.swift ├── Screen Time.entitlements ├── Extentions │ ├── Logger.swift │ └── ManagedSettingsStore.swift ├── Views │ ├── ContentView.swift │ └── ShieldView.swift └── View Models │ └── ShieldViewModel.swift ├── Screen Time.xcodeproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── xcshareddata │ └── xcschemes │ │ ├── Screen Time.xcscheme │ │ ├── Shield Action Extension.xcscheme │ │ ├── Device Activity Monitor Extension.xcscheme │ │ └── Shield Configuration Extension.xcscheme └── project.pbxproj ├── Shield Action Extension ├── Shield_Action_Extension.entitlements ├── Info.plist └── ShieldActionExtension.swift ├── Shield Configuration Extension ├── Shield_Configuration_Extension.entitlements ├── Info.plist └── ShieldConfigurationExtension.swift ├── Device Activity Monitor Extension ├── Device_Activity_Monitor_Extension.entitlements ├── Info.plist └── DeviceActivityMonitorExtension.swift └── .gitignore /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /Screen Time/Resources/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Screen Time/Preview Content/Preview Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Screen Time.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Screen Time/Resources/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Screen Time/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "platform" : "ios", 6 | "size" : "1024x1024" 7 | } 8 | ], 9 | "info" : { 10 | "author" : "xcode", 11 | "version" : 1 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Screen Time.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Screen Time/App/Screen_TimeApp.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Screen_TimeApp.swift 3 | // Screen Time 4 | // 5 | // Created on 29/05/24. 6 | // 7 | // 8 | 9 | import SwiftUI 10 | 11 | @main 12 | struct Screen_TimeApp: App { 13 | var body: some Scene { 14 | WindowGroup { 15 | ContentView() 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Shield Action Extension/Shield_Action_Extension.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.developer.family-controls 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Shield Configuration Extension/Shield_Configuration_Extension.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.developer.family-controls 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Device Activity Monitor Extension/Device_Activity_Monitor_Extension.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.developer.family-controls 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Screen Time/Screen Time.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.developer.family-controls 6 | 7 | com.apple.security.application-groups 8 | 9 | group.com.mac.Screen-Time 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Shield Action Extension/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NSExtension 6 | 7 | NSExtensionPointIdentifier 8 | com.apple.ManagedSettings.shield-action-service 9 | NSExtensionPrincipalClass 10 | $(PRODUCT_MODULE_NAME).ShieldActionExtension 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Device Activity Monitor Extension/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NSExtension 6 | 7 | NSExtensionPointIdentifier 8 | com.apple.deviceactivity.monitor-extension 9 | NSExtensionPrincipalClass 10 | $(PRODUCT_MODULE_NAME).DeviceActivityMonitorExtension 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Shield Configuration Extension/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NSExtension 6 | 7 | NSExtensionPointIdentifier 8 | com.apple.ManagedSettingsUI.shield-configuration-service 9 | NSExtensionPrincipalClass 10 | $(PRODUCT_MODULE_NAME).ShieldConfigurationExtension 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Screen Time/Extentions/Logger.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Logger.swift 3 | // Screen Time 4 | // 5 | // Created on 29/05/24. 6 | // 7 | // 8 | 9 | import Foundation 10 | import os.log 11 | 12 | extension Logger { 13 | init(subsystemName: String, category: String) { 14 | guard let bundleIdentifier = Bundle.main.bundleIdentifier else { 15 | fatalError("Unable to retrieve bundle identifier.") 16 | } 17 | 18 | self.init(subsystem: bundleIdentifier + ".\(subsystemName)", category: category) 19 | } 20 | } 21 | 22 | -------------------------------------------------------------------------------- /Screen Time/Views/ContentView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ContentView.swift 3 | // Screen Time 4 | // 5 | // Created on 29/05/24. 6 | // 7 | // 8 | 9 | import SwiftUI 10 | import FamilyControls 11 | import os.log 12 | 13 | private let logger = Logger(subsystemName: "ContentView", category: "View") 14 | 15 | struct ContentView: View { 16 | @StateObject private var manager = ShieldViewModel() 17 | 18 | var body: some View { 19 | NavigationStack { 20 | ShieldView() 21 | } 22 | .environmentObject(manager) 23 | .task(id: "requestAuthorizationTaskID") { 24 | await manager.requestAuthorization() 25 | } 26 | } 27 | } 28 | 29 | #Preview { 30 | ContentView() 31 | } 32 | -------------------------------------------------------------------------------- /Screen Time/View Models/ShieldViewModel.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ShieldViewModel.swift 3 | // Screen Time 4 | // 5 | // Created on 29/05/24. 6 | // 7 | // 8 | 9 | import Foundation 10 | import FamilyControls 11 | import ManagedSettings 12 | import os.log 13 | 14 | private let logger = Logger(subsystemName: "ShieldViewModel", category: "ViewModel") 15 | 16 | class ShieldViewModel: ObservableObject { 17 | @Published var familyActivitySelection = FamilyActivitySelection() 18 | 19 | private let store = ManagedSettingsStore.shared 20 | 21 | func shieldActivities() { 22 | store.shield(familyActivitySelection: familyActivitySelection) 23 | } 24 | 25 | func requestAuthorization() async { 26 | do { 27 | try await AuthorizationCenter.shared.requestAuthorization(for: .individual) 28 | } catch { 29 | logger.error("Failed to get authorization: \(error)") 30 | } 31 | } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /Screen Time/Extentions/ManagedSettingsStore.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ManagedSettingsStore.swift 3 | // Screen Time 4 | // 5 | // Created on 29/05/24. 6 | // 7 | // 8 | 9 | import Foundation 10 | import FamilyControls 11 | import ManagedSettings 12 | 13 | extension ManagedSettingsStore { 14 | static var shared = ManagedSettingsStore() 15 | 16 | func shield(familyActivitySelection: FamilyActivitySelection) { 17 | // Clear to reset previous settings 18 | clearAllSettings() 19 | 20 | let applicationTokens = familyActivitySelection.applicationTokens 21 | let categoryTokens = familyActivitySelection.categoryTokens 22 | 23 | shield.applications = applicationTokens.isEmpty ? nil : applicationTokens 24 | shield.applicationCategories = categoryTokens.isEmpty ? nil : .specific(categoryTokens) 25 | shield.webDomainCategories = categoryTokens.isEmpty ? nil : .specific(categoryTokens) 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Screen Time/Views/ShieldView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ShieldView.swift 3 | // Screen Time 4 | // 5 | // Created on 29/05/24. 6 | // 7 | // 8 | 9 | import SwiftUI 10 | import os.log 11 | 12 | private let logger = Logger(subsystemName: "ShieldView", category: "View") 13 | 14 | struct ShieldView: View { 15 | @EnvironmentObject private var manager: ShieldViewModel 16 | @State private var showActivityPicker = false 17 | 18 | var body: some View { 19 | ZStack { 20 | selectButton 21 | } 22 | .toolbar { 23 | ToolbarItem(placement: .topBarTrailing) { 24 | lockButton 25 | } 26 | } 27 | .familyActivityPicker( 28 | isPresented: $showActivityPicker, 29 | selection: $manager.familyActivitySelection 30 | ) 31 | } 32 | } 33 | 34 | // MARK: Views 35 | private extension ShieldView { 36 | var selectButton: some View { 37 | Button(action: onPressSelect) { 38 | Label("Select", systemImage: "gearshape.fill") 39 | } 40 | } 41 | 42 | var lockButton: some View { 43 | Button(action: onLock) { 44 | Image(systemName: "lock.fill") 45 | } 46 | } 47 | } 48 | 49 | // MARK: Internals 50 | private extension ShieldView { 51 | func onPressSelect() { 52 | logger.debug("Configuration button pressed.") 53 | showActivityPicker = true 54 | } 55 | 56 | func onLock() { 57 | logger.debug("Apply settings button pressed.") 58 | manager.shieldActivities() 59 | } 60 | } 61 | 62 | #Preview { 63 | NavigationStack { 64 | ShieldView() 65 | } 66 | .environmentObject(ShieldViewModel()) 67 | } 68 | -------------------------------------------------------------------------------- /Device Activity Monitor Extension/DeviceActivityMonitorExtension.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DeviceActivityMonitorExtension.swift 3 | // Device Activity Monitor Extension 4 | // 5 | // Created on 29/05/24. 6 | // 7 | // 8 | 9 | import DeviceActivity 10 | 11 | // Optionally override any of the functions below. 12 | // Make sure that your class name matches the NSExtensionPrincipalClass in your Info.plist. 13 | class DeviceActivityMonitorExtension: DeviceActivityMonitor { 14 | override func intervalDidStart(for activity: DeviceActivityName) { 15 | super.intervalDidStart(for: activity) 16 | 17 | // Handle the start of the interval. 18 | } 19 | 20 | override func intervalDidEnd(for activity: DeviceActivityName) { 21 | super.intervalDidEnd(for: activity) 22 | 23 | // Handle the end of the interval. 24 | } 25 | 26 | override func eventDidReachThreshold(_ event: DeviceActivityEvent.Name, activity: DeviceActivityName) { 27 | super.eventDidReachThreshold(event, activity: activity) 28 | 29 | // Handle the event reaching its threshold. 30 | } 31 | 32 | override func intervalWillStartWarning(for activity: DeviceActivityName) { 33 | super.intervalWillStartWarning(for: activity) 34 | 35 | // Handle the warning before the interval starts. 36 | } 37 | 38 | override func intervalWillEndWarning(for activity: DeviceActivityName) { 39 | super.intervalWillEndWarning(for: activity) 40 | 41 | // Handle the warning before the interval ends. 42 | } 43 | 44 | override func eventWillReachThresholdWarning(_ event: DeviceActivityEvent.Name, activity: DeviceActivityName) { 45 | super.eventWillReachThresholdWarning(event, activity: activity) 46 | 47 | // Handle the warning before the event reaches its threshold. 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /Shield Action Extension/ShieldActionExtension.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ShieldActionExtension.swift 3 | // Shield Action Extension 4 | // 5 | // Created on 29/05/24. 6 | // 7 | // 8 | 9 | import DeviceActivity 10 | import Foundation 11 | import ManagedSettings 12 | import os.log 13 | 14 | private let logger = Logger(subsystemName: "ShieldActionExtension", category: "ShieldActionDelegate") 15 | 16 | // Override the functions below to customize the shield actions used in various situations. 17 | // The system provides a default response for any functions that your subclass doesn't override. 18 | // Make sure that your class name matches the NSExtensionPrincipalClass in your Info.plist. 19 | class ShieldActionExtension: ShieldActionDelegate { 20 | let store = ManagedSettingsStore.shared 21 | 22 | override func handle(action: ShieldAction, for application: ApplicationToken, completionHandler: @escaping (ShieldActionResponse) -> Void) { 23 | // Handle the action as needed. 24 | switch action { 25 | case .primaryButtonPressed: 26 | store.shield.applications?.remove(application) 27 | completionHandler(.none) 28 | case .secondaryButtonPressed: 29 | completionHandler(.close) 30 | @unknown default: 31 | fatalError() 32 | } 33 | } 34 | 35 | override func handle(action: ShieldAction, for webDomain: WebDomainToken, completionHandler: @escaping (ShieldActionResponse) -> Void) { 36 | // Handle the action as needed. 37 | completionHandler(.close) 38 | } 39 | 40 | override func handle(action: ShieldAction, for category: ActivityCategoryToken, completionHandler: @escaping (ShieldActionResponse) -> Void) { 41 | // Handle the action as needed. 42 | switch action { 43 | case .primaryButtonPressed: 44 | store.shield.applicationCategories = nil 45 | completionHandler(.none) 46 | case .secondaryButtonPressed: 47 | completionHandler(.close) 48 | @unknown default: 49 | fatalError() 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 4 | 5 | ## User settings 6 | xcuserdata/ 7 | 8 | ## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) 9 | *.xcscmblueprint 10 | *.xccheckout 11 | 12 | ## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) 13 | build/ 14 | DerivedData/ 15 | *.moved-aside 16 | *.pbxuser 17 | !default.pbxuser 18 | *.mode1v3 19 | !default.mode1v3 20 | *.mode2v3 21 | !default.mode2v3 22 | *.perspectivev3 23 | !default.perspectivev3 24 | 25 | ## Obj-C/Swift specific 26 | *.hmap 27 | 28 | ## App packaging 29 | *.ipa 30 | *.dSYM.zip 31 | *.dSYM 32 | 33 | ## Playgrounds 34 | timeline.xctimeline 35 | playground.xcworkspace 36 | 37 | # Swift Package Manager 38 | # 39 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. 40 | # Packages/ 41 | # Package.pins 42 | # Package.resolved 43 | # *.xcodeproj 44 | # 45 | # Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata 46 | # hence it is not needed unless you have added a package configuration file to your project 47 | # .swiftpm 48 | 49 | .build/ 50 | 51 | # CocoaPods 52 | # 53 | # We recommend against adding the Pods directory to your .gitignore. However 54 | # you should judge for yourself, the pros and cons are mentioned at: 55 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 56 | # 57 | # Pods/ 58 | # 59 | # Add this line if you want to avoid checking in source code from the Xcode workspace 60 | # *.xcworkspace 61 | 62 | # Carthage 63 | # 64 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 65 | # Carthage/Checkouts 66 | 67 | Carthage/Build/ 68 | 69 | # Accio dependency management 70 | Dependencies/ 71 | .accio/ 72 | 73 | # fastlane 74 | # 75 | # It is recommended to not store the screenshots in the git repo. 76 | # Instead, use fastlane to re-generate the screenshots whenever they are needed. 77 | # For more information about the recommended setup visit: 78 | # https://docs.fastlane.tools/best-practices/source-control/#source-control 79 | 80 | fastlane/report.xml 81 | fastlane/Preview.html 82 | fastlane/screenshots/**/*.png 83 | fastlane/test_output 84 | 85 | # Code Injection 86 | # 87 | # After new code Injection tools there's a generated folder /iOSInjectionProject 88 | # https://github.com/johnno1962/injectionforxcode 89 | 90 | iOSInjectionProject/ 91 | -------------------------------------------------------------------------------- /Shield Configuration Extension/ShieldConfigurationExtension.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ShieldConfigurationExtension.swift 3 | // Shield Configuration Extension 4 | // 5 | // Created on 29/05/24. 6 | // 7 | // 8 | 9 | import ManagedSettings 10 | import ManagedSettingsUI 11 | import UIKit 12 | 13 | // Override the functions below to customize the shields used in various situations. 14 | // The system provides a default appearance for any methods that your subclass doesn't override. 15 | // Make sure that your class name matches the NSExtensionPrincipalClass in your Info.plist. 16 | class ShieldConfigurationExtension: ShieldConfigurationDataSource { 17 | override func configuration(shielding application: Application) -> ShieldConfiguration { 18 | // Customize the shield as needed for applications. 19 | let config = ShieldConfiguration( 20 | backgroundColor: .systemCyan, 21 | title: ShieldConfiguration.Label(text: "Do you really need to use this app?", color: .label), 22 | subtitle: ShieldConfiguration.Label(text: "Like are you sure?", color: .systemBrown), 23 | primaryButtonLabel: ShieldConfiguration.Label(text: "Unlock", color: .label), 24 | primaryButtonBackgroundColor: .systemGreen, 25 | secondaryButtonLabel: ShieldConfiguration.Label(text: "Don't unlock.", color: .label) 26 | ) 27 | return config 28 | } 29 | 30 | override func configuration(shielding application: Application, in category: ActivityCategory) -> ShieldConfiguration { 31 | // Customize the shield as needed for applications shielded because of their category. 32 | let config = ShieldConfiguration( 33 | backgroundColor: .systemCyan, 34 | title: ShieldConfiguration.Label(text: "Do you really need to use this category?", color: .label), 35 | subtitle: ShieldConfiguration.Label(text: "Like are you sure?", color: .systemBrown), 36 | primaryButtonLabel: ShieldConfiguration.Label(text: "Unlock", color: .label), 37 | primaryButtonBackgroundColor: .systemGreen, 38 | secondaryButtonLabel: ShieldConfiguration.Label(text: "Don't unlock.", color: .label) 39 | ) 40 | return config 41 | } 42 | 43 | override func configuration(shielding webDomain: WebDomain) -> ShieldConfiguration { 44 | // Customize the shield as needed for web domains. 45 | ShieldConfiguration() 46 | } 47 | 48 | override func configuration(shielding webDomain: WebDomain, in category: ActivityCategory) -> ShieldConfiguration { 49 | // Customize the shield as needed for web domains shielded because of their category. 50 | ShieldConfiguration() 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /Screen Time.xcodeproj/xcshareddata/xcschemes/Screen Time.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 9 | 10 | 16 | 22 | 23 | 24 | 25 | 26 | 32 | 33 | 43 | 45 | 51 | 52 | 53 | 54 | 60 | 62 | 68 | 69 | 70 | 71 | 73 | 74 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /Screen Time.xcodeproj/xcshareddata/xcschemes/Shield Action Extension.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 9 | 10 | 16 | 22 | 23 | 24 | 30 | 36 | 37 | 38 | 39 | 40 | 46 | 47 | 59 | 61 | 67 | 68 | 69 | 70 | 78 | 80 | 86 | 87 | 88 | 89 | 91 | 92 | 95 | 96 | 97 | -------------------------------------------------------------------------------- /Screen Time.xcodeproj/xcshareddata/xcschemes/Device Activity Monitor Extension.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 9 | 10 | 16 | 22 | 23 | 24 | 30 | 36 | 37 | 38 | 39 | 40 | 46 | 47 | 59 | 61 | 67 | 68 | 69 | 70 | 78 | 80 | 86 | 87 | 88 | 89 | 91 | 92 | 95 | 96 | 97 | -------------------------------------------------------------------------------- /Screen Time.xcodeproj/xcshareddata/xcschemes/Shield Configuration Extension.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 6 | 10 | 11 | 17 | 23 | 24 | 25 | 31 | 37 | 38 | 39 | 40 | 41 | 47 | 48 | 60 | 62 | 68 | 69 | 70 | 71 | 79 | 81 | 87 | 88 | 89 | 90 | 92 | 93 | 96 | 97 | 98 | -------------------------------------------------------------------------------- /Screen Time.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 56; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 41AA52072C07243F00786F96 /* Screen_TimeApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41AA52062C07243F00786F96 /* Screen_TimeApp.swift */; }; 11 | 41AA52092C07243F00786F96 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41AA52082C07243F00786F96 /* ContentView.swift */; }; 12 | 41AA520B2C07244000786F96 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 41AA520A2C07244000786F96 /* Assets.xcassets */; }; 13 | 41AA520E2C07244000786F96 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 41AA520D2C07244000786F96 /* Preview Assets.xcassets */; }; 14 | 41AA521B2C0724C300786F96 /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41AA521A2C0724C300786F96 /* Logger.swift */; }; 15 | 41AA52242C07338300786F96 /* ShieldViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41AA52232C07338300786F96 /* ShieldViewModel.swift */; }; 16 | 41AA52262C07351300786F96 /* ShieldView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41AA52252C07351300786F96 /* ShieldView.swift */; }; 17 | 41AA522F2C07384000786F96 /* ManagedSettings.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 41AA522E2C07384000786F96 /* ManagedSettings.framework */; }; 18 | 41AA52322C07384000786F96 /* ShieldActionExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41AA52312C07384000786F96 /* ShieldActionExtension.swift */; }; 19 | 41AA52372C07384000786F96 /* Shield Action Extension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 41AA522C2C07384000786F96 /* Shield Action Extension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; 20 | 41AA52412C07386F00786F96 /* ManagedSettings.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 41AA522E2C07384000786F96 /* ManagedSettings.framework */; }; 21 | 41AA52432C07386F00786F96 /* ManagedSettingsUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 41AA52422C07386F00786F96 /* ManagedSettingsUI.framework */; }; 22 | 41AA52462C07386F00786F96 /* ShieldConfigurationExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41AA52452C07386F00786F96 /* ShieldConfigurationExtension.swift */; }; 23 | 41AA524B2C07386F00786F96 /* Shield Configuration Extension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 41AA52402C07386F00786F96 /* Shield Configuration Extension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; 24 | 41AA52552C074C0B00786F96 /* DeviceActivity.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 41AA52542C074C0B00786F96 /* DeviceActivity.framework */; }; 25 | 41AA52582C074C0B00786F96 /* DeviceActivityMonitorExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41AA52572C074C0B00786F96 /* DeviceActivityMonitorExtension.swift */; }; 26 | 41AA525D2C074C0B00786F96 /* Device Activity Monitor Extension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 41AA52532C074C0B00786F96 /* Device Activity Monitor Extension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; 27 | 41AA526D2C0757C100786F96 /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41AA521A2C0724C300786F96 /* Logger.swift */; }; 28 | 41AA526E2C0757C100786F96 /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41AA521A2C0724C300786F96 /* Logger.swift */; }; 29 | 41AA526F2C0757C200786F96 /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41AA521A2C0724C300786F96 /* Logger.swift */; }; 30 | 41AA52772C075FE600786F96 /* ManagedSettingsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41AA52762C075FE600786F96 /* ManagedSettingsStore.swift */; }; 31 | 41AA52782C075FE600786F96 /* ManagedSettingsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41AA52762C075FE600786F96 /* ManagedSettingsStore.swift */; }; 32 | 41AA52792C075FE600786F96 /* ManagedSettingsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41AA52762C075FE600786F96 /* ManagedSettingsStore.swift */; }; 33 | 41AA527A2C075FE600786F96 /* ManagedSettingsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41AA52762C075FE600786F96 /* ManagedSettingsStore.swift */; }; 34 | /* End PBXBuildFile section */ 35 | 36 | /* Begin PBXContainerItemProxy section */ 37 | 41AA52352C07384000786F96 /* PBXContainerItemProxy */ = { 38 | isa = PBXContainerItemProxy; 39 | containerPortal = 41AA51FB2C07243F00786F96 /* Project object */; 40 | proxyType = 1; 41 | remoteGlobalIDString = 41AA522B2C07384000786F96; 42 | remoteInfo = "Shield Action Extension"; 43 | }; 44 | 41AA52492C07386F00786F96 /* PBXContainerItemProxy */ = { 45 | isa = PBXContainerItemProxy; 46 | containerPortal = 41AA51FB2C07243F00786F96 /* Project object */; 47 | proxyType = 1; 48 | remoteGlobalIDString = 41AA523F2C07386F00786F96; 49 | remoteInfo = "Shield Configuration Extension"; 50 | }; 51 | 41AA525B2C074C0B00786F96 /* PBXContainerItemProxy */ = { 52 | isa = PBXContainerItemProxy; 53 | containerPortal = 41AA51FB2C07243F00786F96 /* Project object */; 54 | proxyType = 1; 55 | remoteGlobalIDString = 41AA52522C074C0B00786F96; 56 | remoteInfo = "Device Activity Monitor Extension"; 57 | }; 58 | /* End PBXContainerItemProxy section */ 59 | 60 | /* Begin PBXCopyFilesBuildPhase section */ 61 | 41AA523B2C07384000786F96 /* Embed Foundation Extensions */ = { 62 | isa = PBXCopyFilesBuildPhase; 63 | buildActionMask = 2147483647; 64 | dstPath = ""; 65 | dstSubfolderSpec = 13; 66 | files = ( 67 | 41AA524B2C07386F00786F96 /* Shield Configuration Extension.appex in Embed Foundation Extensions */, 68 | 41AA52372C07384000786F96 /* Shield Action Extension.appex in Embed Foundation Extensions */, 69 | 41AA525D2C074C0B00786F96 /* Device Activity Monitor Extension.appex in Embed Foundation Extensions */, 70 | ); 71 | name = "Embed Foundation Extensions"; 72 | runOnlyForDeploymentPostprocessing = 0; 73 | }; 74 | /* End PBXCopyFilesBuildPhase section */ 75 | 76 | /* Begin PBXFileReference section */ 77 | 41AA52032C07243F00786F96 /* Screen Time.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Screen Time.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 78 | 41AA52062C07243F00786F96 /* Screen_TimeApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Screen_TimeApp.swift; sourceTree = ""; }; 79 | 41AA52082C07243F00786F96 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; 80 | 41AA520A2C07244000786F96 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 81 | 41AA520D2C07244000786F96 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; 82 | 41AA521A2C0724C300786F96 /* Logger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Logger.swift; sourceTree = ""; }; 83 | 41AA52232C07338300786F96 /* ShieldViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShieldViewModel.swift; sourceTree = ""; }; 84 | 41AA52252C07351300786F96 /* ShieldView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShieldView.swift; sourceTree = ""; }; 85 | 41AA52272C0735A800786F96 /* Screen Time.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "Screen Time.entitlements"; sourceTree = ""; }; 86 | 41AA522C2C07384000786F96 /* Shield Action Extension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "Shield Action Extension.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; 87 | 41AA522E2C07384000786F96 /* ManagedSettings.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ManagedSettings.framework; path = System/Library/Frameworks/ManagedSettings.framework; sourceTree = SDKROOT; }; 88 | 41AA52312C07384000786F96 /* ShieldActionExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShieldActionExtension.swift; sourceTree = ""; }; 89 | 41AA52332C07384000786F96 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 90 | 41AA52342C07384000786F96 /* Shield_Action_Extension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Shield_Action_Extension.entitlements; sourceTree = ""; }; 91 | 41AA52402C07386F00786F96 /* Shield Configuration Extension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "Shield Configuration Extension.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; 92 | 41AA52422C07386F00786F96 /* ManagedSettingsUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ManagedSettingsUI.framework; path = System/Library/Frameworks/ManagedSettingsUI.framework; sourceTree = SDKROOT; }; 93 | 41AA52452C07386F00786F96 /* ShieldConfigurationExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShieldConfigurationExtension.swift; sourceTree = ""; }; 94 | 41AA52472C07386F00786F96 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 95 | 41AA52482C07386F00786F96 /* Shield_Configuration_Extension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Shield_Configuration_Extension.entitlements; sourceTree = ""; }; 96 | 41AA52532C074C0B00786F96 /* Device Activity Monitor Extension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "Device Activity Monitor Extension.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; 97 | 41AA52542C074C0B00786F96 /* DeviceActivity.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DeviceActivity.framework; path = System/Library/Frameworks/DeviceActivity.framework; sourceTree = SDKROOT; }; 98 | 41AA52572C074C0B00786F96 /* DeviceActivityMonitorExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceActivityMonitorExtension.swift; sourceTree = ""; }; 99 | 41AA52592C074C0B00786F96 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 100 | 41AA525A2C074C0B00786F96 /* Device_Activity_Monitor_Extension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Device_Activity_Monitor_Extension.entitlements; sourceTree = ""; }; 101 | 41AA52762C075FE600786F96 /* ManagedSettingsStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ManagedSettingsStore.swift; sourceTree = ""; }; 102 | /* End PBXFileReference section */ 103 | 104 | /* Begin PBXFrameworksBuildPhase section */ 105 | 41AA52002C07243F00786F96 /* Frameworks */ = { 106 | isa = PBXFrameworksBuildPhase; 107 | buildActionMask = 2147483647; 108 | files = ( 109 | ); 110 | runOnlyForDeploymentPostprocessing = 0; 111 | }; 112 | 41AA52292C07384000786F96 /* Frameworks */ = { 113 | isa = PBXFrameworksBuildPhase; 114 | buildActionMask = 2147483647; 115 | files = ( 116 | 41AA522F2C07384000786F96 /* ManagedSettings.framework in Frameworks */, 117 | ); 118 | runOnlyForDeploymentPostprocessing = 0; 119 | }; 120 | 41AA523D2C07386F00786F96 /* Frameworks */ = { 121 | isa = PBXFrameworksBuildPhase; 122 | buildActionMask = 2147483647; 123 | files = ( 124 | 41AA52412C07386F00786F96 /* ManagedSettings.framework in Frameworks */, 125 | 41AA52432C07386F00786F96 /* ManagedSettingsUI.framework in Frameworks */, 126 | ); 127 | runOnlyForDeploymentPostprocessing = 0; 128 | }; 129 | 41AA52502C074C0B00786F96 /* Frameworks */ = { 130 | isa = PBXFrameworksBuildPhase; 131 | buildActionMask = 2147483647; 132 | files = ( 133 | 41AA52552C074C0B00786F96 /* DeviceActivity.framework in Frameworks */, 134 | ); 135 | runOnlyForDeploymentPostprocessing = 0; 136 | }; 137 | /* End PBXFrameworksBuildPhase section */ 138 | 139 | /* Begin PBXGroup section */ 140 | 41AA51FA2C07243F00786F96 = { 141 | isa = PBXGroup; 142 | children = ( 143 | 41AA52052C07243F00786F96 /* Screen Time */, 144 | 41AA52302C07384000786F96 /* Shield Action Extension */, 145 | 41AA52442C07386F00786F96 /* Shield Configuration Extension */, 146 | 41AA52562C074C0B00786F96 /* Device Activity Monitor Extension */, 147 | 41AA522D2C07384000786F96 /* Frameworks */, 148 | 41AA52042C07243F00786F96 /* Products */, 149 | ); 150 | sourceTree = ""; 151 | }; 152 | 41AA52042C07243F00786F96 /* Products */ = { 153 | isa = PBXGroup; 154 | children = ( 155 | 41AA52032C07243F00786F96 /* Screen Time.app */, 156 | 41AA522C2C07384000786F96 /* Shield Action Extension.appex */, 157 | 41AA52402C07386F00786F96 /* Shield Configuration Extension.appex */, 158 | 41AA52532C074C0B00786F96 /* Device Activity Monitor Extension.appex */, 159 | ); 160 | name = Products; 161 | sourceTree = ""; 162 | }; 163 | 41AA52052C07243F00786F96 /* Screen Time */ = { 164 | isa = PBXGroup; 165 | children = ( 166 | 41AA52272C0735A800786F96 /* Screen Time.entitlements */, 167 | 41AA52142C07245100786F96 /* App */, 168 | 41AA52192C0724B400786F96 /* Extentions */, 169 | 41AA52222C07337500786F96 /* View Models */, 170 | 41AA52152C07245500786F96 /* Views */, 171 | 41AA52172C07245E00786F96 /* Resources */, 172 | 41AA520C2C07244000786F96 /* Preview Content */, 173 | ); 174 | path = "Screen Time"; 175 | sourceTree = ""; 176 | }; 177 | 41AA520C2C07244000786F96 /* Preview Content */ = { 178 | isa = PBXGroup; 179 | children = ( 180 | 41AA520D2C07244000786F96 /* Preview Assets.xcassets */, 181 | ); 182 | path = "Preview Content"; 183 | sourceTree = ""; 184 | }; 185 | 41AA52142C07245100786F96 /* App */ = { 186 | isa = PBXGroup; 187 | children = ( 188 | 41AA52062C07243F00786F96 /* Screen_TimeApp.swift */, 189 | ); 190 | path = App; 191 | sourceTree = ""; 192 | }; 193 | 41AA52152C07245500786F96 /* Views */ = { 194 | isa = PBXGroup; 195 | children = ( 196 | 41AA52252C07351300786F96 /* ShieldView.swift */, 197 | 41AA52082C07243F00786F96 /* ContentView.swift */, 198 | ); 199 | path = Views; 200 | sourceTree = ""; 201 | }; 202 | 41AA52172C07245E00786F96 /* Resources */ = { 203 | isa = PBXGroup; 204 | children = ( 205 | 41AA520A2C07244000786F96 /* Assets.xcassets */, 206 | ); 207 | path = Resources; 208 | sourceTree = ""; 209 | }; 210 | 41AA52192C0724B400786F96 /* Extentions */ = { 211 | isa = PBXGroup; 212 | children = ( 213 | 41AA521A2C0724C300786F96 /* Logger.swift */, 214 | 41AA52762C075FE600786F96 /* ManagedSettingsStore.swift */, 215 | ); 216 | path = Extentions; 217 | sourceTree = ""; 218 | }; 219 | 41AA52222C07337500786F96 /* View Models */ = { 220 | isa = PBXGroup; 221 | children = ( 222 | 41AA52232C07338300786F96 /* ShieldViewModel.swift */, 223 | ); 224 | path = "View Models"; 225 | sourceTree = ""; 226 | }; 227 | 41AA522D2C07384000786F96 /* Frameworks */ = { 228 | isa = PBXGroup; 229 | children = ( 230 | 41AA522E2C07384000786F96 /* ManagedSettings.framework */, 231 | 41AA52422C07386F00786F96 /* ManagedSettingsUI.framework */, 232 | 41AA52542C074C0B00786F96 /* DeviceActivity.framework */, 233 | ); 234 | name = Frameworks; 235 | sourceTree = ""; 236 | }; 237 | 41AA52302C07384000786F96 /* Shield Action Extension */ = { 238 | isa = PBXGroup; 239 | children = ( 240 | 41AA52312C07384000786F96 /* ShieldActionExtension.swift */, 241 | 41AA52332C07384000786F96 /* Info.plist */, 242 | 41AA52342C07384000786F96 /* Shield_Action_Extension.entitlements */, 243 | ); 244 | path = "Shield Action Extension"; 245 | sourceTree = ""; 246 | }; 247 | 41AA52442C07386F00786F96 /* Shield Configuration Extension */ = { 248 | isa = PBXGroup; 249 | children = ( 250 | 41AA52452C07386F00786F96 /* ShieldConfigurationExtension.swift */, 251 | 41AA52472C07386F00786F96 /* Info.plist */, 252 | 41AA52482C07386F00786F96 /* Shield_Configuration_Extension.entitlements */, 253 | ); 254 | path = "Shield Configuration Extension"; 255 | sourceTree = ""; 256 | }; 257 | 41AA52562C074C0B00786F96 /* Device Activity Monitor Extension */ = { 258 | isa = PBXGroup; 259 | children = ( 260 | 41AA52572C074C0B00786F96 /* DeviceActivityMonitorExtension.swift */, 261 | 41AA52592C074C0B00786F96 /* Info.plist */, 262 | 41AA525A2C074C0B00786F96 /* Device_Activity_Monitor_Extension.entitlements */, 263 | ); 264 | path = "Device Activity Monitor Extension"; 265 | sourceTree = ""; 266 | }; 267 | /* End PBXGroup section */ 268 | 269 | /* Begin PBXNativeTarget section */ 270 | 41AA52022C07243F00786F96 /* Screen Time */ = { 271 | isa = PBXNativeTarget; 272 | buildConfigurationList = 41AA52112C07244000786F96 /* Build configuration list for PBXNativeTarget "Screen Time" */; 273 | buildPhases = ( 274 | 41AA51FF2C07243F00786F96 /* Sources */, 275 | 41AA52002C07243F00786F96 /* Frameworks */, 276 | 41AA52012C07243F00786F96 /* Resources */, 277 | 41AA523B2C07384000786F96 /* Embed Foundation Extensions */, 278 | ); 279 | buildRules = ( 280 | ); 281 | dependencies = ( 282 | 41AA52362C07384000786F96 /* PBXTargetDependency */, 283 | 41AA524A2C07386F00786F96 /* PBXTargetDependency */, 284 | 41AA525C2C074C0B00786F96 /* PBXTargetDependency */, 285 | ); 286 | name = "Screen Time"; 287 | productName = "Screen Time"; 288 | productReference = 41AA52032C07243F00786F96 /* Screen Time.app */; 289 | productType = "com.apple.product-type.application"; 290 | }; 291 | 41AA522B2C07384000786F96 /* Shield Action Extension */ = { 292 | isa = PBXNativeTarget; 293 | buildConfigurationList = 41AA52382C07384000786F96 /* Build configuration list for PBXNativeTarget "Shield Action Extension" */; 294 | buildPhases = ( 295 | 41AA52282C07384000786F96 /* Sources */, 296 | 41AA52292C07384000786F96 /* Frameworks */, 297 | 41AA522A2C07384000786F96 /* Resources */, 298 | ); 299 | buildRules = ( 300 | ); 301 | dependencies = ( 302 | ); 303 | name = "Shield Action Extension"; 304 | productName = "Shield Action Extension"; 305 | productReference = 41AA522C2C07384000786F96 /* Shield Action Extension.appex */; 306 | productType = "com.apple.product-type.app-extension"; 307 | }; 308 | 41AA523F2C07386F00786F96 /* Shield Configuration Extension */ = { 309 | isa = PBXNativeTarget; 310 | buildConfigurationList = 41AA524C2C07386F00786F96 /* Build configuration list for PBXNativeTarget "Shield Configuration Extension" */; 311 | buildPhases = ( 312 | 41AA523C2C07386F00786F96 /* Sources */, 313 | 41AA523D2C07386F00786F96 /* Frameworks */, 314 | 41AA523E2C07386F00786F96 /* Resources */, 315 | ); 316 | buildRules = ( 317 | ); 318 | dependencies = ( 319 | ); 320 | name = "Shield Configuration Extension"; 321 | productName = "Shield Configuration Extension"; 322 | productReference = 41AA52402C07386F00786F96 /* Shield Configuration Extension.appex */; 323 | productType = "com.apple.product-type.app-extension"; 324 | }; 325 | 41AA52522C074C0B00786F96 /* Device Activity Monitor Extension */ = { 326 | isa = PBXNativeTarget; 327 | buildConfigurationList = 41AA525E2C074C0B00786F96 /* Build configuration list for PBXNativeTarget "Device Activity Monitor Extension" */; 328 | buildPhases = ( 329 | 41AA524F2C074C0B00786F96 /* Sources */, 330 | 41AA52502C074C0B00786F96 /* Frameworks */, 331 | 41AA52512C074C0B00786F96 /* Resources */, 332 | ); 333 | buildRules = ( 334 | ); 335 | dependencies = ( 336 | ); 337 | name = "Device Activity Monitor Extension"; 338 | productName = "Device Activity Monitor Extension"; 339 | productReference = 41AA52532C074C0B00786F96 /* Device Activity Monitor Extension.appex */; 340 | productType = "com.apple.product-type.app-extension"; 341 | }; 342 | /* End PBXNativeTarget section */ 343 | 344 | /* Begin PBXProject section */ 345 | 41AA51FB2C07243F00786F96 /* Project object */ = { 346 | isa = PBXProject; 347 | attributes = { 348 | BuildIndependentTargetsInParallel = 1; 349 | LastSwiftUpdateCheck = 1540; 350 | LastUpgradeCheck = 1540; 351 | TargetAttributes = { 352 | 41AA52022C07243F00786F96 = { 353 | CreatedOnToolsVersion = 15.4; 354 | }; 355 | 41AA522B2C07384000786F96 = { 356 | CreatedOnToolsVersion = 15.4; 357 | }; 358 | 41AA523F2C07386F00786F96 = { 359 | CreatedOnToolsVersion = 15.4; 360 | }; 361 | 41AA52522C074C0B00786F96 = { 362 | CreatedOnToolsVersion = 15.4; 363 | }; 364 | }; 365 | }; 366 | buildConfigurationList = 41AA51FE2C07243F00786F96 /* Build configuration list for PBXProject "Screen Time" */; 367 | compatibilityVersion = "Xcode 14.0"; 368 | developmentRegion = en; 369 | hasScannedForEncodings = 0; 370 | knownRegions = ( 371 | en, 372 | Base, 373 | ); 374 | mainGroup = 41AA51FA2C07243F00786F96; 375 | productRefGroup = 41AA52042C07243F00786F96 /* Products */; 376 | projectDirPath = ""; 377 | projectRoot = ""; 378 | targets = ( 379 | 41AA52022C07243F00786F96 /* Screen Time */, 380 | 41AA522B2C07384000786F96 /* Shield Action Extension */, 381 | 41AA523F2C07386F00786F96 /* Shield Configuration Extension */, 382 | 41AA52522C074C0B00786F96 /* Device Activity Monitor Extension */, 383 | ); 384 | }; 385 | /* End PBXProject section */ 386 | 387 | /* Begin PBXResourcesBuildPhase section */ 388 | 41AA52012C07243F00786F96 /* Resources */ = { 389 | isa = PBXResourcesBuildPhase; 390 | buildActionMask = 2147483647; 391 | files = ( 392 | 41AA520E2C07244000786F96 /* Preview Assets.xcassets in Resources */, 393 | 41AA520B2C07244000786F96 /* Assets.xcassets in Resources */, 394 | ); 395 | runOnlyForDeploymentPostprocessing = 0; 396 | }; 397 | 41AA522A2C07384000786F96 /* Resources */ = { 398 | isa = PBXResourcesBuildPhase; 399 | buildActionMask = 2147483647; 400 | files = ( 401 | ); 402 | runOnlyForDeploymentPostprocessing = 0; 403 | }; 404 | 41AA523E2C07386F00786F96 /* Resources */ = { 405 | isa = PBXResourcesBuildPhase; 406 | buildActionMask = 2147483647; 407 | files = ( 408 | ); 409 | runOnlyForDeploymentPostprocessing = 0; 410 | }; 411 | 41AA52512C074C0B00786F96 /* Resources */ = { 412 | isa = PBXResourcesBuildPhase; 413 | buildActionMask = 2147483647; 414 | files = ( 415 | ); 416 | runOnlyForDeploymentPostprocessing = 0; 417 | }; 418 | /* End PBXResourcesBuildPhase section */ 419 | 420 | /* Begin PBXSourcesBuildPhase section */ 421 | 41AA51FF2C07243F00786F96 /* Sources */ = { 422 | isa = PBXSourcesBuildPhase; 423 | buildActionMask = 2147483647; 424 | files = ( 425 | 41AA52092C07243F00786F96 /* ContentView.swift in Sources */, 426 | 41AA521B2C0724C300786F96 /* Logger.swift in Sources */, 427 | 41AA52072C07243F00786F96 /* Screen_TimeApp.swift in Sources */, 428 | 41AA52772C075FE600786F96 /* ManagedSettingsStore.swift in Sources */, 429 | 41AA52262C07351300786F96 /* ShieldView.swift in Sources */, 430 | 41AA52242C07338300786F96 /* ShieldViewModel.swift in Sources */, 431 | ); 432 | runOnlyForDeploymentPostprocessing = 0; 433 | }; 434 | 41AA52282C07384000786F96 /* Sources */ = { 435 | isa = PBXSourcesBuildPhase; 436 | buildActionMask = 2147483647; 437 | files = ( 438 | 41AA52322C07384000786F96 /* ShieldActionExtension.swift in Sources */, 439 | 41AA52782C075FE600786F96 /* ManagedSettingsStore.swift in Sources */, 440 | 41AA526D2C0757C100786F96 /* Logger.swift in Sources */, 441 | ); 442 | runOnlyForDeploymentPostprocessing = 0; 443 | }; 444 | 41AA523C2C07386F00786F96 /* Sources */ = { 445 | isa = PBXSourcesBuildPhase; 446 | buildActionMask = 2147483647; 447 | files = ( 448 | 41AA52462C07386F00786F96 /* ShieldConfigurationExtension.swift in Sources */, 449 | 41AA52792C075FE600786F96 /* ManagedSettingsStore.swift in Sources */, 450 | 41AA526E2C0757C100786F96 /* Logger.swift in Sources */, 451 | ); 452 | runOnlyForDeploymentPostprocessing = 0; 453 | }; 454 | 41AA524F2C074C0B00786F96 /* Sources */ = { 455 | isa = PBXSourcesBuildPhase; 456 | buildActionMask = 2147483647; 457 | files = ( 458 | 41AA52582C074C0B00786F96 /* DeviceActivityMonitorExtension.swift in Sources */, 459 | 41AA527A2C075FE600786F96 /* ManagedSettingsStore.swift in Sources */, 460 | 41AA526F2C0757C200786F96 /* Logger.swift in Sources */, 461 | ); 462 | runOnlyForDeploymentPostprocessing = 0; 463 | }; 464 | /* End PBXSourcesBuildPhase section */ 465 | 466 | /* Begin PBXTargetDependency section */ 467 | 41AA52362C07384000786F96 /* PBXTargetDependency */ = { 468 | isa = PBXTargetDependency; 469 | target = 41AA522B2C07384000786F96 /* Shield Action Extension */; 470 | targetProxy = 41AA52352C07384000786F96 /* PBXContainerItemProxy */; 471 | }; 472 | 41AA524A2C07386F00786F96 /* PBXTargetDependency */ = { 473 | isa = PBXTargetDependency; 474 | target = 41AA523F2C07386F00786F96 /* Shield Configuration Extension */; 475 | targetProxy = 41AA52492C07386F00786F96 /* PBXContainerItemProxy */; 476 | }; 477 | 41AA525C2C074C0B00786F96 /* PBXTargetDependency */ = { 478 | isa = PBXTargetDependency; 479 | target = 41AA52522C074C0B00786F96 /* Device Activity Monitor Extension */; 480 | targetProxy = 41AA525B2C074C0B00786F96 /* PBXContainerItemProxy */; 481 | }; 482 | /* End PBXTargetDependency section */ 483 | 484 | /* Begin XCBuildConfiguration section */ 485 | 41AA520F2C07244000786F96 /* Debug */ = { 486 | isa = XCBuildConfiguration; 487 | buildSettings = { 488 | ALWAYS_SEARCH_USER_PATHS = NO; 489 | ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; 490 | CLANG_ANALYZER_NONNULL = YES; 491 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 492 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; 493 | CLANG_ENABLE_MODULES = YES; 494 | CLANG_ENABLE_OBJC_ARC = YES; 495 | CLANG_ENABLE_OBJC_WEAK = YES; 496 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 497 | CLANG_WARN_BOOL_CONVERSION = YES; 498 | CLANG_WARN_COMMA = YES; 499 | CLANG_WARN_CONSTANT_CONVERSION = YES; 500 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 501 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 502 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 503 | CLANG_WARN_EMPTY_BODY = YES; 504 | CLANG_WARN_ENUM_CONVERSION = YES; 505 | CLANG_WARN_INFINITE_RECURSION = YES; 506 | CLANG_WARN_INT_CONVERSION = YES; 507 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 508 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 509 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 510 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 511 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 512 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 513 | CLANG_WARN_STRICT_PROTOTYPES = YES; 514 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 515 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 516 | CLANG_WARN_UNREACHABLE_CODE = YES; 517 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 518 | COPY_PHASE_STRIP = NO; 519 | DEBUG_INFORMATION_FORMAT = dwarf; 520 | ENABLE_STRICT_OBJC_MSGSEND = YES; 521 | ENABLE_TESTABILITY = YES; 522 | ENABLE_USER_SCRIPT_SANDBOXING = YES; 523 | GCC_C_LANGUAGE_STANDARD = gnu17; 524 | GCC_DYNAMIC_NO_PIC = NO; 525 | GCC_NO_COMMON_BLOCKS = YES; 526 | GCC_OPTIMIZATION_LEVEL = 0; 527 | GCC_PREPROCESSOR_DEFINITIONS = ( 528 | "DEBUG=1", 529 | "$(inherited)", 530 | ); 531 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 532 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 533 | GCC_WARN_UNDECLARED_SELECTOR = YES; 534 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 535 | GCC_WARN_UNUSED_FUNCTION = YES; 536 | GCC_WARN_UNUSED_VARIABLE = YES; 537 | IPHONEOS_DEPLOYMENT_TARGET = 16.0; 538 | LOCALIZATION_PREFERS_STRING_CATALOGS = YES; 539 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 540 | MTL_FAST_MATH = YES; 541 | ONLY_ACTIVE_ARCH = YES; 542 | SDKROOT = iphoneos; 543 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; 544 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 545 | }; 546 | name = Debug; 547 | }; 548 | 41AA52102C07244000786F96 /* Release */ = { 549 | isa = XCBuildConfiguration; 550 | buildSettings = { 551 | ALWAYS_SEARCH_USER_PATHS = NO; 552 | ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; 553 | CLANG_ANALYZER_NONNULL = YES; 554 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 555 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; 556 | CLANG_ENABLE_MODULES = YES; 557 | CLANG_ENABLE_OBJC_ARC = YES; 558 | CLANG_ENABLE_OBJC_WEAK = YES; 559 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 560 | CLANG_WARN_BOOL_CONVERSION = YES; 561 | CLANG_WARN_COMMA = YES; 562 | CLANG_WARN_CONSTANT_CONVERSION = YES; 563 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 564 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 565 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 566 | CLANG_WARN_EMPTY_BODY = YES; 567 | CLANG_WARN_ENUM_CONVERSION = YES; 568 | CLANG_WARN_INFINITE_RECURSION = YES; 569 | CLANG_WARN_INT_CONVERSION = YES; 570 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 571 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 572 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 573 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 574 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 575 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 576 | CLANG_WARN_STRICT_PROTOTYPES = YES; 577 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 578 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 579 | CLANG_WARN_UNREACHABLE_CODE = YES; 580 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 581 | COPY_PHASE_STRIP = NO; 582 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 583 | ENABLE_NS_ASSERTIONS = NO; 584 | ENABLE_STRICT_OBJC_MSGSEND = YES; 585 | ENABLE_USER_SCRIPT_SANDBOXING = YES; 586 | GCC_C_LANGUAGE_STANDARD = gnu17; 587 | GCC_NO_COMMON_BLOCKS = YES; 588 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 589 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 590 | GCC_WARN_UNDECLARED_SELECTOR = YES; 591 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 592 | GCC_WARN_UNUSED_FUNCTION = YES; 593 | GCC_WARN_UNUSED_VARIABLE = YES; 594 | IPHONEOS_DEPLOYMENT_TARGET = 16.0; 595 | LOCALIZATION_PREFERS_STRING_CATALOGS = YES; 596 | MTL_ENABLE_DEBUG_INFO = NO; 597 | MTL_FAST_MATH = YES; 598 | SDKROOT = iphoneos; 599 | SWIFT_COMPILATION_MODE = wholemodule; 600 | VALIDATE_PRODUCT = YES; 601 | }; 602 | name = Release; 603 | }; 604 | 41AA52122C07244000786F96 /* Debug */ = { 605 | isa = XCBuildConfiguration; 606 | buildSettings = { 607 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 608 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 609 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 610 | CODE_SIGN_ENTITLEMENTS = "Screen Time/Screen Time.entitlements"; 611 | CODE_SIGN_STYLE = Automatic; 612 | CURRENT_PROJECT_VERSION = 1; 613 | DEVELOPMENT_ASSET_PATHS = "\"Screen Time/Preview Content\""; 614 | DEVELOPMENT_TEAM = U7XVUW953J; 615 | ENABLE_PREVIEWS = YES; 616 | GENERATE_INFOPLIST_FILE = YES; 617 | INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; 618 | INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; 619 | INFOPLIST_KEY_UILaunchScreen_Generation = YES; 620 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 621 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 622 | LD_RUNPATH_SEARCH_PATHS = ( 623 | "$(inherited)", 624 | "@executable_path/Frameworks", 625 | ); 626 | MARKETING_VERSION = 1.0; 627 | PRODUCT_BUNDLE_IDENTIFIER = "com.mac.Screen-Time"; 628 | PRODUCT_NAME = "$(TARGET_NAME)"; 629 | SWIFT_EMIT_LOC_STRINGS = YES; 630 | SWIFT_VERSION = 5.0; 631 | TARGETED_DEVICE_FAMILY = "1,2"; 632 | }; 633 | name = Debug; 634 | }; 635 | 41AA52132C07244000786F96 /* Release */ = { 636 | isa = XCBuildConfiguration; 637 | buildSettings = { 638 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 639 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 640 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 641 | CODE_SIGN_ENTITLEMENTS = "Screen Time/Screen Time.entitlements"; 642 | CODE_SIGN_STYLE = Automatic; 643 | CURRENT_PROJECT_VERSION = 1; 644 | DEVELOPMENT_ASSET_PATHS = "\"Screen Time/Preview Content\""; 645 | DEVELOPMENT_TEAM = U7XVUW953J; 646 | ENABLE_PREVIEWS = YES; 647 | GENERATE_INFOPLIST_FILE = YES; 648 | INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; 649 | INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; 650 | INFOPLIST_KEY_UILaunchScreen_Generation = YES; 651 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 652 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 653 | LD_RUNPATH_SEARCH_PATHS = ( 654 | "$(inherited)", 655 | "@executable_path/Frameworks", 656 | ); 657 | MARKETING_VERSION = 1.0; 658 | PRODUCT_BUNDLE_IDENTIFIER = "com.mac.Screen-Time"; 659 | PRODUCT_NAME = "$(TARGET_NAME)"; 660 | SWIFT_EMIT_LOC_STRINGS = YES; 661 | SWIFT_VERSION = 5.0; 662 | TARGETED_DEVICE_FAMILY = "1,2"; 663 | }; 664 | name = Release; 665 | }; 666 | 41AA52392C07384000786F96 /* Debug */ = { 667 | isa = XCBuildConfiguration; 668 | buildSettings = { 669 | CODE_SIGN_ENTITLEMENTS = "Shield Action Extension/Shield_Action_Extension.entitlements"; 670 | CODE_SIGN_STYLE = Automatic; 671 | CURRENT_PROJECT_VERSION = 1; 672 | DEVELOPMENT_TEAM = U7XVUW953J; 673 | GENERATE_INFOPLIST_FILE = YES; 674 | INFOPLIST_FILE = "Shield Action Extension/Info.plist"; 675 | INFOPLIST_KEY_CFBundleDisplayName = "Shield Action Extension"; 676 | INFOPLIST_KEY_NSHumanReadableCopyright = ""; 677 | LD_RUNPATH_SEARCH_PATHS = ( 678 | "$(inherited)", 679 | "@executable_path/Frameworks", 680 | "@executable_path/../../Frameworks", 681 | ); 682 | MARKETING_VERSION = 1.0; 683 | PRODUCT_BUNDLE_IDENTIFIER = "com.mac.Screen-Time.Shield-Action-Extension"; 684 | PRODUCT_NAME = "$(TARGET_NAME)"; 685 | SKIP_INSTALL = YES; 686 | SWIFT_EMIT_LOC_STRINGS = YES; 687 | SWIFT_VERSION = 5.0; 688 | TARGETED_DEVICE_FAMILY = "1,2"; 689 | }; 690 | name = Debug; 691 | }; 692 | 41AA523A2C07384000786F96 /* Release */ = { 693 | isa = XCBuildConfiguration; 694 | buildSettings = { 695 | CODE_SIGN_ENTITLEMENTS = "Shield Action Extension/Shield_Action_Extension.entitlements"; 696 | CODE_SIGN_STYLE = Automatic; 697 | CURRENT_PROJECT_VERSION = 1; 698 | DEVELOPMENT_TEAM = U7XVUW953J; 699 | GENERATE_INFOPLIST_FILE = YES; 700 | INFOPLIST_FILE = "Shield Action Extension/Info.plist"; 701 | INFOPLIST_KEY_CFBundleDisplayName = "Shield Action Extension"; 702 | INFOPLIST_KEY_NSHumanReadableCopyright = ""; 703 | LD_RUNPATH_SEARCH_PATHS = ( 704 | "$(inherited)", 705 | "@executable_path/Frameworks", 706 | "@executable_path/../../Frameworks", 707 | ); 708 | MARKETING_VERSION = 1.0; 709 | PRODUCT_BUNDLE_IDENTIFIER = "com.mac.Screen-Time.Shield-Action-Extension"; 710 | PRODUCT_NAME = "$(TARGET_NAME)"; 711 | SKIP_INSTALL = YES; 712 | SWIFT_EMIT_LOC_STRINGS = YES; 713 | SWIFT_VERSION = 5.0; 714 | TARGETED_DEVICE_FAMILY = "1,2"; 715 | }; 716 | name = Release; 717 | }; 718 | 41AA524D2C07386F00786F96 /* Debug */ = { 719 | isa = XCBuildConfiguration; 720 | buildSettings = { 721 | CODE_SIGN_ENTITLEMENTS = "Shield Configuration Extension/Shield_Configuration_Extension.entitlements"; 722 | CODE_SIGN_STYLE = Automatic; 723 | CURRENT_PROJECT_VERSION = 1; 724 | DEVELOPMENT_TEAM = U7XVUW953J; 725 | GENERATE_INFOPLIST_FILE = YES; 726 | INFOPLIST_FILE = "Shield Configuration Extension/Info.plist"; 727 | INFOPLIST_KEY_CFBundleDisplayName = "Shield Configuration Extension"; 728 | INFOPLIST_KEY_NSHumanReadableCopyright = ""; 729 | LD_RUNPATH_SEARCH_PATHS = ( 730 | "$(inherited)", 731 | "@executable_path/Frameworks", 732 | "@executable_path/../../Frameworks", 733 | ); 734 | MARKETING_VERSION = 1.0; 735 | PRODUCT_BUNDLE_IDENTIFIER = "com.mac.Screen-Time.Shield-Configuration-Extension"; 736 | PRODUCT_NAME = "$(TARGET_NAME)"; 737 | SKIP_INSTALL = YES; 738 | SWIFT_EMIT_LOC_STRINGS = YES; 739 | SWIFT_VERSION = 5.0; 740 | TARGETED_DEVICE_FAMILY = "1,2"; 741 | }; 742 | name = Debug; 743 | }; 744 | 41AA524E2C07386F00786F96 /* Release */ = { 745 | isa = XCBuildConfiguration; 746 | buildSettings = { 747 | CODE_SIGN_ENTITLEMENTS = "Shield Configuration Extension/Shield_Configuration_Extension.entitlements"; 748 | CODE_SIGN_STYLE = Automatic; 749 | CURRENT_PROJECT_VERSION = 1; 750 | DEVELOPMENT_TEAM = U7XVUW953J; 751 | GENERATE_INFOPLIST_FILE = YES; 752 | INFOPLIST_FILE = "Shield Configuration Extension/Info.plist"; 753 | INFOPLIST_KEY_CFBundleDisplayName = "Shield Configuration Extension"; 754 | INFOPLIST_KEY_NSHumanReadableCopyright = ""; 755 | LD_RUNPATH_SEARCH_PATHS = ( 756 | "$(inherited)", 757 | "@executable_path/Frameworks", 758 | "@executable_path/../../Frameworks", 759 | ); 760 | MARKETING_VERSION = 1.0; 761 | PRODUCT_BUNDLE_IDENTIFIER = "com.mac.Screen-Time.Shield-Configuration-Extension"; 762 | PRODUCT_NAME = "$(TARGET_NAME)"; 763 | SKIP_INSTALL = YES; 764 | SWIFT_EMIT_LOC_STRINGS = YES; 765 | SWIFT_VERSION = 5.0; 766 | TARGETED_DEVICE_FAMILY = "1,2"; 767 | }; 768 | name = Release; 769 | }; 770 | 41AA525F2C074C0B00786F96 /* Debug */ = { 771 | isa = XCBuildConfiguration; 772 | buildSettings = { 773 | CODE_SIGN_ENTITLEMENTS = "Device Activity Monitor Extension/Device_Activity_Monitor_Extension.entitlements"; 774 | CODE_SIGN_STYLE = Automatic; 775 | CURRENT_PROJECT_VERSION = 1; 776 | DEVELOPMENT_TEAM = U7XVUW953J; 777 | GENERATE_INFOPLIST_FILE = YES; 778 | INFOPLIST_FILE = "Device Activity Monitor Extension/Info.plist"; 779 | INFOPLIST_KEY_CFBundleDisplayName = "Device Activity Monitor Extension"; 780 | INFOPLIST_KEY_NSHumanReadableCopyright = ""; 781 | IPHONEOS_DEPLOYMENT_TARGET = 17.5; 782 | LD_RUNPATH_SEARCH_PATHS = ( 783 | "$(inherited)", 784 | "@executable_path/Frameworks", 785 | "@executable_path/../../Frameworks", 786 | ); 787 | MARKETING_VERSION = 1.0; 788 | PRODUCT_BUNDLE_IDENTIFIER = "com.mac.Screen-Time.Device-Activity-Monitor-Extension"; 789 | PRODUCT_NAME = "$(TARGET_NAME)"; 790 | SKIP_INSTALL = YES; 791 | SWIFT_EMIT_LOC_STRINGS = YES; 792 | SWIFT_VERSION = 5.0; 793 | TARGETED_DEVICE_FAMILY = "1,2"; 794 | }; 795 | name = Debug; 796 | }; 797 | 41AA52602C074C0B00786F96 /* Release */ = { 798 | isa = XCBuildConfiguration; 799 | buildSettings = { 800 | CODE_SIGN_ENTITLEMENTS = "Device Activity Monitor Extension/Device_Activity_Monitor_Extension.entitlements"; 801 | CODE_SIGN_STYLE = Automatic; 802 | CURRENT_PROJECT_VERSION = 1; 803 | DEVELOPMENT_TEAM = U7XVUW953J; 804 | GENERATE_INFOPLIST_FILE = YES; 805 | INFOPLIST_FILE = "Device Activity Monitor Extension/Info.plist"; 806 | INFOPLIST_KEY_CFBundleDisplayName = "Device Activity Monitor Extension"; 807 | INFOPLIST_KEY_NSHumanReadableCopyright = ""; 808 | IPHONEOS_DEPLOYMENT_TARGET = 17.5; 809 | LD_RUNPATH_SEARCH_PATHS = ( 810 | "$(inherited)", 811 | "@executable_path/Frameworks", 812 | "@executable_path/../../Frameworks", 813 | ); 814 | MARKETING_VERSION = 1.0; 815 | PRODUCT_BUNDLE_IDENTIFIER = "com.mac.Screen-Time.Device-Activity-Monitor-Extension"; 816 | PRODUCT_NAME = "$(TARGET_NAME)"; 817 | SKIP_INSTALL = YES; 818 | SWIFT_EMIT_LOC_STRINGS = YES; 819 | SWIFT_VERSION = 5.0; 820 | TARGETED_DEVICE_FAMILY = "1,2"; 821 | }; 822 | name = Release; 823 | }; 824 | /* End XCBuildConfiguration section */ 825 | 826 | /* Begin XCConfigurationList section */ 827 | 41AA51FE2C07243F00786F96 /* Build configuration list for PBXProject "Screen Time" */ = { 828 | isa = XCConfigurationList; 829 | buildConfigurations = ( 830 | 41AA520F2C07244000786F96 /* Debug */, 831 | 41AA52102C07244000786F96 /* Release */, 832 | ); 833 | defaultConfigurationIsVisible = 0; 834 | defaultConfigurationName = Release; 835 | }; 836 | 41AA52112C07244000786F96 /* Build configuration list for PBXNativeTarget "Screen Time" */ = { 837 | isa = XCConfigurationList; 838 | buildConfigurations = ( 839 | 41AA52122C07244000786F96 /* Debug */, 840 | 41AA52132C07244000786F96 /* Release */, 841 | ); 842 | defaultConfigurationIsVisible = 0; 843 | defaultConfigurationName = Release; 844 | }; 845 | 41AA52382C07384000786F96 /* Build configuration list for PBXNativeTarget "Shield Action Extension" */ = { 846 | isa = XCConfigurationList; 847 | buildConfigurations = ( 848 | 41AA52392C07384000786F96 /* Debug */, 849 | 41AA523A2C07384000786F96 /* Release */, 850 | ); 851 | defaultConfigurationIsVisible = 0; 852 | defaultConfigurationName = Release; 853 | }; 854 | 41AA524C2C07386F00786F96 /* Build configuration list for PBXNativeTarget "Shield Configuration Extension" */ = { 855 | isa = XCConfigurationList; 856 | buildConfigurations = ( 857 | 41AA524D2C07386F00786F96 /* Debug */, 858 | 41AA524E2C07386F00786F96 /* Release */, 859 | ); 860 | defaultConfigurationIsVisible = 0; 861 | defaultConfigurationName = Release; 862 | }; 863 | 41AA525E2C074C0B00786F96 /* Build configuration list for PBXNativeTarget "Device Activity Monitor Extension" */ = { 864 | isa = XCConfigurationList; 865 | buildConfigurations = ( 866 | 41AA525F2C074C0B00786F96 /* Debug */, 867 | 41AA52602C074C0B00786F96 /* Release */, 868 | ); 869 | defaultConfigurationIsVisible = 0; 870 | defaultConfigurationName = Release; 871 | }; 872 | /* End XCConfigurationList section */ 873 | }; 874 | rootObject = 41AA51FB2C07243F00786F96 /* Project object */; 875 | } 876 | --------------------------------------------------------------------------------