├── Workmanager └── Classes │ ├── .gitkeep │ ├── Assets │ └── .gitkeep │ ├── Task │ ├── Property │ │ ├── BackoffPolicy.swift │ │ ├── ExistingWorkPolicy.swift │ │ └── Constraints.swift │ ├── ScheduledTask.swift │ ├── TaskRepresentable.swift │ └── Task.swift │ ├── Scheduler │ └── WorkScheduler.swift │ ├── WorkManager+Cancel.swift │ ├── Builder │ └── ProcessingTaskBuilder.swift │ ├── WorkManager+CRUD.swift │ └── WorkManager.swift ├── _Pods.xcodeproj ├── Example ├── Pods │ ├── Target Support Files │ │ ├── Workmanager │ │ │ ├── Workmanager.modulemap │ │ │ ├── Workmanager-dummy.m │ │ │ ├── Workmanager-prefix.pch │ │ │ ├── Workmanager-umbrella.h │ │ │ ├── Workmanager.xcconfig │ │ │ └── Workmanager-Info.plist │ │ ├── Pods-Workmanager_Tests │ │ │ ├── Pods-Workmanager_Tests.modulemap │ │ │ ├── Pods-Workmanager_Tests-acknowledgements.markdown │ │ │ ├── Pods-Workmanager_Tests-dummy.m │ │ │ ├── Pods-Workmanager_Tests-umbrella.h │ │ │ ├── Pods-Workmanager_Tests.debug.xcconfig │ │ │ ├── Pods-Workmanager_Tests.release.xcconfig │ │ │ ├── Pods-Workmanager_Tests-Info.plist │ │ │ └── Pods-Workmanager_Tests-acknowledgements.plist │ │ └── Pods-Workmanager_Example │ │ │ ├── Pods-Workmanager_Example.modulemap │ │ │ ├── Pods-Workmanager_Example-dummy.m │ │ │ ├── Pods-Workmanager_Example-umbrella.h │ │ │ ├── Pods-Workmanager_Example.debug.xcconfig │ │ │ ├── Pods-Workmanager_Example.release.xcconfig │ │ │ ├── Pods-Workmanager_Example-Info.plist │ │ │ ├── Pods-Workmanager_Example-acknowledgements.markdown │ │ │ ├── Pods-Workmanager_Example-acknowledgements.plist │ │ │ └── Pods-Workmanager_Example-frameworks.sh │ ├── Manifest.lock │ ├── Local Podspecs │ │ └── Workmanager.podspec.json │ └── Pods.xcodeproj │ │ └── project.pbxproj ├── Podfile ├── Workmanager.xcodeproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ ├── xcshareddata │ │ └── xcschemes │ │ │ └── Workmanager-Example.xcscheme │ └── project.pbxproj ├── Workmanager.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── Workmanager │ ├── ColorGenerator │ │ └── ColorGenerator.swift │ ├── Images.xcassets │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── Info.plist │ ├── AppDelegate.swift │ ├── Base.lproj │ │ └── LaunchScreen.xib │ └── ViewController.swift ├── Podfile.lock └── Tests │ ├── Info.plist │ └── Tests.swift ├── LICENSE ├── .gitignore ├── Workmanager.podspec └── README.md /Workmanager/Classes/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Workmanager/Classes/Assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /_Pods.xcodeproj: -------------------------------------------------------------------------------- 1 | Example/Pods/Pods.xcodeproj -------------------------------------------------------------------------------- /Workmanager/Classes/Task/Property/BackoffPolicy.swift: -------------------------------------------------------------------------------- 1 | public enum BackoffPolicy { 2 | 3 | case exponential 4 | case linear 5 | } 6 | -------------------------------------------------------------------------------- /Workmanager/Classes/Task/Property/ExistingWorkPolicy.swift: -------------------------------------------------------------------------------- 1 | public enum ExistingWorkPolicy { 2 | 3 | case keep 4 | case replace 5 | } 6 | -------------------------------------------------------------------------------- /Workmanager/Classes/Task/Property/Constraints.swift: -------------------------------------------------------------------------------- 1 | public enum Constraints { 2 | 3 | case requiresNetworkConnectivity 4 | case requiresExternalPower 5 | } 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Workmanager/Workmanager.modulemap: -------------------------------------------------------------------------------- 1 | framework module Workmanager { 2 | umbrella header "Workmanager-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Workmanager/Workmanager-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Workmanager : NSObject 3 | @end 4 | @implementation PodsDummy_Workmanager 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Podfile: -------------------------------------------------------------------------------- 1 | use_frameworks! 2 | 3 | target 'Workmanager_Example' do 4 | pod 'Workmanager', :path => '../' 5 | 6 | target 'Workmanager_Tests' do 7 | inherit! :search_paths 8 | 9 | 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Workmanager_Tests/Pods-Workmanager_Tests.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_Workmanager_Tests { 2 | umbrella header "Pods-Workmanager_Tests-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Workmanager_Tests/Pods-Workmanager_Tests-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | Generated by CocoaPods - https://cocoapods.org 4 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Workmanager_Example/Pods-Workmanager_Example.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_Workmanager_Example { 2 | umbrella header "Pods-Workmanager_Example-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Workmanager_Tests/Pods-Workmanager_Tests-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_Workmanager_Tests : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_Workmanager_Tests 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Workmanager.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Workmanager_Example/Pods-Workmanager_Example-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_Workmanager_Example : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_Workmanager_Example 5 | @end 6 | -------------------------------------------------------------------------------- /Workmanager/Classes/Task/ScheduledTask.swift: -------------------------------------------------------------------------------- 1 | import BackgroundTasks 2 | 3 | struct ScheduledTask: Hashable { 4 | 5 | let task: Task 6 | let request: BGTaskRequest 7 | 8 | func hash(into hasher: inout Hasher) { 9 | hasher.combine(task) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Workmanager/Workmanager-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Example/Workmanager.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Example/Workmanager.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Example/Workmanager/ColorGenerator/ColorGenerator.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | extension UIColor { 4 | static var random: UIColor { 5 | return UIColor(red: .random(in: 0...1), 6 | green: .random(in: 0...1), 7 | blue: .random(in: 0...1), 8 | alpha: 1.0) 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Example/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Workmanager (0.1.0) 3 | 4 | DEPENDENCIES: 5 | - Workmanager (from `../`) 6 | 7 | EXTERNAL SOURCES: 8 | Workmanager: 9 | :path: "../" 10 | 11 | SPEC CHECKSUMS: 12 | Workmanager: 28a1d8fa117491f9552a1f65182abc6f99d55f50 13 | 14 | PODFILE CHECKSUM: 5b44dc91308611c26dcc88facebfa34ea46557b5 15 | 16 | COCOAPODS: 1.8.4 17 | -------------------------------------------------------------------------------- /Example/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Workmanager (0.1.0) 3 | 4 | DEPENDENCIES: 5 | - Workmanager (from `../`) 6 | 7 | EXTERNAL SOURCES: 8 | Workmanager: 9 | :path: "../" 10 | 11 | SPEC CHECKSUMS: 12 | Workmanager: 28a1d8fa117491f9552a1f65182abc6f99d55f50 13 | 14 | PODFILE CHECKSUM: 5b44dc91308611c26dcc88facebfa34ea46557b5 15 | 16 | COCOAPODS: 1.8.4 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Workmanager/Workmanager-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double WorkmanagerVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char WorkmanagerVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Workmanager_Tests/Pods-Workmanager_Tests-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_Workmanager_TestsVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_Workmanager_TestsVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Workmanager_Example/Pods-Workmanager_Example-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_Workmanager_ExampleVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_Workmanager_ExampleVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Workmanager/Classes/Task/TaskRepresentable.swift: -------------------------------------------------------------------------------- 1 | protocol TaskRepresentable: Equatable { 2 | 3 | var identifier: String { get } 4 | var name: String { get } 5 | var initialDelay: TimeInterval { get } 6 | var backoffPolicyDelay: TimeInterval { get } 7 | var tag: String? { get } 8 | var existingWorkPolicy: ExistingWorkPolicy? { get } 9 | var constraints: [Constraints]? { get } 10 | var backoffPolicy: BackoffPolicy? { get } 11 | var inputData: String? { get } 12 | var frequency: TimeInterval? { get } 13 | } 14 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Workmanager/Workmanager.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Workmanager 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 4 | PODS_BUILD_DIR = ${BUILD_DIR} 5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 11 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Workmanager_Tests/Pods-Workmanager_Tests.debug.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Workmanager" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Workmanager/Workmanager.framework/Headers" 4 | OTHER_LDFLAGS = $(inherited) -framework "Workmanager" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 8 | PODS_ROOT = ${SRCROOT}/Pods 9 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 10 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Workmanager_Tests/Pods-Workmanager_Tests.release.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Workmanager" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Workmanager/Workmanager.framework/Headers" 4 | OTHER_LDFLAGS = $(inherited) -framework "Workmanager" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 8 | PODS_ROOT = ${SRCROOT}/Pods 9 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 10 | -------------------------------------------------------------------------------- /Example/Pods/Local Podspecs/Workmanager.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Workmanager", 3 | "version": "0.1.0", 4 | "summary": "A short description of Workmanager.", 5 | "description": "TODO: Add long description of the pod here.", 6 | "homepage": "https://github.com/Olivier Scalais/Workmanager", 7 | "license": { 8 | "type": "MIT", 9 | "file": "LICENSE" 10 | }, 11 | "authors": { 12 | "Olivier Scalais": "olivier@codify.be" 13 | }, 14 | "source": { 15 | "git": "https://github.com/Olivier Scalais/Workmanager.git", 16 | "tag": "0.1.0" 17 | }, 18 | "platforms": { 19 | "ios": "8.0" 20 | }, 21 | "source_files": "Workmanager/Classes/**/*" 22 | } 23 | -------------------------------------------------------------------------------- /Workmanager/Classes/Scheduler/WorkScheduler.swift: -------------------------------------------------------------------------------- 1 | import BackgroundTasks 2 | 3 | class WorkScheduler { 4 | 5 | // MARK: Scheduling 6 | 7 | func scheduleTask(_ task: Task, onScheduled: (BGTaskRequest) -> Void) throws { 8 | let request = ProcessingRequestBuilder(identifier: task.identifier) 9 | .appendConstraints(task.constraints) 10 | .appendInitialDelay(task.initialDelay) 11 | .build() 12 | 13 | try submitRequest(request) 14 | onScheduled(request) 15 | } 16 | 17 | // MARK: Submit 18 | 19 | private func submitRequest(_ request: BGProcessingTaskRequest) throws { 20 | try BGTaskScheduler.shared.submit(request) 21 | } 22 | } 23 | 24 | 25 | -------------------------------------------------------------------------------- /Workmanager/Classes/WorkManager+Cancel.swift: -------------------------------------------------------------------------------- 1 | import BackgroundTasks 2 | 3 | extension WorkManager { 4 | 5 | // MARK: Cancel 6 | 7 | public func cancelAllTasks() { 8 | BGTaskScheduler.shared.cancelAllTaskRequests() 9 | scheduledTasks.removeAll() 10 | } 11 | 12 | public func cancelTask(withIdentifier identifier: String) { 13 | BGTaskScheduler.shared.cancel(taskRequestWithIdentifier: identifier) 14 | removeScheduledTask(withIdentifier: identifier) 15 | } 16 | 17 | public func cancelTask(withTag tag: String) { 18 | if let request = getRequest(withTag: tag) { 19 | BGTaskScheduler.shared.cancel(taskRequestWithIdentifier: request.identifier) 20 | removeScheduledTask(withTag: tag) 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Example/Tests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Workmanager_Example/Pods-Workmanager_Example.debug.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Workmanager" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Workmanager/Workmanager.framework/Headers" 5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 6 | OTHER_LDFLAGS = $(inherited) -framework "Workmanager" 7 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 8 | PODS_BUILD_DIR = ${BUILD_DIR} 9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Workmanager_Example/Pods-Workmanager_Example.release.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Workmanager" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Workmanager/Workmanager.framework/Headers" 5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 6 | OTHER_LDFLAGS = $(inherited) -framework "Workmanager" 7 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 8 | PODS_BUILD_DIR = ${BUILD_DIR} 9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 13 | -------------------------------------------------------------------------------- /Example/Tests/Tests.swift: -------------------------------------------------------------------------------- 1 | import XCTest 2 | import Workmanager 3 | 4 | class Tests: XCTestCase { 5 | 6 | override func setUp() { 7 | super.setUp() 8 | // Put setup code here. This method is called before the invocation of each test method in the class. 9 | } 10 | 11 | override func tearDown() { 12 | // Put teardown code here. This method is called after the invocation of each test method in the class. 13 | super.tearDown() 14 | } 15 | 16 | func testExample() { 17 | // This is an example of a functional test case. 18 | XCTAssert(true, "Pass") 19 | } 20 | 21 | func testPerformanceExample() { 22 | // This is an example of a performance test case. 23 | self.measure() { 24 | // Put the code you want to measure the time of here. 25 | } 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Workmanager/Workmanager-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 0.1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Workmanager_Example/Pods-Workmanager_Example-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Workmanager_Tests/Pods-Workmanager_Tests-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Workmanager_Tests/Pods-Workmanager_Tests-acknowledgements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | FooterText 9 | This application makes use of the following third party libraries: 10 | Title 11 | Acknowledgements 12 | Type 13 | PSGroupSpecifier 14 | 15 | 16 | FooterText 17 | Generated by CocoaPods - https://cocoapods.org 18 | Title 19 | 20 | Type 21 | PSGroupSpecifier 22 | 23 | 24 | StringsTable 25 | Acknowledgements 26 | Title 27 | Acknowledgements 28 | 29 | 30 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 vrtdev 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Example/Workmanager/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | }, 43 | { 44 | "idiom" : "ios-marketing", 45 | "size" : "1024x1024", 46 | "scale" : "1x" 47 | } 48 | ], 49 | "info" : { 50 | "version" : 1, 51 | "author" : "xcode" 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /Workmanager/Classes/Builder/ProcessingTaskBuilder.swift: -------------------------------------------------------------------------------- 1 | import BackgroundTasks 2 | 3 | class ProcessingRequestBuilder { 4 | 5 | // MARK: Private properties 6 | 7 | private let request: BGProcessingTaskRequest 8 | 9 | // MARK: Init 10 | 11 | init(identifier: String) { 12 | request = BGProcessingTaskRequest(identifier: identifier) 13 | } 14 | 15 | // MARK: Building blocks 16 | 17 | func appendInitialDelay(_ initialDelay: TimeInterval) -> ProcessingRequestBuilder { 18 | request.earliestBeginDate = Date(timeIntervalSinceNow: initialDelay) 19 | return self 20 | } 21 | 22 | func appendConstraints(_ constraints: [Constraints]?) -> ProcessingRequestBuilder { 23 | guard let constraints = constraints else { return self } 24 | 25 | for constraint in constraints { 26 | switch constraint { 27 | case .requiresExternalPower: 28 | request.requiresExternalPower = true 29 | case .requiresNetworkConnectivity: 30 | request.requiresNetworkConnectivity = true 31 | } 32 | } 33 | 34 | return self 35 | } 36 | 37 | func build() -> BGProcessingTaskRequest { 38 | return request 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Workmanager_Example/Pods-Workmanager_Example-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## Workmanager 5 | 6 | Copyright (c) 2019 Olivier Scalais 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in 16 | all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | THE SOFTWARE. 25 | 26 | Generated by CocoaPods - https://cocoapods.org 27 | -------------------------------------------------------------------------------- /Workmanager/Classes/Task/Task.swift: -------------------------------------------------------------------------------- 1 | public struct Task: TaskRepresentable, Hashable { 2 | 3 | var identifier: String 4 | var name: String 5 | var initialDelay: TimeInterval 6 | var backoffPolicyDelay: TimeInterval 7 | var tag: String? 8 | var existingWorkPolicy: ExistingWorkPolicy? 9 | var constraints: [Constraints]? 10 | var backoffPolicy: BackoffPolicy? 11 | var inputData: String? 12 | var frequency: TimeInterval? 13 | var isPeriodic: Bool { 14 | guard frequency != nil else { return false} 15 | return true 16 | } 17 | 18 | public init(identifier: String, 19 | name: String, 20 | initialDelay: TimeInterval, 21 | backoffPolicyDelay: TimeInterval, 22 | tag: String? = nil, 23 | frequency: TimeInterval? = nil, 24 | existingWorkPolicy: ExistingWorkPolicy? = nil, 25 | constraints: [Constraints]? = nil, 26 | backoffPolicy: BackoffPolicy? = nil, 27 | inputData: String? = nil) { 28 | self.identifier = identifier 29 | self.name = name 30 | self.initialDelay = initialDelay 31 | self.backoffPolicyDelay = backoffPolicyDelay 32 | self.tag = tag 33 | self.frequency = frequency 34 | self.existingWorkPolicy = existingWorkPolicy 35 | self.constraints = constraints 36 | self.backoffPolicy = backoffPolicy 37 | self.inputData = inputData 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Example/Workmanager/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BGTaskSchedulerPermittedIdentifiers 6 | 7 | be.vrt.ios-workmanager.oneoffbackgroundtask 8 | be.vrt.ios-workmanager.recurringbackgroundtask 9 | 10 | CFBundleDevelopmentRegion 11 | en 12 | CFBundleExecutable 13 | $(EXECUTABLE_NAME) 14 | CFBundleIdentifier 15 | $(PRODUCT_BUNDLE_IDENTIFIER) 16 | CFBundleInfoDictionaryVersion 17 | 6.0 18 | CFBundleName 19 | $(PRODUCT_NAME) 20 | CFBundlePackageType 21 | APPL 22 | CFBundleShortVersionString 23 | 1.0 24 | CFBundleSignature 25 | ???? 26 | CFBundleVersion 27 | 1 28 | LSRequiresIPhoneOS 29 | 30 | UIBackgroundModes 31 | 32 | processing 33 | 34 | UILaunchStoryboardName 35 | LaunchScreen 36 | UIRequiredDeviceCapabilities 37 | 38 | armv7 39 | 40 | UISupportedInterfaceOrientations 41 | 42 | UIInterfaceOrientationPortrait 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 4 | 5 | ## Build generated 6 | build/ 7 | DerivedData/ 8 | 9 | ## Various settings 10 | *.pbxuser 11 | !default.pbxuser 12 | *.mode1v3 13 | !default.mode1v3 14 | *.mode2v3 15 | !default.mode2v3 16 | *.perspectivev3 17 | !default.perspectivev3 18 | xcuserdata/ 19 | 20 | ## Other 21 | *.moved-aside 22 | *.xccheckout 23 | *.xcscmblueprint 24 | 25 | ## Obj-C/Swift specific 26 | *.hmap 27 | *.ipa 28 | *.dSYM.zip 29 | *.dSYM 30 | 31 | ## Playgrounds 32 | timeline.xctimeline 33 | playground.xcworkspace 34 | 35 | # Swift Package Manager 36 | # 37 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. 38 | # Packages/ 39 | # Package.pins 40 | # Package.resolved 41 | .build/ 42 | 43 | # CocoaPods 44 | # 45 | # We recommend against adding the Pods directory to your .gitignore. However 46 | # you should judge for yourself, the pros and cons are mentioned at: 47 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 48 | # 49 | # Pods/ 50 | 51 | # Carthage 52 | # 53 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 54 | # Carthage/Checkouts 55 | 56 | Carthage/Build 57 | 58 | # fastlane 59 | # 60 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 61 | # screenshots whenever they are needed. 62 | # For more information about the recommended setup visit: 63 | # https://docs.fastlane.tools/best-practices/source-control/#source-control 64 | 65 | fastlane/report.xml 66 | fastlane/Preview.html 67 | fastlane/screenshots/**/*.png 68 | fastlane/test_output 69 | -------------------------------------------------------------------------------- /Workmanager.podspec: -------------------------------------------------------------------------------- 1 | # 2 | # Be sure to run `pod lib lint Workmanager.podspec' to ensure this is a 3 | # valid spec before submitting. 4 | # 5 | # Any lines starting with a # are optional, but their use is encouraged 6 | # To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html 7 | # 8 | 9 | Pod::Spec.new do |s| 10 | s.name = 'Workmanager' 11 | s.version = '0.1.0' 12 | s.summary = 'A short description of Workmanager.' 13 | 14 | # This description is used to generate tags and improve search results. 15 | # * Think: What does it do? Why did you write it? What is the focus? 16 | # * Try to keep it short, snappy and to the point. 17 | # * Write the description between the DESC delimiters below. 18 | # * Finally, don't worry about the indent, CocoaPods strips it! 19 | 20 | s.description = <<-DESC 21 | TODO: Add long description of the pod here. 22 | DESC 23 | 24 | s.homepage = 'https://github.com/vrtdev/ios-workmanager' 25 | # s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2' 26 | s.license = { :type => 'MIT', :file => 'LICENSE' } 27 | s.author = { 'Olivier Scalais' => 'olivier@codify.be' } 28 | # s.source = { :git => 'https://github.com/Olivier Scalais/Workmanager.git', :tag => s.version.to_s } 29 | # s.social_media_url = 'https://twitter.com/' 30 | 31 | s.ios.deployment_target = '13.0' 32 | 33 | s.source_files = 'Workmanager/Classes/**/*' 34 | 35 | # s.resource_bundles = { 36 | # 'Workmanager' => ['Workmanager/Assets/*.png'] 37 | # } 38 | 39 | # s.public_header_files = 'Pod/Classes/**/*.h' 40 | # s.frameworks = 'UIKit', 'MapKit' 41 | # s.dependency 'AFNetworking', '~> 2.3' 42 | end 43 | -------------------------------------------------------------------------------- /Example/Workmanager/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Workmanager 3 | import BackgroundTasks 4 | 5 | @UIApplicationMain 6 | class AppDelegate: UIResponder, UIApplicationDelegate { 7 | 8 | var window: UIWindow? 9 | private lazy var viewController: ViewController = ViewController() 10 | 11 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 12 | WorkManager.shared.registerTask(withIdentifier: "be.vrt.ios-workmanager.oneoffbackgroundtask") { task in 13 | self.handleOneOffTrigger(task: task as! BGProcessingTask) 14 | } 15 | 16 | WorkManager.shared.registerTask(withIdentifier: "be.vrt.ios-workmanager.recurringbackgroundtask") { task in 17 | self.handlePeriodicTrigger(task: task as! BGProcessingTask) 18 | } 19 | 20 | 21 | window = UIWindow(frame: UIScreen.main.bounds) 22 | window?.backgroundColor = .black 23 | window?.makeKeyAndVisible() 24 | 25 | window?.rootViewController = UINavigationController(rootViewController: viewController) 26 | 27 | return true 28 | } 29 | } 30 | 31 | extension AppDelegate { 32 | 33 | private func handleOneOffTrigger(task: BGProcessingTask) { 34 | DispatchQueue.main.async { [weak self] in 35 | self?.viewController.updateOneOffBallColor(toColor: UIColor.random) 36 | } 37 | 38 | do { 39 | try WorkManager.shared.taskDidFinish(task, success: true) 40 | } catch { 41 | 42 | } 43 | } 44 | 45 | private func handlePeriodicTrigger(task: BGProcessingTask) { 46 | DispatchQueue.main.async { [weak self] in 47 | self?.viewController.updateRecurringBallColor(toColor: UIColor.random) 48 | } 49 | 50 | do { 51 | try WorkManager.shared.taskDidFinish(task, success: true) 52 | } catch { 53 | 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Workmanager_Example/Pods-Workmanager_Example-acknowledgements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | FooterText 9 | This application makes use of the following third party libraries: 10 | Title 11 | Acknowledgements 12 | Type 13 | PSGroupSpecifier 14 | 15 | 16 | FooterText 17 | Copyright (c) 2019 Olivier Scalais <olivier@codify.be> 18 | 19 | Permission is hereby granted, free of charge, to any person obtaining a copy 20 | of this software and associated documentation files (the "Software"), to deal 21 | in the Software without restriction, including without limitation the rights 22 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 23 | copies of the Software, and to permit persons to whom the Software is 24 | furnished to do so, subject to the following conditions: 25 | 26 | The above copyright notice and this permission notice shall be included in 27 | all copies or substantial portions of the Software. 28 | 29 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 30 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 31 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 32 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 33 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 34 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 35 | THE SOFTWARE. 36 | 37 | License 38 | MIT 39 | Title 40 | Workmanager 41 | Type 42 | PSGroupSpecifier 43 | 44 | 45 | FooterText 46 | Generated by CocoaPods - https://cocoapods.org 47 | Title 48 | 49 | Type 50 | PSGroupSpecifier 51 | 52 | 53 | StringsTable 54 | Acknowledgements 55 | Title 56 | Acknowledgements 57 | 58 | 59 | -------------------------------------------------------------------------------- /Workmanager/Classes/WorkManager+CRUD.swift: -------------------------------------------------------------------------------- 1 | import BackgroundTasks 2 | 3 | extension WorkManager { 4 | 5 | // MARK: CRUD 6 | 7 | internal func createTask(withIdentifier identifier: String, 8 | name: String, 9 | frequency: TimeInterval?, 10 | initialDelay: TimeInterval, 11 | backoffPolicyDelay: TimeInterval, 12 | tag: String?, 13 | existingWorkPolicy: ExistingWorkPolicy?, 14 | constraints: [Constraints]?, 15 | backoffPolicy: BackoffPolicy?, 16 | inputData: String?) throws { 17 | if let existingWorkPolicy = existingWorkPolicy, let _ = getScheduledTask(withIdentifier: identifier) { 18 | switch existingWorkPolicy { 19 | case .keep: 20 | return 21 | case .replace: 22 | cancelTask(withIdentifier: identifier) 23 | } 24 | } 25 | 26 | let task = Task(identifier: identifier, 27 | name: name, 28 | initialDelay: initialDelay, 29 | backoffPolicyDelay: backoffPolicyDelay, 30 | tag: tag, 31 | frequency: frequency, 32 | existingWorkPolicy: existingWorkPolicy, 33 | constraints: constraints, 34 | backoffPolicy: backoffPolicy, 35 | inputData: inputData) 36 | 37 | try scheduler.scheduleTask(task) { request in 38 | scheduledTasks.insert(ScheduledTask(task: task, request: request)) 39 | } 40 | } 41 | 42 | internal func getScheduledTask(forCompletedTask completedTask: BGTask) -> ScheduledTask? { 43 | return scheduledTasks.first { $0.task.identifier == completedTask.identifier } 44 | } 45 | 46 | internal func getScheduledTask(withIdentifier identifier: String) -> ScheduledTask? { 47 | return scheduledTasks.first { $0.task.identifier == identifier } 48 | } 49 | 50 | internal func getScheduledTask(withTag tag: String) -> ScheduledTask? { 51 | return scheduledTasks.first { $0.task.tag == tag } 52 | } 53 | 54 | internal func getRequest(withTag tag: String) -> BGTaskRequest? { 55 | return getScheduledTask(withTag: tag)?.request 56 | } 57 | 58 | internal func removeScheduledTask(_ scheduledTask: ScheduledTask) { 59 | if scheduledTasks.contains(scheduledTask) { 60 | scheduledTasks.remove(scheduledTask) 61 | } 62 | } 63 | 64 | internal func removeScheduledTask(withIdentifier identifier: String) { 65 | if let scheduledTask = getScheduledTask(withIdentifier: identifier) { 66 | removeScheduledTask(scheduledTask) 67 | } 68 | } 69 | 70 | internal func removeScheduledTask(withTag tag: String) { 71 | if let scheduledTask = getScheduledTask(withTag: tag) { 72 | removeScheduledTask(scheduledTask) 73 | } 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # iOS WorkManager 2 | 3 | iOS WorkManager is a wrapper around [BackgroundTasks](https://developer.apple.com/documentation/backgroundtasks) 4 | 5 | > Currently only proccesing tasks are supported 6 | 7 | It is useful to run periodic tasks, such as fetching remote data on a regular basis. 8 | 9 | # Installation 10 | 11 | # Setup 12 | 13 | Before you can schedule a background task, you must register each task with a unique identifier in your project's `Info.plist`: 14 | 15 | ```xml 16 | BGTaskSchedulerPermittedIdentifiers 17 | 18 | be.vrt.ios-workmanager.oneoffbackgroundtask 19 | be.vrt.ios-workmanager.recurringbackgroundtask 20 | 21 | ``` 22 | 23 | Also add required ***UIBackgroundModes***: 24 | 25 | ```xml 26 | UIBackgroundModes 27 | 28 | processing 29 | 30 | ``` 31 | 32 | # Registering a task 33 | 34 | Register a task inside your `AppDelegate` `didFinishLaunchingWithOptions` and provide a callback for when the task is executed: 35 | 36 | ```Swift 37 | WorkManager.shared.registerTask(withIdentifier: "be.vrt.ios-workmanager.oneoffbackgroundtask") { task in 38 | self.handleOneOffTrigger(task: task as! BGProcessingTask) 39 | } 40 | ``` 41 | 42 | # Schedule a task 43 | 44 | Two kinds of background tasks can be registered : 45 | - **One off task** : runs only once 46 | - **Periodic tasks** : runs indefinitely on a regular basis 47 | 48 | To schedule a one off task: 49 | 50 | ```Swift 51 | WorkManager.shared.scheduleOneOffTask(withIdentifier: "be.vrt.ios-workmanager.oneoffbackgroundtask", name: "update_something") 52 | ``` 53 | 54 | To schedule a periodic task: 55 | 56 | ```Swift 57 | WorkManager.shared.schedulePeriodicTask(withIdentifier: "be.vrt.ios-workmanager.recurringbackgroundtask", name: "update_something", frequency: 900) 58 | ``` 59 | 60 | # Properties 61 | 62 | ## Initial Delay 63 | 64 | Indicates how along a task should wait before its first run. 65 | 66 | ```Swift 67 | WorkManager.shared.schedulePeriodicTask(withIdentifier: "be.vrt.ios-workmanager.recurringbackgroundtask", name: "update_something", frequency: 900, initialDelay: 900) 68 | ``` 69 | 70 | ## Existing Work Policy 71 | 72 | Indicates the desired behaviour when the same task is scheduled more than once. 73 | The default is `KEEP` 74 | 75 | ```Swift 76 | WorkManager.shared.scheduleOneOffTask(withIdentifier: "be.vrt.ios-workmanager.oneoffbackgroundtask", name: "update_something", existingWorkPolicy: .replace) 77 | ``` 78 | 79 | ## Constraints 80 | 81 | ```Swift 82 | WorkManager.shared.schedulePeriodicTask(withIdentifier: "be.vrt.ios-workmanager.recurringbackgroundtask", name: "update_something", frequency: 900, constraints: [.requiresExternalPower, .requiresNetworkConnectivity]) 83 | ``` 84 | 85 | ## BackoffPolicy 86 | 87 | Indicates the waiting strategy upon task failure. 88 | You can also specify the delay. 89 | 90 | ```Swift 91 | WorkManager.shared.schedulePeriodicTask(withIdentifier: "be.vrt.ios-workmanager.recurringbackgroundtask", name: "update_something", frequency: 900,backoffPolicy: .exponential, backoffPolicyDelay: 500) 92 | ``` 93 | 94 | # Cancel a task 95 | 96 | A task can be cancelled in different ways : 97 | 98 | ## With identifier 99 | 100 | ```Swift 101 | WorkManager.shared.cancelTask(withIdentifier identifier: "") 102 | ``` 103 | 104 | ## With tag 105 | 106 | ```Swift 107 | WorkManager.shared.cancelTask(withTag tag: "") 108 | ``` 109 | 110 | ## All 111 | 112 | ```Swift 113 | WorkManager.shared.cancelAllTasks() 114 | ``` 115 | 116 | # Example 117 | 118 | See example project 119 | 120 | 121 | 122 | 123 | -------------------------------------------------------------------------------- /Example/Workmanager/Base.lproj/LaunchScreen.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 25 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /Example/Workmanager.xcodeproj/xcshareddata/xcschemes/Workmanager-Example.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 29 | 35 | 36 | 37 | 38 | 39 | 44 | 45 | 51 | 52 | 53 | 54 | 56 | 62 | 63 | 64 | 65 | 66 | 76 | 78 | 84 | 85 | 86 | 87 | 93 | 95 | 101 | 102 | 103 | 104 | 106 | 107 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /Example/Workmanager/ViewController.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Workmanager 3 | import BackgroundTasks 4 | 5 | class ViewController: UIViewController { 6 | 7 | // MARK: UI 8 | 9 | private let stackView: UIStackView = { 10 | let stackView = UIStackView() 11 | stackView.translatesAutoresizingMaskIntoConstraints = false 12 | stackView.axis = .vertical 13 | stackView.spacing = 10 14 | stackView.alignment = .center 15 | return stackView 16 | }() 17 | 18 | private let explanationLabel: UILabel = { 19 | let label = UILabel() 20 | label.font = UIFont.systemFont(ofSize: 14, weight: .light) 21 | label.text = "Registering a task will randomly change the corresponding ball's backgroundcolor." 22 | label.numberOfLines = 0 23 | label.textAlignment = .center 24 | label.textColor = .black 25 | return label 26 | }() 27 | 28 | private let oneTimeTaskLabel: UILabel = { 29 | let label = UILabel() 30 | label.font = UIFont.systemFont(ofSize: 20, weight: .bold) 31 | label.text = "One Off Tasks" 32 | label.textColor = .black 33 | return label 34 | }() 35 | 36 | private lazy var registerOneTimeWorkTaskButton: UIButton = { 37 | let button = UIButton(type: .roundedRect) 38 | button.addTarget(self, action: #selector(didTapRegisterOneOffTaskButton(_:)), for: .touchUpInside) 39 | button.setTitle("Register one off task", for: .normal) 40 | button.translatesAutoresizingMaskIntoConstraints = false 41 | return button 42 | }() 43 | 44 | private let oneoffBall: UIView = { 45 | let view = UIView() 46 | view.backgroundColor = .green 47 | view.layer.cornerRadius = 30 48 | view.translatesAutoresizingMaskIntoConstraints = false 49 | return view 50 | }() 51 | 52 | private let periodicTaskLabel: UILabel = { 53 | let label = UILabel() 54 | label.font = UIFont.systemFont(ofSize: 20, weight: .bold) 55 | label.text = "Periodic Tasks" 56 | label.textColor = .black 57 | return label 58 | }() 59 | 60 | private lazy var registerPeriodicWorkTaskButton: UIButton = { 61 | let button = UIButton(type: .roundedRect) 62 | button.addTarget(self, action: #selector(didTapRegisterPeriodicTaskButton(_:)), for: .touchUpInside) 63 | button.setTitle("Register periodic task", for: .normal) 64 | button.translatesAutoresizingMaskIntoConstraints = false 65 | return button 66 | }() 67 | 68 | private let recurringBall: UIView = { 69 | let view = UIView() 70 | view.backgroundColor = .green 71 | view.layer.cornerRadius = 30 72 | view.translatesAutoresizingMaskIntoConstraints = false 73 | return view 74 | }() 75 | 76 | // MARK: Lifecycle 77 | 78 | override func loadView() { 79 | super.loadView() 80 | 81 | view.backgroundColor = .white 82 | 83 | let margins = view.layoutMarginsGuide 84 | 85 | stackView.addArrangedSubview(explanationLabel) 86 | stackView.setCustomSpacing(40, after: explanationLabel) 87 | stackView.addArrangedSubview(oneTimeTaskLabel) 88 | stackView.addArrangedSubview(registerOneTimeWorkTaskButton) 89 | stackView.addArrangedSubview(oneoffBall) 90 | oneoffBall.widthAnchor.constraint(equalToConstant: 60).isActive = true 91 | oneoffBall.heightAnchor.constraint(equalToConstant: 60).isActive = true 92 | stackView.setCustomSpacing(40, after: oneoffBall) 93 | stackView.addArrangedSubview(periodicTaskLabel) 94 | stackView.addArrangedSubview(registerPeriodicWorkTaskButton) 95 | stackView.addArrangedSubview(recurringBall) 96 | recurringBall.widthAnchor.constraint(equalToConstant: 60).isActive = true 97 | recurringBall.heightAnchor.constraint(equalToConstant: 60).isActive = true 98 | 99 | view.addSubview(stackView) 100 | stackView.topAnchor.constraint(equalTo: margins.topAnchor, constant: 20).isActive = true 101 | stackView.leftAnchor.constraint(equalTo: margins.leftAnchor, constant: 0).isActive = true 102 | stackView.rightAnchor.constraint(equalTo: margins.rightAnchor, constant: 0).isActive = true 103 | } 104 | 105 | override func viewDidLoad() { 106 | super.viewDidLoad() 107 | 108 | title = "VRT iOS WorkManager" 109 | } 110 | 111 | // MARK: Actions 112 | 113 | 114 | @objc private func didTapRegisterOneOffTaskButton(_ sender: UIButton) { 115 | do { 116 | try WorkManager.shared.scheduleOneOffTask(withIdentifier: "be.vrt.ios-workmanager.oneoffbackgroundtask", name: "", existingWorkPolicy: .keep) 117 | } catch { 118 | } 119 | } 120 | 121 | @objc private func didTapRegisterPeriodicTaskButton(_ sender: UIButton) { 122 | do { 123 | try WorkManager.shared.schedulePeriodicTask(withIdentifier: "be.vrt.ios-workmanager.recurringbackgroundtask", name: "", frequency: 60) 124 | } catch { 125 | } 126 | } 127 | 128 | // MARK: Public color setters 129 | 130 | func updateOneOffBallColor(toColor color: UIColor) { 131 | oneoffBall.backgroundColor = color 132 | } 133 | 134 | func updateRecurringBallColor(toColor color: UIColor) { 135 | recurringBall.backgroundColor = color 136 | } 137 | } 138 | 139 | -------------------------------------------------------------------------------- /Workmanager/Classes/WorkManager.swift: -------------------------------------------------------------------------------- 1 | import BackgroundTasks 2 | 3 | public class WorkManager { 4 | 5 | // MARK: Properties 6 | 7 | internal let scheduler = WorkScheduler() 8 | internal var scheduledTasks: Set = [] 9 | 10 | // MARK: Initialization 11 | 12 | public static let shared = WorkManager() 13 | private init() {} 14 | 15 | // MARK: Registering 16 | 17 | public func registerTask(withIdentifier identifier: String, onTrigger: @escaping (BGTask) -> ()) { 18 | BGTaskScheduler.shared.register(forTaskWithIdentifier: identifier, using: nil) { task in 19 | onTrigger(task) 20 | } 21 | } 22 | 23 | // MARK: Scheduling 24 | 25 | public func scheduleOneOffTask(withIdentifier identifier: String, 26 | name: String, 27 | initialDelay: TimeInterval = 0.0, 28 | backoffPolicyDelay: TimeInterval = 900.0, 29 | tag: String? = nil, 30 | existingWorkPolicy: ExistingWorkPolicy? = nil, 31 | constraints: [Constraints]? = nil, 32 | backoffPolicy: BackoffPolicy? = nil, 33 | inputData: String? = nil) throws { 34 | try createTask(withIdentifier: identifier, name: name, frequency: nil, initialDelay: initialDelay, backoffPolicyDelay: backoffPolicyDelay, tag: tag, existingWorkPolicy: existingWorkPolicy, constraints: constraints, backoffPolicy: backoffPolicy, inputData: inputData) 35 | } 36 | 37 | public func schedulePeriodicTask(withIdentifier identifier: String, 38 | name: String, 39 | frequency: TimeInterval, 40 | initialDelay: TimeInterval = 0.0, 41 | backoffPolicyDelay: TimeInterval = 900.0, 42 | tag: String? = nil, 43 | existingWorkPolicy: ExistingWorkPolicy? = nil, 44 | constraints: [Constraints]? = nil, 45 | backoffPolicy: BackoffPolicy? = nil, 46 | inputData: String? = nil) throws { 47 | try createTask(withIdentifier: identifier, name: name, frequency: frequency, initialDelay: initialDelay, backoffPolicyDelay: backoffPolicyDelay, tag: tag, existingWorkPolicy: existingWorkPolicy, constraints: constraints, backoffPolicy: backoffPolicy, inputData: inputData) 48 | } 49 | 50 | // MARK: Callbacks 51 | 52 | public func taskDidFinish(_ task: BGTask, success: Bool) throws { 53 | task.setTaskCompleted(success: success) 54 | 55 | guard let scheduledTask = getScheduledTask(forCompletedTask: task) else { 56 | return 57 | } 58 | 59 | guard success else { 60 | try handleError(withScheduledTask: scheduledTask) 61 | return 62 | } 63 | 64 | try handleSuccess(withScheduledTask: scheduledTask) 65 | } 66 | 67 | // MARK: Success handlers 68 | 69 | private func handleSuccess(withScheduledTask scheduledTask: ScheduledTask) throws { 70 | if scheduledTask.task.isPeriodic { 71 | try handlePeriodicTaskSuccess(withScheduledTask: scheduledTask) 72 | } else { 73 | removeScheduledTask(scheduledTask) 74 | } 75 | } 76 | 77 | private func handlePeriodicTaskSuccess(withScheduledTask scheduledTask: ScheduledTask) throws { 78 | let previousTask = scheduledTask.task 79 | try createTask(withIdentifier: previousTask.identifier, 80 | name: previousTask.name, 81 | frequency: previousTask.frequency, 82 | initialDelay: previousTask.frequency!, 83 | backoffPolicyDelay: previousTask.backoffPolicyDelay, 84 | tag: previousTask.tag, 85 | existingWorkPolicy: previousTask.existingWorkPolicy, 86 | constraints: previousTask.constraints, 87 | backoffPolicy: previousTask.backoffPolicy, 88 | inputData: previousTask.inputData) 89 | } 90 | 91 | // MARK: Error handlers 92 | 93 | private func handleError(withScheduledTask scheduledTask: ScheduledTask) throws { 94 | let previousTask = scheduledTask.task 95 | 96 | guard let backoffPolicy = previousTask.backoffPolicy else { return } 97 | 98 | var newTask = previousTask 99 | var delay = 0.0 100 | 101 | switch backoffPolicy { 102 | case .linear: 103 | delay = previousTask.initialDelay + previousTask.backoffPolicyDelay 104 | case .exponential: 105 | if previousTask.initialDelay == 0.0 { 106 | delay = previousTask.backoffPolicyDelay 107 | } else { 108 | delay = pow(previousTask.initialDelay, 2) 109 | } 110 | } 111 | 112 | newTask.initialDelay = delay 113 | 114 | try createTask(withIdentifier: newTask.identifier, 115 | name: newTask.name, 116 | frequency: newTask.frequency, 117 | initialDelay: newTask.frequency!, 118 | backoffPolicyDelay: newTask.backoffPolicyDelay, 119 | tag: newTask.tag, 120 | existingWorkPolicy: newTask.existingWorkPolicy, 121 | constraints: newTask.constraints, 122 | backoffPolicy: newTask.backoffPolicy, 123 | inputData: newTask.inputData) 124 | } 125 | } 126 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-Workmanager_Example/Pods-Workmanager_Example-frameworks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | set -u 4 | set -o pipefail 5 | 6 | function on_error { 7 | echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" 8 | } 9 | trap 'on_error $LINENO' ERR 10 | 11 | if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then 12 | # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy 13 | # frameworks to, so exit 0 (signalling the script phase was successful). 14 | exit 0 15 | fi 16 | 17 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 18 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 19 | 20 | COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" 21 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" 22 | 23 | # Used as a return value for each invocation of `strip_invalid_archs` function. 24 | STRIP_BINARY_RETVAL=0 25 | 26 | # This protects against multiple targets copying the same framework dependency at the same time. The solution 27 | # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html 28 | RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") 29 | 30 | # Copies and strips a vendored framework 31 | install_framework() 32 | { 33 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then 34 | local source="${BUILT_PRODUCTS_DIR}/$1" 35 | elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then 36 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" 37 | elif [ -r "$1" ]; then 38 | local source="$1" 39 | fi 40 | 41 | local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 42 | 43 | if [ -L "${source}" ]; then 44 | echo "Symlinked..." 45 | source="$(readlink "${source}")" 46 | fi 47 | 48 | # Use filter instead of exclude so missing patterns don't throw errors. 49 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" 50 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" 51 | 52 | local basename 53 | basename="$(basename -s .framework "$1")" 54 | binary="${destination}/${basename}.framework/${basename}" 55 | 56 | if ! [ -r "$binary" ]; then 57 | binary="${destination}/${basename}" 58 | elif [ -L "${binary}" ]; then 59 | echo "Destination binary is symlinked..." 60 | dirname="$(dirname "${binary}")" 61 | binary="${dirname}/$(readlink "${binary}")" 62 | fi 63 | 64 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 65 | if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then 66 | strip_invalid_archs "$binary" 67 | fi 68 | 69 | # Resign the code if required by the build settings to avoid unstable apps 70 | code_sign_if_enabled "${destination}/$(basename "$1")" 71 | 72 | # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. 73 | if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then 74 | local swift_runtime_libs 75 | swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u) 76 | for lib in $swift_runtime_libs; do 77 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" 78 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" 79 | code_sign_if_enabled "${destination}/${lib}" 80 | done 81 | fi 82 | } 83 | 84 | # Copies and strips a vendored dSYM 85 | install_dsym() { 86 | local source="$1" 87 | if [ -r "$source" ]; then 88 | # Copy the dSYM into a the targets temp dir. 89 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" 90 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" 91 | 92 | local basename 93 | basename="$(basename -s .framework.dSYM "$source")" 94 | binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" 95 | 96 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 97 | if [[ "$(file "$binary")" == *"Mach-O "*"dSYM companion"* ]]; then 98 | strip_invalid_archs "$binary" 99 | fi 100 | 101 | if [[ $STRIP_BINARY_RETVAL == 1 ]]; then 102 | # Move the stripped file into its final destination. 103 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" 104 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" 105 | else 106 | # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. 107 | touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" 108 | fi 109 | fi 110 | } 111 | 112 | # Copies the bcsymbolmap files of a vendored framework 113 | install_bcsymbolmap() { 114 | local bcsymbolmap_path="$1" 115 | local destination="${BUILT_PRODUCTS_DIR}" 116 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"" 117 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}" 118 | } 119 | 120 | # Signs a framework with the provided identity 121 | code_sign_if_enabled() { 122 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then 123 | # Use the current code_sign_identity 124 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" 125 | local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" 126 | 127 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 128 | code_sign_cmd="$code_sign_cmd &" 129 | fi 130 | echo "$code_sign_cmd" 131 | eval "$code_sign_cmd" 132 | fi 133 | } 134 | 135 | # Strip invalid architectures 136 | strip_invalid_archs() { 137 | binary="$1" 138 | # Get architectures for current target binary 139 | binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" 140 | # Intersect them with the architectures we are building for 141 | intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" 142 | # If there are no archs supported by this binary then warn the user 143 | if [[ -z "$intersected_archs" ]]; then 144 | echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." 145 | STRIP_BINARY_RETVAL=0 146 | return 147 | fi 148 | stripped="" 149 | for arch in $binary_archs; do 150 | if ! [[ "${ARCHS}" == *"$arch"* ]]; then 151 | # Strip non-valid architectures in-place 152 | lipo -remove "$arch" -output "$binary" "$binary" 153 | stripped="$stripped $arch" 154 | fi 155 | done 156 | if [[ "$stripped" ]]; then 157 | echo "Stripped $binary of architectures:$stripped" 158 | fi 159 | STRIP_BINARY_RETVAL=1 160 | } 161 | 162 | 163 | if [[ "$CONFIGURATION" == "Debug" ]]; then 164 | install_framework "${BUILT_PRODUCTS_DIR}/Workmanager/Workmanager.framework" 165 | fi 166 | if [[ "$CONFIGURATION" == "Release" ]]; then 167 | install_framework "${BUILT_PRODUCTS_DIR}/Workmanager/Workmanager.framework" 168 | fi 169 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 170 | wait 171 | fi 172 | -------------------------------------------------------------------------------- /Example/Workmanager.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 13AC6BB2236B145300238CAA /* ColorGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13AC6BB1236B145300238CAA /* ColorGenerator.swift */; }; 11 | 607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACD51AFB9204008FA782 /* AppDelegate.swift */; }; 12 | 607FACD81AFB9204008FA782 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACD71AFB9204008FA782 /* ViewController.swift */; }; 13 | 607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDC1AFB9204008FA782 /* Images.xcassets */; }; 14 | 607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */; }; 15 | 607FACEC1AFB9204008FA782 /* Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACEB1AFB9204008FA782 /* Tests.swift */; }; 16 | A847F89E02C6EEE18B861613 /* Pods_Workmanager_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 38C7EC86D550CC54F556B256 /* Pods_Workmanager_Example.framework */; }; 17 | E5FFAC7EC5E25E602BC71844 /* Pods_Workmanager_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3513667BE4C3863339FC24EA /* Pods_Workmanager_Tests.framework */; }; 18 | /* End PBXBuildFile section */ 19 | 20 | /* Begin PBXContainerItemProxy section */ 21 | 607FACE61AFB9204008FA782 /* PBXContainerItemProxy */ = { 22 | isa = PBXContainerItemProxy; 23 | containerPortal = 607FACC81AFB9204008FA782 /* Project object */; 24 | proxyType = 1; 25 | remoteGlobalIDString = 607FACCF1AFB9204008FA782; 26 | remoteInfo = Workmanager; 27 | }; 28 | /* End PBXContainerItemProxy section */ 29 | 30 | /* Begin PBXFileReference section */ 31 | 13AC6BB1236B145300238CAA /* ColorGenerator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColorGenerator.swift; sourceTree = ""; }; 32 | 14842AB762C2C3C44B36EC0C /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; 33 | 3513667BE4C3863339FC24EA /* Pods_Workmanager_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Workmanager_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 34 | 38C7EC86D550CC54F556B256 /* Pods_Workmanager_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Workmanager_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 35 | 607FACD01AFB9204008FA782 /* Workmanager_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Workmanager_Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; 36 | 607FACD41AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 37 | 607FACD51AFB9204008FA782 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 38 | 607FACD71AFB9204008FA782 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; 39 | 607FACDC1AFB9204008FA782 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 40 | 607FACDF1AFB9204008FA782 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; 41 | 607FACE51AFB9204008FA782 /* Workmanager_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Workmanager_Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 42 | 607FACEA1AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 43 | 607FACEB1AFB9204008FA782 /* Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests.swift; sourceTree = ""; }; 44 | 63EDBFFD908F416ADD6C993F /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = ""; }; 45 | 6696A1223880543924A5A1CB /* Workmanager.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = Workmanager.podspec; path = ../Workmanager.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 46 | 9178B062DED5866E639BB76C /* Pods-Workmanager_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Workmanager_Tests.debug.xcconfig"; path = "Target Support Files/Pods-Workmanager_Tests/Pods-Workmanager_Tests.debug.xcconfig"; sourceTree = ""; }; 47 | BD4E1E4009BDDDF3A6342606 /* Pods-Workmanager_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Workmanager_Example.debug.xcconfig"; path = "Target Support Files/Pods-Workmanager_Example/Pods-Workmanager_Example.debug.xcconfig"; sourceTree = ""; }; 48 | C2F6CE74E121E55F088ECD90 /* Pods-Workmanager_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Workmanager_Tests.release.xcconfig"; path = "Target Support Files/Pods-Workmanager_Tests/Pods-Workmanager_Tests.release.xcconfig"; sourceTree = ""; }; 49 | F83AFE876118DD956613A409 /* Pods-Workmanager_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Workmanager_Example.release.xcconfig"; path = "Target Support Files/Pods-Workmanager_Example/Pods-Workmanager_Example.release.xcconfig"; sourceTree = ""; }; 50 | /* End PBXFileReference section */ 51 | 52 | /* Begin PBXFrameworksBuildPhase section */ 53 | 607FACCD1AFB9204008FA782 /* Frameworks */ = { 54 | isa = PBXFrameworksBuildPhase; 55 | buildActionMask = 2147483647; 56 | files = ( 57 | A847F89E02C6EEE18B861613 /* Pods_Workmanager_Example.framework in Frameworks */, 58 | ); 59 | runOnlyForDeploymentPostprocessing = 0; 60 | }; 61 | 607FACE21AFB9204008FA782 /* Frameworks */ = { 62 | isa = PBXFrameworksBuildPhase; 63 | buildActionMask = 2147483647; 64 | files = ( 65 | E5FFAC7EC5E25E602BC71844 /* Pods_Workmanager_Tests.framework in Frameworks */, 66 | ); 67 | runOnlyForDeploymentPostprocessing = 0; 68 | }; 69 | /* End PBXFrameworksBuildPhase section */ 70 | 71 | /* Begin PBXGroup section */ 72 | 13AC6BB0236B141B00238CAA /* ColorGenerator */ = { 73 | isa = PBXGroup; 74 | children = ( 75 | 13AC6BB1236B145300238CAA /* ColorGenerator.swift */, 76 | ); 77 | path = ColorGenerator; 78 | sourceTree = ""; 79 | }; 80 | 607FACC71AFB9204008FA782 = { 81 | isa = PBXGroup; 82 | children = ( 83 | 607FACF51AFB993E008FA782 /* Podspec Metadata */, 84 | 607FACD21AFB9204008FA782 /* Example for Workmanager */, 85 | 607FACE81AFB9204008FA782 /* Tests */, 86 | 607FACD11AFB9204008FA782 /* Products */, 87 | 83F139BBFCC05B2A618DD64A /* Pods */, 88 | B87F2E42145A271AB75FD55F /* Frameworks */, 89 | ); 90 | sourceTree = ""; 91 | }; 92 | 607FACD11AFB9204008FA782 /* Products */ = { 93 | isa = PBXGroup; 94 | children = ( 95 | 607FACD01AFB9204008FA782 /* Workmanager_Example.app */, 96 | 607FACE51AFB9204008FA782 /* Workmanager_Tests.xctest */, 97 | ); 98 | name = Products; 99 | sourceTree = ""; 100 | }; 101 | 607FACD21AFB9204008FA782 /* Example for Workmanager */ = { 102 | isa = PBXGroup; 103 | children = ( 104 | 13AC6BB0236B141B00238CAA /* ColorGenerator */, 105 | 607FACD51AFB9204008FA782 /* AppDelegate.swift */, 106 | 607FACD71AFB9204008FA782 /* ViewController.swift */, 107 | 607FACDC1AFB9204008FA782 /* Images.xcassets */, 108 | 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */, 109 | 607FACD31AFB9204008FA782 /* Supporting Files */, 110 | ); 111 | name = "Example for Workmanager"; 112 | path = Workmanager; 113 | sourceTree = ""; 114 | }; 115 | 607FACD31AFB9204008FA782 /* Supporting Files */ = { 116 | isa = PBXGroup; 117 | children = ( 118 | 607FACD41AFB9204008FA782 /* Info.plist */, 119 | ); 120 | name = "Supporting Files"; 121 | sourceTree = ""; 122 | }; 123 | 607FACE81AFB9204008FA782 /* Tests */ = { 124 | isa = PBXGroup; 125 | children = ( 126 | 607FACEB1AFB9204008FA782 /* Tests.swift */, 127 | 607FACE91AFB9204008FA782 /* Supporting Files */, 128 | ); 129 | path = Tests; 130 | sourceTree = ""; 131 | }; 132 | 607FACE91AFB9204008FA782 /* Supporting Files */ = { 133 | isa = PBXGroup; 134 | children = ( 135 | 607FACEA1AFB9204008FA782 /* Info.plist */, 136 | ); 137 | name = "Supporting Files"; 138 | sourceTree = ""; 139 | }; 140 | 607FACF51AFB993E008FA782 /* Podspec Metadata */ = { 141 | isa = PBXGroup; 142 | children = ( 143 | 6696A1223880543924A5A1CB /* Workmanager.podspec */, 144 | 14842AB762C2C3C44B36EC0C /* README.md */, 145 | 63EDBFFD908F416ADD6C993F /* LICENSE */, 146 | ); 147 | name = "Podspec Metadata"; 148 | sourceTree = ""; 149 | }; 150 | 83F139BBFCC05B2A618DD64A /* Pods */ = { 151 | isa = PBXGroup; 152 | children = ( 153 | BD4E1E4009BDDDF3A6342606 /* Pods-Workmanager_Example.debug.xcconfig */, 154 | F83AFE876118DD956613A409 /* Pods-Workmanager_Example.release.xcconfig */, 155 | 9178B062DED5866E639BB76C /* Pods-Workmanager_Tests.debug.xcconfig */, 156 | C2F6CE74E121E55F088ECD90 /* Pods-Workmanager_Tests.release.xcconfig */, 157 | ); 158 | path = Pods; 159 | sourceTree = ""; 160 | }; 161 | B87F2E42145A271AB75FD55F /* Frameworks */ = { 162 | isa = PBXGroup; 163 | children = ( 164 | 38C7EC86D550CC54F556B256 /* Pods_Workmanager_Example.framework */, 165 | 3513667BE4C3863339FC24EA /* Pods_Workmanager_Tests.framework */, 166 | ); 167 | name = Frameworks; 168 | sourceTree = ""; 169 | }; 170 | /* End PBXGroup section */ 171 | 172 | /* Begin PBXNativeTarget section */ 173 | 607FACCF1AFB9204008FA782 /* Workmanager_Example */ = { 174 | isa = PBXNativeTarget; 175 | buildConfigurationList = 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "Workmanager_Example" */; 176 | buildPhases = ( 177 | 7000B09A8A62ACD825C13045 /* [CP] Check Pods Manifest.lock */, 178 | 607FACCC1AFB9204008FA782 /* Sources */, 179 | 607FACCD1AFB9204008FA782 /* Frameworks */, 180 | 607FACCE1AFB9204008FA782 /* Resources */, 181 | 2FCFC6EEC799590DA1C1046D /* [CP] Embed Pods Frameworks */, 182 | ); 183 | buildRules = ( 184 | ); 185 | dependencies = ( 186 | ); 187 | name = Workmanager_Example; 188 | productName = Workmanager; 189 | productReference = 607FACD01AFB9204008FA782 /* Workmanager_Example.app */; 190 | productType = "com.apple.product-type.application"; 191 | }; 192 | 607FACE41AFB9204008FA782 /* Workmanager_Tests */ = { 193 | isa = PBXNativeTarget; 194 | buildConfigurationList = 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "Workmanager_Tests" */; 195 | buildPhases = ( 196 | FFCA02B1171B080EBD17D090 /* [CP] Check Pods Manifest.lock */, 197 | 607FACE11AFB9204008FA782 /* Sources */, 198 | 607FACE21AFB9204008FA782 /* Frameworks */, 199 | 607FACE31AFB9204008FA782 /* Resources */, 200 | ); 201 | buildRules = ( 202 | ); 203 | dependencies = ( 204 | 607FACE71AFB9204008FA782 /* PBXTargetDependency */, 205 | ); 206 | name = Workmanager_Tests; 207 | productName = Tests; 208 | productReference = 607FACE51AFB9204008FA782 /* Workmanager_Tests.xctest */; 209 | productType = "com.apple.product-type.bundle.unit-test"; 210 | }; 211 | /* End PBXNativeTarget section */ 212 | 213 | /* Begin PBXProject section */ 214 | 607FACC81AFB9204008FA782 /* Project object */ = { 215 | isa = PBXProject; 216 | attributes = { 217 | LastSwiftUpdateCheck = 0830; 218 | LastUpgradeCheck = 1110; 219 | ORGANIZATIONNAME = CocoaPods; 220 | TargetAttributes = { 221 | 607FACCF1AFB9204008FA782 = { 222 | CreatedOnToolsVersion = 6.3.1; 223 | DevelopmentTeam = 68TWXGZU44; 224 | LastSwiftMigration = 1110; 225 | }; 226 | 607FACE41AFB9204008FA782 = { 227 | CreatedOnToolsVersion = 6.3.1; 228 | DevelopmentTeam = 68TWXGZU44; 229 | LastSwiftMigration = 1110; 230 | TestTargetID = 607FACCF1AFB9204008FA782; 231 | }; 232 | }; 233 | }; 234 | buildConfigurationList = 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "Workmanager" */; 235 | compatibilityVersion = "Xcode 3.2"; 236 | developmentRegion = en; 237 | hasScannedForEncodings = 0; 238 | knownRegions = ( 239 | en, 240 | Base, 241 | ); 242 | mainGroup = 607FACC71AFB9204008FA782; 243 | productRefGroup = 607FACD11AFB9204008FA782 /* Products */; 244 | projectDirPath = ""; 245 | projectRoot = ""; 246 | targets = ( 247 | 607FACCF1AFB9204008FA782 /* Workmanager_Example */, 248 | 607FACE41AFB9204008FA782 /* Workmanager_Tests */, 249 | ); 250 | }; 251 | /* End PBXProject section */ 252 | 253 | /* Begin PBXResourcesBuildPhase section */ 254 | 607FACCE1AFB9204008FA782 /* Resources */ = { 255 | isa = PBXResourcesBuildPhase; 256 | buildActionMask = 2147483647; 257 | files = ( 258 | 607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */, 259 | 607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */, 260 | ); 261 | runOnlyForDeploymentPostprocessing = 0; 262 | }; 263 | 607FACE31AFB9204008FA782 /* Resources */ = { 264 | isa = PBXResourcesBuildPhase; 265 | buildActionMask = 2147483647; 266 | files = ( 267 | ); 268 | runOnlyForDeploymentPostprocessing = 0; 269 | }; 270 | /* End PBXResourcesBuildPhase section */ 271 | 272 | /* Begin PBXShellScriptBuildPhase section */ 273 | 2FCFC6EEC799590DA1C1046D /* [CP] Embed Pods Frameworks */ = { 274 | isa = PBXShellScriptBuildPhase; 275 | buildActionMask = 2147483647; 276 | files = ( 277 | ); 278 | inputPaths = ( 279 | "${PODS_ROOT}/Target Support Files/Pods-Workmanager_Example/Pods-Workmanager_Example-frameworks.sh", 280 | "${BUILT_PRODUCTS_DIR}/Workmanager/Workmanager.framework", 281 | ); 282 | name = "[CP] Embed Pods Frameworks"; 283 | outputPaths = ( 284 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Workmanager.framework", 285 | ); 286 | runOnlyForDeploymentPostprocessing = 0; 287 | shellPath = /bin/sh; 288 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Workmanager_Example/Pods-Workmanager_Example-frameworks.sh\"\n"; 289 | showEnvVarsInLog = 0; 290 | }; 291 | 7000B09A8A62ACD825C13045 /* [CP] Check Pods Manifest.lock */ = { 292 | isa = PBXShellScriptBuildPhase; 293 | buildActionMask = 2147483647; 294 | files = ( 295 | ); 296 | inputFileListPaths = ( 297 | ); 298 | inputPaths = ( 299 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 300 | "${PODS_ROOT}/Manifest.lock", 301 | ); 302 | name = "[CP] Check Pods Manifest.lock"; 303 | outputFileListPaths = ( 304 | ); 305 | outputPaths = ( 306 | "$(DERIVED_FILE_DIR)/Pods-Workmanager_Example-checkManifestLockResult.txt", 307 | ); 308 | runOnlyForDeploymentPostprocessing = 0; 309 | shellPath = /bin/sh; 310 | 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"; 311 | showEnvVarsInLog = 0; 312 | }; 313 | FFCA02B1171B080EBD17D090 /* [CP] Check Pods Manifest.lock */ = { 314 | isa = PBXShellScriptBuildPhase; 315 | buildActionMask = 2147483647; 316 | files = ( 317 | ); 318 | inputFileListPaths = ( 319 | ); 320 | inputPaths = ( 321 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 322 | "${PODS_ROOT}/Manifest.lock", 323 | ); 324 | name = "[CP] Check Pods Manifest.lock"; 325 | outputFileListPaths = ( 326 | ); 327 | outputPaths = ( 328 | "$(DERIVED_FILE_DIR)/Pods-Workmanager_Tests-checkManifestLockResult.txt", 329 | ); 330 | runOnlyForDeploymentPostprocessing = 0; 331 | shellPath = /bin/sh; 332 | 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"; 333 | showEnvVarsInLog = 0; 334 | }; 335 | /* End PBXShellScriptBuildPhase section */ 336 | 337 | /* Begin PBXSourcesBuildPhase section */ 338 | 607FACCC1AFB9204008FA782 /* Sources */ = { 339 | isa = PBXSourcesBuildPhase; 340 | buildActionMask = 2147483647; 341 | files = ( 342 | 13AC6BB2236B145300238CAA /* ColorGenerator.swift in Sources */, 343 | 607FACD81AFB9204008FA782 /* ViewController.swift in Sources */, 344 | 607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */, 345 | ); 346 | runOnlyForDeploymentPostprocessing = 0; 347 | }; 348 | 607FACE11AFB9204008FA782 /* Sources */ = { 349 | isa = PBXSourcesBuildPhase; 350 | buildActionMask = 2147483647; 351 | files = ( 352 | 607FACEC1AFB9204008FA782 /* Tests.swift in Sources */, 353 | ); 354 | runOnlyForDeploymentPostprocessing = 0; 355 | }; 356 | /* End PBXSourcesBuildPhase section */ 357 | 358 | /* Begin PBXTargetDependency section */ 359 | 607FACE71AFB9204008FA782 /* PBXTargetDependency */ = { 360 | isa = PBXTargetDependency; 361 | target = 607FACCF1AFB9204008FA782 /* Workmanager_Example */; 362 | targetProxy = 607FACE61AFB9204008FA782 /* PBXContainerItemProxy */; 363 | }; 364 | /* End PBXTargetDependency section */ 365 | 366 | /* Begin PBXVariantGroup section */ 367 | 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */ = { 368 | isa = PBXVariantGroup; 369 | children = ( 370 | 607FACDF1AFB9204008FA782 /* Base */, 371 | ); 372 | name = LaunchScreen.xib; 373 | sourceTree = ""; 374 | }; 375 | /* End PBXVariantGroup section */ 376 | 377 | /* Begin XCBuildConfiguration section */ 378 | 607FACED1AFB9204008FA782 /* Debug */ = { 379 | isa = XCBuildConfiguration; 380 | buildSettings = { 381 | ALWAYS_SEARCH_USER_PATHS = NO; 382 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 383 | CLANG_CXX_LIBRARY = "libc++"; 384 | CLANG_ENABLE_MODULES = YES; 385 | CLANG_ENABLE_OBJC_ARC = YES; 386 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 387 | CLANG_WARN_BOOL_CONVERSION = YES; 388 | CLANG_WARN_COMMA = YES; 389 | CLANG_WARN_CONSTANT_CONVERSION = YES; 390 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 391 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 392 | CLANG_WARN_EMPTY_BODY = YES; 393 | CLANG_WARN_ENUM_CONVERSION = YES; 394 | CLANG_WARN_INFINITE_RECURSION = YES; 395 | CLANG_WARN_INT_CONVERSION = YES; 396 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 397 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 398 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 399 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 400 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 401 | CLANG_WARN_STRICT_PROTOTYPES = YES; 402 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 403 | CLANG_WARN_UNREACHABLE_CODE = YES; 404 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 405 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 406 | COPY_PHASE_STRIP = NO; 407 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 408 | ENABLE_STRICT_OBJC_MSGSEND = YES; 409 | ENABLE_TESTABILITY = YES; 410 | GCC_C_LANGUAGE_STANDARD = gnu99; 411 | GCC_DYNAMIC_NO_PIC = NO; 412 | GCC_NO_COMMON_BLOCKS = YES; 413 | GCC_OPTIMIZATION_LEVEL = 0; 414 | GCC_PREPROCESSOR_DEFINITIONS = ( 415 | "DEBUG=1", 416 | "$(inherited)", 417 | ); 418 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 419 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 420 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 421 | GCC_WARN_UNDECLARED_SELECTOR = YES; 422 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 423 | GCC_WARN_UNUSED_FUNCTION = YES; 424 | GCC_WARN_UNUSED_VARIABLE = YES; 425 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 426 | MTL_ENABLE_DEBUG_INFO = YES; 427 | ONLY_ACTIVE_ARCH = YES; 428 | SDKROOT = iphoneos; 429 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 430 | }; 431 | name = Debug; 432 | }; 433 | 607FACEE1AFB9204008FA782 /* Release */ = { 434 | isa = XCBuildConfiguration; 435 | buildSettings = { 436 | ALWAYS_SEARCH_USER_PATHS = NO; 437 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 438 | CLANG_CXX_LIBRARY = "libc++"; 439 | CLANG_ENABLE_MODULES = YES; 440 | CLANG_ENABLE_OBJC_ARC = YES; 441 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 442 | CLANG_WARN_BOOL_CONVERSION = YES; 443 | CLANG_WARN_COMMA = YES; 444 | CLANG_WARN_CONSTANT_CONVERSION = YES; 445 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 446 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 447 | CLANG_WARN_EMPTY_BODY = YES; 448 | CLANG_WARN_ENUM_CONVERSION = YES; 449 | CLANG_WARN_INFINITE_RECURSION = YES; 450 | CLANG_WARN_INT_CONVERSION = YES; 451 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 452 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 453 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 454 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 455 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 456 | CLANG_WARN_STRICT_PROTOTYPES = YES; 457 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 458 | CLANG_WARN_UNREACHABLE_CODE = YES; 459 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 460 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 461 | COPY_PHASE_STRIP = NO; 462 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 463 | ENABLE_NS_ASSERTIONS = NO; 464 | ENABLE_STRICT_OBJC_MSGSEND = YES; 465 | GCC_C_LANGUAGE_STANDARD = gnu99; 466 | GCC_NO_COMMON_BLOCKS = YES; 467 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 468 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 469 | GCC_WARN_UNDECLARED_SELECTOR = YES; 470 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 471 | GCC_WARN_UNUSED_FUNCTION = YES; 472 | GCC_WARN_UNUSED_VARIABLE = YES; 473 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 474 | MTL_ENABLE_DEBUG_INFO = NO; 475 | SDKROOT = iphoneos; 476 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 477 | VALIDATE_PRODUCT = YES; 478 | }; 479 | name = Release; 480 | }; 481 | 607FACF01AFB9204008FA782 /* Debug */ = { 482 | isa = XCBuildConfiguration; 483 | baseConfigurationReference = BD4E1E4009BDDDF3A6342606 /* Pods-Workmanager_Example.debug.xcconfig */; 484 | buildSettings = { 485 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 486 | DEVELOPMENT_TEAM = 68TWXGZU44; 487 | INFOPLIST_FILE = Workmanager/Info.plist; 488 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 489 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 490 | MODULE_NAME = ExampleApp; 491 | PRODUCT_BUNDLE_IDENTIFIER = "be.vrt.ios-workmanager"; 492 | PRODUCT_NAME = "$(TARGET_NAME)"; 493 | SWIFT_SWIFT3_OBJC_INFERENCE = Default; 494 | SWIFT_VERSION = 5.0; 495 | TARGETED_DEVICE_FAMILY = 1; 496 | }; 497 | name = Debug; 498 | }; 499 | 607FACF11AFB9204008FA782 /* Release */ = { 500 | isa = XCBuildConfiguration; 501 | baseConfigurationReference = F83AFE876118DD956613A409 /* Pods-Workmanager_Example.release.xcconfig */; 502 | buildSettings = { 503 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 504 | DEVELOPMENT_TEAM = 68TWXGZU44; 505 | INFOPLIST_FILE = Workmanager/Info.plist; 506 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 507 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 508 | MODULE_NAME = ExampleApp; 509 | PRODUCT_BUNDLE_IDENTIFIER = "be.vrt.ios-workmanager"; 510 | PRODUCT_NAME = "$(TARGET_NAME)"; 511 | SWIFT_SWIFT3_OBJC_INFERENCE = Default; 512 | SWIFT_VERSION = 5.0; 513 | TARGETED_DEVICE_FAMILY = 1; 514 | }; 515 | name = Release; 516 | }; 517 | 607FACF31AFB9204008FA782 /* Debug */ = { 518 | isa = XCBuildConfiguration; 519 | baseConfigurationReference = 9178B062DED5866E639BB76C /* Pods-Workmanager_Tests.debug.xcconfig */; 520 | buildSettings = { 521 | DEVELOPMENT_TEAM = 68TWXGZU44; 522 | FRAMEWORK_SEARCH_PATHS = ( 523 | "$(PLATFORM_DIR)/Developer/Library/Frameworks", 524 | "$(inherited)", 525 | ); 526 | GCC_PREPROCESSOR_DEFINITIONS = ( 527 | "DEBUG=1", 528 | "$(inherited)", 529 | ); 530 | INFOPLIST_FILE = Tests/Info.plist; 531 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 532 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; 533 | PRODUCT_NAME = "$(TARGET_NAME)"; 534 | SWIFT_SWIFT3_OBJC_INFERENCE = Default; 535 | SWIFT_VERSION = 5.0; 536 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Workmanager_Example.app/Workmanager_Example"; 537 | }; 538 | name = Debug; 539 | }; 540 | 607FACF41AFB9204008FA782 /* Release */ = { 541 | isa = XCBuildConfiguration; 542 | baseConfigurationReference = C2F6CE74E121E55F088ECD90 /* Pods-Workmanager_Tests.release.xcconfig */; 543 | buildSettings = { 544 | DEVELOPMENT_TEAM = 68TWXGZU44; 545 | FRAMEWORK_SEARCH_PATHS = ( 546 | "$(PLATFORM_DIR)/Developer/Library/Frameworks", 547 | "$(inherited)", 548 | ); 549 | INFOPLIST_FILE = Tests/Info.plist; 550 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 551 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; 552 | PRODUCT_NAME = "$(TARGET_NAME)"; 553 | SWIFT_SWIFT3_OBJC_INFERENCE = Default; 554 | SWIFT_VERSION = 5.0; 555 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Workmanager_Example.app/Workmanager_Example"; 556 | }; 557 | name = Release; 558 | }; 559 | /* End XCBuildConfiguration section */ 560 | 561 | /* Begin XCConfigurationList section */ 562 | 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "Workmanager" */ = { 563 | isa = XCConfigurationList; 564 | buildConfigurations = ( 565 | 607FACED1AFB9204008FA782 /* Debug */, 566 | 607FACEE1AFB9204008FA782 /* Release */, 567 | ); 568 | defaultConfigurationIsVisible = 0; 569 | defaultConfigurationName = Release; 570 | }; 571 | 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "Workmanager_Example" */ = { 572 | isa = XCConfigurationList; 573 | buildConfigurations = ( 574 | 607FACF01AFB9204008FA782 /* Debug */, 575 | 607FACF11AFB9204008FA782 /* Release */, 576 | ); 577 | defaultConfigurationIsVisible = 0; 578 | defaultConfigurationName = Release; 579 | }; 580 | 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "Workmanager_Tests" */ = { 581 | isa = XCConfigurationList; 582 | buildConfigurations = ( 583 | 607FACF31AFB9204008FA782 /* Debug */, 584 | 607FACF41AFB9204008FA782 /* Release */, 585 | ); 586 | defaultConfigurationIsVisible = 0; 587 | defaultConfigurationName = Release; 588 | }; 589 | /* End XCConfigurationList section */ 590 | }; 591 | rootObject = 607FACC81AFB9204008FA782 /* Project object */; 592 | } 593 | -------------------------------------------------------------------------------- /Example/Pods/Pods.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 13538259237BFEDB006CEAE2 /* WorkManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1353824A237BFEDA006CEAE2 /* WorkManager.swift */; }; 11 | 1353825A237BFEDB006CEAE2 /* WorkManager+Cancel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1353824B237BFEDA006CEAE2 /* WorkManager+Cancel.swift */; }; 12 | 1353825B237BFEDB006CEAE2 /* WorkManager+CRUD.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1353824C237BFEDA006CEAE2 /* WorkManager+CRUD.swift */; }; 13 | 1353825C237BFEDB006CEAE2 /* ProcessingTaskBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1353824E237BFEDA006CEAE2 /* ProcessingTaskBuilder.swift */; }; 14 | 1353825D237BFEDB006CEAE2 /* ExistingWorkPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13538251237BFEDB006CEAE2 /* ExistingWorkPolicy.swift */; }; 15 | 1353825E237BFEDB006CEAE2 /* Constraints.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13538252237BFEDB006CEAE2 /* Constraints.swift */; }; 16 | 1353825F237BFEDB006CEAE2 /* BackoffPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13538253237BFEDB006CEAE2 /* BackoffPolicy.swift */; }; 17 | 13538260237BFEDB006CEAE2 /* TaskRepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13538254237BFEDB006CEAE2 /* TaskRepresentable.swift */; }; 18 | 13538261237BFEDB006CEAE2 /* ScheduledTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13538255237BFEDB006CEAE2 /* ScheduledTask.swift */; }; 19 | 13538262237BFEDB006CEAE2 /* Task.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13538256237BFEDB006CEAE2 /* Task.swift */; }; 20 | 13538265237C0068006CEAE2 /* WorkScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13538264237C0068006CEAE2 /* WorkScheduler.swift */; }; 21 | 17055299CB2BCF4DFE59203FAD6D634F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */; }; 22 | 5DA26D0DF20A31AA5F87AC5B4F652AA1 /* Pods-Workmanager_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = DDCABB5B5726CC32E3655BAA19457ABB /* Pods-Workmanager_Example-dummy.m */; }; 23 | 693C9856585B1E681D6AC00E82F38E05 /* Pods-Workmanager_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F5A53FC51B4AC92FADB7D5D327C2D381 /* Pods-Workmanager_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 24 | A2529D130B1B7ABBE73C65AB97467FF0 /* Workmanager-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 06FBE001D2066E4E1520583FD8549926 /* Workmanager-dummy.m */; }; 25 | AEEA157AD5C67B58A6D924C32A18771D /* Workmanager-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1803DCDDC687E2791F0A325E50E58808 /* Workmanager-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 26 | BF03D2A32C24B541764308F090D1D7AF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */; }; 27 | C189CBB910F86A0D90987B6AD7907B2A /* Pods-Workmanager_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F028CB97209D18849538ED1508B99AA /* Pods-Workmanager_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 28 | DCCD5B752BFEEB3C6C365C3D62C31850 /* Pods-Workmanager_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 527E8296E52E9A6509D03BCD69D753F8 /* Pods-Workmanager_Tests-dummy.m */; }; 29 | E4FB21B1B72E228F96F8C753ED025947 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */; }; 30 | /* End PBXBuildFile section */ 31 | 32 | /* Begin PBXContainerItemProxy section */ 33 | 1637321E628B3894CC3B7A1C3E65A245 /* PBXContainerItemProxy */ = { 34 | isa = PBXContainerItemProxy; 35 | containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; 36 | proxyType = 1; 37 | remoteGlobalIDString = E7D0698A5B3A43CD21756EBB60C07B73; 38 | remoteInfo = "Pods-Workmanager_Example"; 39 | }; 40 | A6CAFA34002652C6952F2E3777A74CCF /* PBXContainerItemProxy */ = { 41 | isa = PBXContainerItemProxy; 42 | containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; 43 | proxyType = 1; 44 | remoteGlobalIDString = 3ED5DFA0EA27E0A898BDA7205E5B67E2; 45 | remoteInfo = Workmanager; 46 | }; 47 | /* End PBXContainerItemProxy section */ 48 | 49 | /* Begin PBXFileReference section */ 50 | 01437C486AF34D100FF5F0FCAA4D1A8A /* Pods-Workmanager_Tests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Workmanager_Tests-Info.plist"; sourceTree = ""; }; 51 | 056879E99682F1016E9B511592512012 /* Workmanager-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Workmanager-prefix.pch"; sourceTree = ""; }; 52 | 06FBE001D2066E4E1520583FD8549926 /* Workmanager-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Workmanager-dummy.m"; sourceTree = ""; }; 53 | 09B21B5087C1ED2B280320DE08AB58F4 /* Pods-Workmanager_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Workmanager_Example-frameworks.sh"; sourceTree = ""; }; 54 | 0E39D91FE8B9BC1B9574E8D680DD52B0 /* Workmanager.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Workmanager.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 55 | 0F028CB97209D18849538ED1508B99AA /* Pods-Workmanager_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Workmanager_Tests-umbrella.h"; sourceTree = ""; }; 56 | 1353824A237BFEDA006CEAE2 /* WorkManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = WorkManager.swift; path = Workmanager/Classes/WorkManager.swift; sourceTree = ""; }; 57 | 1353824B237BFEDA006CEAE2 /* WorkManager+Cancel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "WorkManager+Cancel.swift"; path = "Workmanager/Classes/WorkManager+Cancel.swift"; sourceTree = ""; }; 58 | 1353824C237BFEDA006CEAE2 /* WorkManager+CRUD.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "WorkManager+CRUD.swift"; path = "Workmanager/Classes/WorkManager+CRUD.swift"; sourceTree = ""; }; 59 | 1353824E237BFEDA006CEAE2 /* ProcessingTaskBuilder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProcessingTaskBuilder.swift; sourceTree = ""; }; 60 | 13538251237BFEDB006CEAE2 /* ExistingWorkPolicy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExistingWorkPolicy.swift; sourceTree = ""; }; 61 | 13538252237BFEDB006CEAE2 /* Constraints.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Constraints.swift; sourceTree = ""; }; 62 | 13538253237BFEDB006CEAE2 /* BackoffPolicy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BackoffPolicy.swift; sourceTree = ""; }; 63 | 13538254237BFEDB006CEAE2 /* TaskRepresentable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TaskRepresentable.swift; sourceTree = ""; }; 64 | 13538255237BFEDB006CEAE2 /* ScheduledTask.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScheduledTask.swift; sourceTree = ""; }; 65 | 13538256237BFEDB006CEAE2 /* Task.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Task.swift; sourceTree = ""; }; 66 | 13538264237C0068006CEAE2 /* WorkScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WorkScheduler.swift; sourceTree = ""; }; 67 | 1803DCDDC687E2791F0A325E50E58808 /* Workmanager-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Workmanager-umbrella.h"; sourceTree = ""; }; 68 | 25CA9B4805FBCE60D3BD9FB4801A5AE4 /* Pods-Workmanager_Example-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Workmanager_Example-Info.plist"; sourceTree = ""; }; 69 | 26743F24A8E9D26DAD5205BB6EC026E8 /* Pods-Workmanager_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Workmanager_Example-acknowledgements.plist"; sourceTree = ""; }; 70 | 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; 71 | 3F5652338EBD6A565B6355585D9BF64F /* Pods-Workmanager_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Workmanager_Example.modulemap"; sourceTree = ""; }; 72 | 527E8296E52E9A6509D03BCD69D753F8 /* Pods-Workmanager_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Workmanager_Tests-dummy.m"; sourceTree = ""; }; 73 | 668603AE2276298D00939C2DE3402E4E /* Pods-Workmanager_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Workmanager_Example.release.xcconfig"; sourceTree = ""; }; 74 | 696AB19FC685DB5758B2600FFF8A4BD5 /* Pods_Workmanager_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Workmanager_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 75 | 7F4C380E20B4C9CDD6EC6C4FA3C98CB8 /* Pods-Workmanager_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Workmanager_Tests.release.xcconfig"; sourceTree = ""; }; 76 | 8064DD70A06419238DBE87F4899B4785 /* Pods-Workmanager_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Workmanager_Tests.debug.xcconfig"; sourceTree = ""; }; 77 | 8E15327159556E75A44474BF776388AB /* Pods-Workmanager_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Workmanager_Tests.modulemap"; sourceTree = ""; }; 78 | 8E58F5D259323B58EF9FB4C66F653953 /* Workmanager.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Workmanager.xcconfig; sourceTree = ""; }; 79 | 9709315610A58A863B3B5088887536A0 /* Pods-Workmanager_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Workmanager_Tests-acknowledgements.plist"; sourceTree = ""; }; 80 | 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 81 | A3D847A683E1C28CC3D4F0A104611E15 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; 82 | C034A89C62D474EE46A7E2CEF746B793 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; 83 | C119FCEDE1C154EBD8AA5126E21EFE12 /* Pods_Workmanager_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Workmanager_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 84 | C3721863A41D4F0F4CEAE34CAF08290E /* Pods-Workmanager_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Workmanager_Example-acknowledgements.markdown"; sourceTree = ""; }; 85 | C67AF7D3CB478FB4362695EED0189213 /* Pods-Workmanager_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Workmanager_Example.debug.xcconfig"; sourceTree = ""; }; 86 | C7B23D061A199E7572C8363140874547 /* Workmanager.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; path = Workmanager.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 87 | CD2ED3DB5386D64B97BB2228EB3012D6 /* Workmanager.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Workmanager.modulemap; sourceTree = ""; }; 88 | DB486570BF12E7091B36C7F1C6379AAB /* Pods-Workmanager_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Workmanager_Tests-acknowledgements.markdown"; sourceTree = ""; }; 89 | DDCABB5B5726CC32E3655BAA19457ABB /* Pods-Workmanager_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Workmanager_Example-dummy.m"; sourceTree = ""; }; 90 | F5A53FC51B4AC92FADB7D5D327C2D381 /* Pods-Workmanager_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Workmanager_Example-umbrella.h"; sourceTree = ""; }; 91 | F822E99EBF2A51A3BDD1D114290D8421 /* Workmanager-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Workmanager-Info.plist"; sourceTree = ""; }; 92 | /* End PBXFileReference section */ 93 | 94 | /* Begin PBXFrameworksBuildPhase section */ 95 | 751050C92C0C0177FF6E43F32BA12650 /* Frameworks */ = { 96 | isa = PBXFrameworksBuildPhase; 97 | buildActionMask = 2147483647; 98 | files = ( 99 | E4FB21B1B72E228F96F8C753ED025947 /* Foundation.framework in Frameworks */, 100 | ); 101 | runOnlyForDeploymentPostprocessing = 0; 102 | }; 103 | 7FB565DDED3F12C66FD477472C8F659C /* Frameworks */ = { 104 | isa = PBXFrameworksBuildPhase; 105 | buildActionMask = 2147483647; 106 | files = ( 107 | BF03D2A32C24B541764308F090D1D7AF /* Foundation.framework in Frameworks */, 108 | ); 109 | runOnlyForDeploymentPostprocessing = 0; 110 | }; 111 | B25B5D70001699D76E8A2026470226B9 /* Frameworks */ = { 112 | isa = PBXFrameworksBuildPhase; 113 | buildActionMask = 2147483647; 114 | files = ( 115 | 17055299CB2BCF4DFE59203FAD6D634F /* Foundation.framework in Frameworks */, 116 | ); 117 | runOnlyForDeploymentPostprocessing = 0; 118 | }; 119 | /* End PBXFrameworksBuildPhase section */ 120 | 121 | /* Begin PBXGroup section */ 122 | 1353824D237BFEDA006CEAE2 /* Builder */ = { 123 | isa = PBXGroup; 124 | children = ( 125 | 1353824E237BFEDA006CEAE2 /* ProcessingTaskBuilder.swift */, 126 | ); 127 | name = Builder; 128 | path = Workmanager/Classes/Builder; 129 | sourceTree = ""; 130 | }; 131 | 1353824F237BFEDA006CEAE2 /* Task */ = { 132 | isa = PBXGroup; 133 | children = ( 134 | 13538250237BFEDA006CEAE2 /* Property */, 135 | 13538254237BFEDB006CEAE2 /* TaskRepresentable.swift */, 136 | 13538255237BFEDB006CEAE2 /* ScheduledTask.swift */, 137 | 13538256237BFEDB006CEAE2 /* Task.swift */, 138 | 13538257237BFEDB006CEAE2 /* Builder */, 139 | ); 140 | name = Task; 141 | path = Workmanager/Classes/Task; 142 | sourceTree = ""; 143 | }; 144 | 13538250237BFEDA006CEAE2 /* Property */ = { 145 | isa = PBXGroup; 146 | children = ( 147 | 13538251237BFEDB006CEAE2 /* ExistingWorkPolicy.swift */, 148 | 13538252237BFEDB006CEAE2 /* Constraints.swift */, 149 | 13538253237BFEDB006CEAE2 /* BackoffPolicy.swift */, 150 | ); 151 | path = Property; 152 | sourceTree = ""; 153 | }; 154 | 13538257237BFEDB006CEAE2 /* Builder */ = { 155 | isa = PBXGroup; 156 | children = ( 157 | ); 158 | path = Builder; 159 | sourceTree = ""; 160 | }; 161 | 13538263237C0068006CEAE2 /* Scheduler */ = { 162 | isa = PBXGroup; 163 | children = ( 164 | 13538264237C0068006CEAE2 /* WorkScheduler.swift */, 165 | ); 166 | name = Scheduler; 167 | path = Workmanager/Classes/Scheduler; 168 | sourceTree = ""; 169 | }; 170 | 5F1873006694882F367B36A43BAC502D /* Workmanager */ = { 171 | isa = PBXGroup; 172 | children = ( 173 | 1353824A237BFEDA006CEAE2 /* WorkManager.swift */, 174 | 1353824B237BFEDA006CEAE2 /* WorkManager+Cancel.swift */, 175 | 1353824C237BFEDA006CEAE2 /* WorkManager+CRUD.swift */, 176 | 13538263237C0068006CEAE2 /* Scheduler */, 177 | 1353824D237BFEDA006CEAE2 /* Builder */, 178 | 1353824F237BFEDA006CEAE2 /* Task */, 179 | 9CF469C52BE7A27DADC43CB2B9D38CFA /* Pod */, 180 | 743845D36B17AFC2CAEA3EC228BC7181 /* Support Files */, 181 | ); 182 | name = Workmanager; 183 | path = ../..; 184 | sourceTree = ""; 185 | }; 186 | 61C3222DBC7113B0DAE389EB8D6C8F9F /* Development Pods */ = { 187 | isa = PBXGroup; 188 | children = ( 189 | 5F1873006694882F367B36A43BAC502D /* Workmanager */, 190 | ); 191 | name = "Development Pods"; 192 | sourceTree = ""; 193 | }; 194 | 6712CCBD96D4554042244AF63B3D0E69 /* Pods-Workmanager_Tests */ = { 195 | isa = PBXGroup; 196 | children = ( 197 | 8E15327159556E75A44474BF776388AB /* Pods-Workmanager_Tests.modulemap */, 198 | DB486570BF12E7091B36C7F1C6379AAB /* Pods-Workmanager_Tests-acknowledgements.markdown */, 199 | 9709315610A58A863B3B5088887536A0 /* Pods-Workmanager_Tests-acknowledgements.plist */, 200 | 527E8296E52E9A6509D03BCD69D753F8 /* Pods-Workmanager_Tests-dummy.m */, 201 | 01437C486AF34D100FF5F0FCAA4D1A8A /* Pods-Workmanager_Tests-Info.plist */, 202 | 0F028CB97209D18849538ED1508B99AA /* Pods-Workmanager_Tests-umbrella.h */, 203 | 8064DD70A06419238DBE87F4899B4785 /* Pods-Workmanager_Tests.debug.xcconfig */, 204 | 7F4C380E20B4C9CDD6EC6C4FA3C98CB8 /* Pods-Workmanager_Tests.release.xcconfig */, 205 | ); 206 | name = "Pods-Workmanager_Tests"; 207 | path = "Target Support Files/Pods-Workmanager_Tests"; 208 | sourceTree = ""; 209 | }; 210 | 743845D36B17AFC2CAEA3EC228BC7181 /* Support Files */ = { 211 | isa = PBXGroup; 212 | children = ( 213 | CD2ED3DB5386D64B97BB2228EB3012D6 /* Workmanager.modulemap */, 214 | 8E58F5D259323B58EF9FB4C66F653953 /* Workmanager.xcconfig */, 215 | 06FBE001D2066E4E1520583FD8549926 /* Workmanager-dummy.m */, 216 | F822E99EBF2A51A3BDD1D114290D8421 /* Workmanager-Info.plist */, 217 | 056879E99682F1016E9B511592512012 /* Workmanager-prefix.pch */, 218 | 1803DCDDC687E2791F0A325E50E58808 /* Workmanager-umbrella.h */, 219 | ); 220 | name = "Support Files"; 221 | path = "Example/Pods/Target Support Files/Workmanager"; 222 | sourceTree = ""; 223 | }; 224 | 8D381B64BD31F6A2C40900C15092BEC9 /* Pods-Workmanager_Example */ = { 225 | isa = PBXGroup; 226 | children = ( 227 | 3F5652338EBD6A565B6355585D9BF64F /* Pods-Workmanager_Example.modulemap */, 228 | C3721863A41D4F0F4CEAE34CAF08290E /* Pods-Workmanager_Example-acknowledgements.markdown */, 229 | 26743F24A8E9D26DAD5205BB6EC026E8 /* Pods-Workmanager_Example-acknowledgements.plist */, 230 | DDCABB5B5726CC32E3655BAA19457ABB /* Pods-Workmanager_Example-dummy.m */, 231 | 09B21B5087C1ED2B280320DE08AB58F4 /* Pods-Workmanager_Example-frameworks.sh */, 232 | 25CA9B4805FBCE60D3BD9FB4801A5AE4 /* Pods-Workmanager_Example-Info.plist */, 233 | F5A53FC51B4AC92FADB7D5D327C2D381 /* Pods-Workmanager_Example-umbrella.h */, 234 | C67AF7D3CB478FB4362695EED0189213 /* Pods-Workmanager_Example.debug.xcconfig */, 235 | 668603AE2276298D00939C2DE3402E4E /* Pods-Workmanager_Example.release.xcconfig */, 236 | ); 237 | name = "Pods-Workmanager_Example"; 238 | path = "Target Support Files/Pods-Workmanager_Example"; 239 | sourceTree = ""; 240 | }; 241 | 9CF469C52BE7A27DADC43CB2B9D38CFA /* Pod */ = { 242 | isa = PBXGroup; 243 | children = ( 244 | A3D847A683E1C28CC3D4F0A104611E15 /* LICENSE */, 245 | C034A89C62D474EE46A7E2CEF746B793 /* README.md */, 246 | C7B23D061A199E7572C8363140874547 /* Workmanager.podspec */, 247 | ); 248 | name = Pod; 249 | sourceTree = ""; 250 | }; 251 | C0834CEBB1379A84116EF29F93051C60 /* iOS */ = { 252 | isa = PBXGroup; 253 | children = ( 254 | 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */, 255 | ); 256 | name = iOS; 257 | sourceTree = ""; 258 | }; 259 | CF1408CF629C7361332E53B88F7BD30C = { 260 | isa = PBXGroup; 261 | children = ( 262 | 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, 263 | 61C3222DBC7113B0DAE389EB8D6C8F9F /* Development Pods */, 264 | D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */, 265 | F986AA0D0643F5D775B2E111764906EC /* Products */, 266 | DD0A48CADECF13F7D27321992F80F581 /* Targets Support Files */, 267 | ); 268 | sourceTree = ""; 269 | }; 270 | D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */ = { 271 | isa = PBXGroup; 272 | children = ( 273 | C0834CEBB1379A84116EF29F93051C60 /* iOS */, 274 | ); 275 | name = Frameworks; 276 | sourceTree = ""; 277 | }; 278 | DD0A48CADECF13F7D27321992F80F581 /* Targets Support Files */ = { 279 | isa = PBXGroup; 280 | children = ( 281 | 8D381B64BD31F6A2C40900C15092BEC9 /* Pods-Workmanager_Example */, 282 | 6712CCBD96D4554042244AF63B3D0E69 /* Pods-Workmanager_Tests */, 283 | ); 284 | name = "Targets Support Files"; 285 | sourceTree = ""; 286 | }; 287 | F986AA0D0643F5D775B2E111764906EC /* Products */ = { 288 | isa = PBXGroup; 289 | children = ( 290 | C119FCEDE1C154EBD8AA5126E21EFE12 /* Pods_Workmanager_Example.framework */, 291 | 696AB19FC685DB5758B2600FFF8A4BD5 /* Pods_Workmanager_Tests.framework */, 292 | 0E39D91FE8B9BC1B9574E8D680DD52B0 /* Workmanager.framework */, 293 | ); 294 | name = Products; 295 | sourceTree = ""; 296 | }; 297 | /* End PBXGroup section */ 298 | 299 | /* Begin PBXHeadersBuildPhase section */ 300 | 30FED6661AF3606E7D2F27B5926B12BB /* Headers */ = { 301 | isa = PBXHeadersBuildPhase; 302 | buildActionMask = 2147483647; 303 | files = ( 304 | AEEA157AD5C67B58A6D924C32A18771D /* Workmanager-umbrella.h in Headers */, 305 | ); 306 | runOnlyForDeploymentPostprocessing = 0; 307 | }; 308 | 3E930B9D3EA00374B71F300771BF6658 /* Headers */ = { 309 | isa = PBXHeadersBuildPhase; 310 | buildActionMask = 2147483647; 311 | files = ( 312 | C189CBB910F86A0D90987B6AD7907B2A /* Pods-Workmanager_Tests-umbrella.h in Headers */, 313 | ); 314 | runOnlyForDeploymentPostprocessing = 0; 315 | }; 316 | C5593B4DD570A815141CDB8B61FF78EC /* Headers */ = { 317 | isa = PBXHeadersBuildPhase; 318 | buildActionMask = 2147483647; 319 | files = ( 320 | 693C9856585B1E681D6AC00E82F38E05 /* Pods-Workmanager_Example-umbrella.h in Headers */, 321 | ); 322 | runOnlyForDeploymentPostprocessing = 0; 323 | }; 324 | /* End PBXHeadersBuildPhase section */ 325 | 326 | /* Begin PBXNativeTarget section */ 327 | 3ED5DFA0EA27E0A898BDA7205E5B67E2 /* Workmanager */ = { 328 | isa = PBXNativeTarget; 329 | buildConfigurationList = D47A2C26F75C6F2BFBE243EB8B7F10BF /* Build configuration list for PBXNativeTarget "Workmanager" */; 330 | buildPhases = ( 331 | 30FED6661AF3606E7D2F27B5926B12BB /* Headers */, 332 | 4567C92F00FF587E7C8ECCF29455F53D /* Sources */, 333 | B25B5D70001699D76E8A2026470226B9 /* Frameworks */, 334 | 80114582BD0E386008383A4364B4C567 /* Resources */, 335 | ); 336 | buildRules = ( 337 | ); 338 | dependencies = ( 339 | ); 340 | name = Workmanager; 341 | productName = Workmanager; 342 | productReference = 0E39D91FE8B9BC1B9574E8D680DD52B0 /* Workmanager.framework */; 343 | productType = "com.apple.product-type.framework"; 344 | }; 345 | 440A87CF1A27C814C413A84621DF2EBF /* Pods-Workmanager_Tests */ = { 346 | isa = PBXNativeTarget; 347 | buildConfigurationList = 6D9F036C7C57F1DDCEB4314AE70A6DC3 /* Build configuration list for PBXNativeTarget "Pods-Workmanager_Tests" */; 348 | buildPhases = ( 349 | 3E930B9D3EA00374B71F300771BF6658 /* Headers */, 350 | 1806AD58373F4521C4211E29ACF1E9DD /* Sources */, 351 | 7FB565DDED3F12C66FD477472C8F659C /* Frameworks */, 352 | 092F1D3EC9978D21EB12A85246DEF430 /* Resources */, 353 | ); 354 | buildRules = ( 355 | ); 356 | dependencies = ( 357 | 13EEA378F2D14C7076D620F3A093693C /* PBXTargetDependency */, 358 | ); 359 | name = "Pods-Workmanager_Tests"; 360 | productName = "Pods-Workmanager_Tests"; 361 | productReference = 696AB19FC685DB5758B2600FFF8A4BD5 /* Pods_Workmanager_Tests.framework */; 362 | productType = "com.apple.product-type.framework"; 363 | }; 364 | E7D0698A5B3A43CD21756EBB60C07B73 /* Pods-Workmanager_Example */ = { 365 | isa = PBXNativeTarget; 366 | buildConfigurationList = 0A55283935CE7626C0556AC080140352 /* Build configuration list for PBXNativeTarget "Pods-Workmanager_Example" */; 367 | buildPhases = ( 368 | C5593B4DD570A815141CDB8B61FF78EC /* Headers */, 369 | AF5A078E9DE07E2543BE0AB11E9890FB /* Sources */, 370 | 751050C92C0C0177FF6E43F32BA12650 /* Frameworks */, 371 | A057826713E0CB635ECACB49520CDE02 /* Resources */, 372 | ); 373 | buildRules = ( 374 | ); 375 | dependencies = ( 376 | 81A450487B66DDD776CD72DCD9FA89A6 /* PBXTargetDependency */, 377 | ); 378 | name = "Pods-Workmanager_Example"; 379 | productName = "Pods-Workmanager_Example"; 380 | productReference = C119FCEDE1C154EBD8AA5126E21EFE12 /* Pods_Workmanager_Example.framework */; 381 | productType = "com.apple.product-type.framework"; 382 | }; 383 | /* End PBXNativeTarget section */ 384 | 385 | /* Begin PBXProject section */ 386 | BFDFE7DC352907FC980B868725387E98 /* Project object */ = { 387 | isa = PBXProject; 388 | attributes = { 389 | LastSwiftUpdateCheck = 1100; 390 | LastUpgradeCheck = 1100; 391 | TargetAttributes = { 392 | 3ED5DFA0EA27E0A898BDA7205E5B67E2 = { 393 | LastSwiftMigration = 1110; 394 | }; 395 | }; 396 | }; 397 | buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; 398 | compatibilityVersion = "Xcode 3.2"; 399 | developmentRegion = en; 400 | hasScannedForEncodings = 0; 401 | knownRegions = ( 402 | en, 403 | Base, 404 | ); 405 | mainGroup = CF1408CF629C7361332E53B88F7BD30C; 406 | productRefGroup = F986AA0D0643F5D775B2E111764906EC /* Products */; 407 | projectDirPath = ""; 408 | projectRoot = ""; 409 | targets = ( 410 | E7D0698A5B3A43CD21756EBB60C07B73 /* Pods-Workmanager_Example */, 411 | 440A87CF1A27C814C413A84621DF2EBF /* Pods-Workmanager_Tests */, 412 | 3ED5DFA0EA27E0A898BDA7205E5B67E2 /* Workmanager */, 413 | ); 414 | }; 415 | /* End PBXProject section */ 416 | 417 | /* Begin PBXResourcesBuildPhase section */ 418 | 092F1D3EC9978D21EB12A85246DEF430 /* Resources */ = { 419 | isa = PBXResourcesBuildPhase; 420 | buildActionMask = 2147483647; 421 | files = ( 422 | ); 423 | runOnlyForDeploymentPostprocessing = 0; 424 | }; 425 | 80114582BD0E386008383A4364B4C567 /* Resources */ = { 426 | isa = PBXResourcesBuildPhase; 427 | buildActionMask = 2147483647; 428 | files = ( 429 | ); 430 | runOnlyForDeploymentPostprocessing = 0; 431 | }; 432 | A057826713E0CB635ECACB49520CDE02 /* Resources */ = { 433 | isa = PBXResourcesBuildPhase; 434 | buildActionMask = 2147483647; 435 | files = ( 436 | ); 437 | runOnlyForDeploymentPostprocessing = 0; 438 | }; 439 | /* End PBXResourcesBuildPhase section */ 440 | 441 | /* Begin PBXSourcesBuildPhase section */ 442 | 1806AD58373F4521C4211E29ACF1E9DD /* Sources */ = { 443 | isa = PBXSourcesBuildPhase; 444 | buildActionMask = 2147483647; 445 | files = ( 446 | DCCD5B752BFEEB3C6C365C3D62C31850 /* Pods-Workmanager_Tests-dummy.m in Sources */, 447 | ); 448 | runOnlyForDeploymentPostprocessing = 0; 449 | }; 450 | 4567C92F00FF587E7C8ECCF29455F53D /* Sources */ = { 451 | isa = PBXSourcesBuildPhase; 452 | buildActionMask = 2147483647; 453 | files = ( 454 | 13538265237C0068006CEAE2 /* WorkScheduler.swift in Sources */, 455 | 1353825C237BFEDB006CEAE2 /* ProcessingTaskBuilder.swift in Sources */, 456 | A2529D130B1B7ABBE73C65AB97467FF0 /* Workmanager-dummy.m in Sources */, 457 | 1353825D237BFEDB006CEAE2 /* ExistingWorkPolicy.swift in Sources */, 458 | 13538262237BFEDB006CEAE2 /* Task.swift in Sources */, 459 | 1353825E237BFEDB006CEAE2 /* Constraints.swift in Sources */, 460 | 13538260237BFEDB006CEAE2 /* TaskRepresentable.swift in Sources */, 461 | 1353825A237BFEDB006CEAE2 /* WorkManager+Cancel.swift in Sources */, 462 | 13538259237BFEDB006CEAE2 /* WorkManager.swift in Sources */, 463 | 1353825F237BFEDB006CEAE2 /* BackoffPolicy.swift in Sources */, 464 | 1353825B237BFEDB006CEAE2 /* WorkManager+CRUD.swift in Sources */, 465 | 13538261237BFEDB006CEAE2 /* ScheduledTask.swift in Sources */, 466 | ); 467 | runOnlyForDeploymentPostprocessing = 0; 468 | }; 469 | AF5A078E9DE07E2543BE0AB11E9890FB /* Sources */ = { 470 | isa = PBXSourcesBuildPhase; 471 | buildActionMask = 2147483647; 472 | files = ( 473 | 5DA26D0DF20A31AA5F87AC5B4F652AA1 /* Pods-Workmanager_Example-dummy.m in Sources */, 474 | ); 475 | runOnlyForDeploymentPostprocessing = 0; 476 | }; 477 | /* End PBXSourcesBuildPhase section */ 478 | 479 | /* Begin PBXTargetDependency section */ 480 | 13EEA378F2D14C7076D620F3A093693C /* PBXTargetDependency */ = { 481 | isa = PBXTargetDependency; 482 | name = "Pods-Workmanager_Example"; 483 | target = E7D0698A5B3A43CD21756EBB60C07B73 /* Pods-Workmanager_Example */; 484 | targetProxy = 1637321E628B3894CC3B7A1C3E65A245 /* PBXContainerItemProxy */; 485 | }; 486 | 81A450487B66DDD776CD72DCD9FA89A6 /* PBXTargetDependency */ = { 487 | isa = PBXTargetDependency; 488 | name = Workmanager; 489 | target = 3ED5DFA0EA27E0A898BDA7205E5B67E2 /* Workmanager */; 490 | targetProxy = A6CAFA34002652C6952F2E3777A74CCF /* PBXContainerItemProxy */; 491 | }; 492 | /* End PBXTargetDependency section */ 493 | 494 | /* Begin XCBuildConfiguration section */ 495 | 2CF4730308E6E8E3661D7D5ABF9EBD9F /* Debug */ = { 496 | isa = XCBuildConfiguration; 497 | baseConfigurationReference = C67AF7D3CB478FB4362695EED0189213 /* Pods-Workmanager_Example.debug.xcconfig */; 498 | buildSettings = { 499 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; 500 | CODE_SIGN_IDENTITY = ""; 501 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 502 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 503 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 504 | CURRENT_PROJECT_VERSION = 1; 505 | DEFINES_MODULE = YES; 506 | DYLIB_COMPATIBILITY_VERSION = 1; 507 | DYLIB_CURRENT_VERSION = 1; 508 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 509 | INFOPLIST_FILE = "Target Support Files/Pods-Workmanager_Example/Pods-Workmanager_Example-Info.plist"; 510 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 511 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 512 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 513 | MACH_O_TYPE = staticlib; 514 | MODULEMAP_FILE = "Target Support Files/Pods-Workmanager_Example/Pods-Workmanager_Example.modulemap"; 515 | OTHER_LDFLAGS = ""; 516 | OTHER_LIBTOOLFLAGS = ""; 517 | PODS_ROOT = "$(SRCROOT)"; 518 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 519 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 520 | SDKROOT = iphoneos; 521 | SKIP_INSTALL = YES; 522 | TARGETED_DEVICE_FAMILY = "1,2"; 523 | VERSIONING_SYSTEM = "apple-generic"; 524 | VERSION_INFO_PREFIX = ""; 525 | }; 526 | name = Debug; 527 | }; 528 | 4E4FDEF8774371D9430E549EA1C86CF1 /* Release */ = { 529 | isa = XCBuildConfiguration; 530 | baseConfigurationReference = 668603AE2276298D00939C2DE3402E4E /* Pods-Workmanager_Example.release.xcconfig */; 531 | buildSettings = { 532 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; 533 | CODE_SIGN_IDENTITY = ""; 534 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 535 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 536 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 537 | CURRENT_PROJECT_VERSION = 1; 538 | DEFINES_MODULE = YES; 539 | DYLIB_COMPATIBILITY_VERSION = 1; 540 | DYLIB_CURRENT_VERSION = 1; 541 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 542 | INFOPLIST_FILE = "Target Support Files/Pods-Workmanager_Example/Pods-Workmanager_Example-Info.plist"; 543 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 544 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 545 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 546 | MACH_O_TYPE = staticlib; 547 | MODULEMAP_FILE = "Target Support Files/Pods-Workmanager_Example/Pods-Workmanager_Example.modulemap"; 548 | OTHER_LDFLAGS = ""; 549 | OTHER_LIBTOOLFLAGS = ""; 550 | PODS_ROOT = "$(SRCROOT)"; 551 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 552 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 553 | SDKROOT = iphoneos; 554 | SKIP_INSTALL = YES; 555 | TARGETED_DEVICE_FAMILY = "1,2"; 556 | VALIDATE_PRODUCT = YES; 557 | VERSIONING_SYSTEM = "apple-generic"; 558 | VERSION_INFO_PREFIX = ""; 559 | }; 560 | name = Release; 561 | }; 562 | 5F4BE240A0973F0D8D81FD920BE599B0 /* Release */ = { 563 | isa = XCBuildConfiguration; 564 | baseConfigurationReference = 8E58F5D259323B58EF9FB4C66F653953 /* Workmanager.xcconfig */; 565 | buildSettings = { 566 | CLANG_ENABLE_MODULES = YES; 567 | CODE_SIGN_IDENTITY = ""; 568 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 569 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 570 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 571 | CURRENT_PROJECT_VERSION = 1; 572 | DEFINES_MODULE = YES; 573 | DYLIB_COMPATIBILITY_VERSION = 1; 574 | DYLIB_CURRENT_VERSION = 1; 575 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 576 | GCC_PREFIX_HEADER = "Target Support Files/Workmanager/Workmanager-prefix.pch"; 577 | INFOPLIST_FILE = "Target Support Files/Workmanager/Workmanager-Info.plist"; 578 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 579 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 580 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 581 | MODULEMAP_FILE = "Target Support Files/Workmanager/Workmanager.modulemap"; 582 | PRODUCT_MODULE_NAME = Workmanager; 583 | PRODUCT_NAME = Workmanager; 584 | SDKROOT = iphoneos; 585 | SKIP_INSTALL = YES; 586 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; 587 | SWIFT_VERSION = 5.0; 588 | TARGETED_DEVICE_FAMILY = "1,2"; 589 | VALIDATE_PRODUCT = YES; 590 | VERSIONING_SYSTEM = "apple-generic"; 591 | VERSION_INFO_PREFIX = ""; 592 | }; 593 | name = Release; 594 | }; 595 | 66B61A0BA4162F6631517AFF83613325 /* Release */ = { 596 | isa = XCBuildConfiguration; 597 | baseConfigurationReference = 7F4C380E20B4C9CDD6EC6C4FA3C98CB8 /* Pods-Workmanager_Tests.release.xcconfig */; 598 | buildSettings = { 599 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; 600 | CODE_SIGN_IDENTITY = ""; 601 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 602 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 603 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 604 | CURRENT_PROJECT_VERSION = 1; 605 | DEFINES_MODULE = YES; 606 | DYLIB_COMPATIBILITY_VERSION = 1; 607 | DYLIB_CURRENT_VERSION = 1; 608 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 609 | INFOPLIST_FILE = "Target Support Files/Pods-Workmanager_Tests/Pods-Workmanager_Tests-Info.plist"; 610 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 611 | IPHONEOS_DEPLOYMENT_TARGET = 9.3; 612 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 613 | MACH_O_TYPE = staticlib; 614 | MODULEMAP_FILE = "Target Support Files/Pods-Workmanager_Tests/Pods-Workmanager_Tests.modulemap"; 615 | OTHER_LDFLAGS = ""; 616 | OTHER_LIBTOOLFLAGS = ""; 617 | PODS_ROOT = "$(SRCROOT)"; 618 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 619 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 620 | SDKROOT = iphoneos; 621 | SKIP_INSTALL = YES; 622 | TARGETED_DEVICE_FAMILY = "1,2"; 623 | VALIDATE_PRODUCT = YES; 624 | VERSIONING_SYSTEM = "apple-generic"; 625 | VERSION_INFO_PREFIX = ""; 626 | }; 627 | name = Release; 628 | }; 629 | 6EFEB68EEB8B9D06636DEB76AFAEDE8A /* Debug */ = { 630 | isa = XCBuildConfiguration; 631 | baseConfigurationReference = 8E58F5D259323B58EF9FB4C66F653953 /* Workmanager.xcconfig */; 632 | buildSettings = { 633 | CLANG_ENABLE_MODULES = YES; 634 | CODE_SIGN_IDENTITY = ""; 635 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 636 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 637 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 638 | CURRENT_PROJECT_VERSION = 1; 639 | DEFINES_MODULE = YES; 640 | DYLIB_COMPATIBILITY_VERSION = 1; 641 | DYLIB_CURRENT_VERSION = 1; 642 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 643 | GCC_PREFIX_HEADER = "Target Support Files/Workmanager/Workmanager-prefix.pch"; 644 | INFOPLIST_FILE = "Target Support Files/Workmanager/Workmanager-Info.plist"; 645 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 646 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 647 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 648 | MODULEMAP_FILE = "Target Support Files/Workmanager/Workmanager.modulemap"; 649 | PRODUCT_MODULE_NAME = Workmanager; 650 | PRODUCT_NAME = Workmanager; 651 | SDKROOT = iphoneos; 652 | SKIP_INSTALL = YES; 653 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; 654 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 655 | SWIFT_VERSION = 5.0; 656 | TARGETED_DEVICE_FAMILY = "1,2"; 657 | VERSIONING_SYSTEM = "apple-generic"; 658 | VERSION_INFO_PREFIX = ""; 659 | }; 660 | name = Debug; 661 | }; 662 | 90D1C912E6FA8D2AD4E9013667FC0339 /* Debug */ = { 663 | isa = XCBuildConfiguration; 664 | baseConfigurationReference = 8064DD70A06419238DBE87F4899B4785 /* Pods-Workmanager_Tests.debug.xcconfig */; 665 | buildSettings = { 666 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; 667 | CODE_SIGN_IDENTITY = ""; 668 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 669 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 670 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 671 | CURRENT_PROJECT_VERSION = 1; 672 | DEFINES_MODULE = YES; 673 | DYLIB_COMPATIBILITY_VERSION = 1; 674 | DYLIB_CURRENT_VERSION = 1; 675 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 676 | INFOPLIST_FILE = "Target Support Files/Pods-Workmanager_Tests/Pods-Workmanager_Tests-Info.plist"; 677 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 678 | IPHONEOS_DEPLOYMENT_TARGET = 9.3; 679 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 680 | MACH_O_TYPE = staticlib; 681 | MODULEMAP_FILE = "Target Support Files/Pods-Workmanager_Tests/Pods-Workmanager_Tests.modulemap"; 682 | OTHER_LDFLAGS = ""; 683 | OTHER_LIBTOOLFLAGS = ""; 684 | PODS_ROOT = "$(SRCROOT)"; 685 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 686 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 687 | SDKROOT = iphoneos; 688 | SKIP_INSTALL = YES; 689 | TARGETED_DEVICE_FAMILY = "1,2"; 690 | VERSIONING_SYSTEM = "apple-generic"; 691 | VERSION_INFO_PREFIX = ""; 692 | }; 693 | name = Debug; 694 | }; 695 | B0087CB4594321EF41619F3181FE120E /* Release */ = { 696 | isa = XCBuildConfiguration; 697 | buildSettings = { 698 | ALWAYS_SEARCH_USER_PATHS = NO; 699 | CLANG_ANALYZER_NONNULL = YES; 700 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 701 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 702 | CLANG_CXX_LIBRARY = "libc++"; 703 | CLANG_ENABLE_MODULES = YES; 704 | CLANG_ENABLE_OBJC_ARC = YES; 705 | CLANG_ENABLE_OBJC_WEAK = YES; 706 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 707 | CLANG_WARN_BOOL_CONVERSION = YES; 708 | CLANG_WARN_COMMA = YES; 709 | CLANG_WARN_CONSTANT_CONVERSION = YES; 710 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 711 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 712 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 713 | CLANG_WARN_EMPTY_BODY = YES; 714 | CLANG_WARN_ENUM_CONVERSION = YES; 715 | CLANG_WARN_INFINITE_RECURSION = YES; 716 | CLANG_WARN_INT_CONVERSION = YES; 717 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 718 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 719 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 720 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 721 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 722 | CLANG_WARN_STRICT_PROTOTYPES = YES; 723 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 724 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 725 | CLANG_WARN_UNREACHABLE_CODE = YES; 726 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 727 | COPY_PHASE_STRIP = NO; 728 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 729 | ENABLE_NS_ASSERTIONS = NO; 730 | ENABLE_STRICT_OBJC_MSGSEND = YES; 731 | GCC_C_LANGUAGE_STANDARD = gnu11; 732 | GCC_NO_COMMON_BLOCKS = YES; 733 | GCC_PREPROCESSOR_DEFINITIONS = ( 734 | "POD_CONFIGURATION_RELEASE=1", 735 | "$(inherited)", 736 | ); 737 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 738 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 739 | GCC_WARN_UNDECLARED_SELECTOR = YES; 740 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 741 | GCC_WARN_UNUSED_FUNCTION = YES; 742 | GCC_WARN_UNUSED_VARIABLE = YES; 743 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 744 | MTL_ENABLE_DEBUG_INFO = NO; 745 | MTL_FAST_MATH = YES; 746 | PRODUCT_NAME = "$(TARGET_NAME)"; 747 | STRIP_INSTALLED_PRODUCT = NO; 748 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 749 | SWIFT_VERSION = 5.0; 750 | SYMROOT = "${SRCROOT}/../build"; 751 | }; 752 | name = Release; 753 | }; 754 | B8BCBD0110C2658BB5DAADB9B7D97B92 /* Debug */ = { 755 | isa = XCBuildConfiguration; 756 | buildSettings = { 757 | ALWAYS_SEARCH_USER_PATHS = NO; 758 | CLANG_ANALYZER_NONNULL = YES; 759 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 760 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 761 | CLANG_CXX_LIBRARY = "libc++"; 762 | CLANG_ENABLE_MODULES = YES; 763 | CLANG_ENABLE_OBJC_ARC = YES; 764 | CLANG_ENABLE_OBJC_WEAK = YES; 765 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 766 | CLANG_WARN_BOOL_CONVERSION = YES; 767 | CLANG_WARN_COMMA = YES; 768 | CLANG_WARN_CONSTANT_CONVERSION = YES; 769 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 770 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 771 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 772 | CLANG_WARN_EMPTY_BODY = YES; 773 | CLANG_WARN_ENUM_CONVERSION = YES; 774 | CLANG_WARN_INFINITE_RECURSION = YES; 775 | CLANG_WARN_INT_CONVERSION = YES; 776 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 777 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 778 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 779 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 780 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 781 | CLANG_WARN_STRICT_PROTOTYPES = YES; 782 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 783 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 784 | CLANG_WARN_UNREACHABLE_CODE = YES; 785 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 786 | COPY_PHASE_STRIP = NO; 787 | DEBUG_INFORMATION_FORMAT = dwarf; 788 | ENABLE_STRICT_OBJC_MSGSEND = YES; 789 | ENABLE_TESTABILITY = YES; 790 | GCC_C_LANGUAGE_STANDARD = gnu11; 791 | GCC_DYNAMIC_NO_PIC = NO; 792 | GCC_NO_COMMON_BLOCKS = YES; 793 | GCC_OPTIMIZATION_LEVEL = 0; 794 | GCC_PREPROCESSOR_DEFINITIONS = ( 795 | "POD_CONFIGURATION_DEBUG=1", 796 | "DEBUG=1", 797 | "$(inherited)", 798 | ); 799 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 800 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 801 | GCC_WARN_UNDECLARED_SELECTOR = YES; 802 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 803 | GCC_WARN_UNUSED_FUNCTION = YES; 804 | GCC_WARN_UNUSED_VARIABLE = YES; 805 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 806 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 807 | MTL_FAST_MATH = YES; 808 | ONLY_ACTIVE_ARCH = YES; 809 | PRODUCT_NAME = "$(TARGET_NAME)"; 810 | STRIP_INSTALLED_PRODUCT = NO; 811 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 812 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 813 | SWIFT_VERSION = 5.0; 814 | SYMROOT = "${SRCROOT}/../build"; 815 | }; 816 | name = Debug; 817 | }; 818 | /* End XCBuildConfiguration section */ 819 | 820 | /* Begin XCConfigurationList section */ 821 | 0A55283935CE7626C0556AC080140352 /* Build configuration list for PBXNativeTarget "Pods-Workmanager_Example" */ = { 822 | isa = XCConfigurationList; 823 | buildConfigurations = ( 824 | 2CF4730308E6E8E3661D7D5ABF9EBD9F /* Debug */, 825 | 4E4FDEF8774371D9430E549EA1C86CF1 /* Release */, 826 | ); 827 | defaultConfigurationIsVisible = 0; 828 | defaultConfigurationName = Release; 829 | }; 830 | 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { 831 | isa = XCConfigurationList; 832 | buildConfigurations = ( 833 | B8BCBD0110C2658BB5DAADB9B7D97B92 /* Debug */, 834 | B0087CB4594321EF41619F3181FE120E /* Release */, 835 | ); 836 | defaultConfigurationIsVisible = 0; 837 | defaultConfigurationName = Release; 838 | }; 839 | 6D9F036C7C57F1DDCEB4314AE70A6DC3 /* Build configuration list for PBXNativeTarget "Pods-Workmanager_Tests" */ = { 840 | isa = XCConfigurationList; 841 | buildConfigurations = ( 842 | 90D1C912E6FA8D2AD4E9013667FC0339 /* Debug */, 843 | 66B61A0BA4162F6631517AFF83613325 /* Release */, 844 | ); 845 | defaultConfigurationIsVisible = 0; 846 | defaultConfigurationName = Release; 847 | }; 848 | D47A2C26F75C6F2BFBE243EB8B7F10BF /* Build configuration list for PBXNativeTarget "Workmanager" */ = { 849 | isa = XCConfigurationList; 850 | buildConfigurations = ( 851 | 6EFEB68EEB8B9D06636DEB76AFAEDE8A /* Debug */, 852 | 5F4BE240A0973F0D8D81FD920BE599B0 /* Release */, 853 | ); 854 | defaultConfigurationIsVisible = 0; 855 | defaultConfigurationName = Release; 856 | }; 857 | /* End XCConfigurationList section */ 858 | }; 859 | rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; 860 | } 861 | --------------------------------------------------------------------------------