From 2106aae41c6969c7d8766c0c197c6fe94e21a9d5 Mon Sep 17 00:00:00 2001 From: Mouhcine El Amine <mouhcine.elamine@icloud.com> Date: Fri, 2 Feb 2018 00:15:48 +0100 Subject: [PATCH 1/4] Updated to Swift 4 --- .swift-version | 1 - Cartfile | 2 +- Cartfile.resolved | 2 +- Example/Podfile.lock | 102 +++++++++--------- .../arek_example.xcodeproj/project.pbxproj | 35 ++++-- README.md | 2 +- arek.podspec | 5 +- code/Classes/Permissions/ArekCamera.swift | 4 +- code/Classes/Permissions/ArekMicrophone.swift | 2 - 9 files changed, 87 insertions(+), 68 deletions(-) delete mode 100644 .swift-version diff --git a/.swift-version b/.swift-version deleted file mode 100644 index 9f55b2c..0000000 --- a/.swift-version +++ /dev/null @@ -1 +0,0 @@ -3.0 diff --git a/Cartfile b/Cartfile index 7060ec8..4c8545c 100644 --- a/Cartfile +++ b/Cartfile @@ -1 +1 @@ -github "Codeido/PMAlertController", "3.1.0" +github "Codeido/PMAlertController", "3.2.0" diff --git a/Cartfile.resolved b/Cartfile.resolved index f92ecf6..01ec857 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -1 +1 @@ -github "Codeido/PMAlertController" "2.1.2" +github "Codeido/PMAlertController" "3.2.0" diff --git a/Example/Podfile.lock b/Example/Podfile.lock index ac775c8..70bc3c9 100644 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -1,66 +1,66 @@ PODS: - - arek (1.7.1): - - arek/Bluetooth (= 1.7.1) - - arek/Camera (= 1.7.1) - - arek/CloudKit (= 1.7.1) - - arek/Contacts (= 1.7.1) - - arek/Core (= 1.7.1) - - arek/Events (= 1.7.1) - - arek/Health (= 1.7.1) - - arek/Location (= 1.7.1) - - arek/MediaLibrary (= 1.7.1) - - arek/Microphone (= 1.7.1) - - arek/Motion (= 1.7.1) - - arek/Notifications (= 1.7.1) - - arek/Photos (= 1.7.1) - - arek/Reminders (= 1.7.1) - - arek/SpeechRecognizer (= 1.7.1) - - PMAlertController (= 3.1.0) - - arek/Bluetooth (1.7.1): + - arek (1.8.0): + - arek/Bluetooth (= 1.8.0) + - arek/Camera (= 1.8.0) + - arek/CloudKit (= 1.8.0) + - arek/Contacts (= 1.8.0) + - arek/Core (= 1.8.0) + - arek/Events (= 1.8.0) + - arek/Health (= 1.8.0) + - arek/Location (= 1.8.0) + - arek/MediaLibrary (= 1.8.0) + - arek/Microphone (= 1.8.0) + - arek/Motion (= 1.8.0) + - arek/Notifications (= 1.8.0) + - arek/Photos (= 1.8.0) + - arek/Reminders (= 1.8.0) + - arek/SpeechRecognizer (= 1.8.0) + - PMAlertController (= 3.2.0) + - arek/Bluetooth (1.8.0): - arek/Core - - PMAlertController (= 3.1.0) - - arek/Camera (1.7.1): + - PMAlertController (= 3.2.0) + - arek/Camera (1.8.0): - arek/Core - - PMAlertController (= 3.1.0) - - arek/CloudKit (1.7.1): + - PMAlertController (= 3.2.0) + - arek/CloudKit (1.8.0): - arek/Core - - PMAlertController (= 3.1.0) - - arek/Contacts (1.7.1): + - PMAlertController (= 3.2.0) + - arek/Contacts (1.8.0): - arek/Core - - PMAlertController (= 3.1.0) - - arek/Core (1.7.1): - - PMAlertController (= 3.1.0) - - arek/Events (1.7.1): + - PMAlertController (= 3.2.0) + - arek/Core (1.8.0): + - PMAlertController (= 3.2.0) + - arek/Events (1.8.0): - arek/Core - - PMAlertController (= 3.1.0) - - arek/Health (1.7.1): + - PMAlertController (= 3.2.0) + - arek/Health (1.8.0): - arek/Core - - PMAlertController (= 3.1.0) - - arek/Location (1.7.1): + - PMAlertController (= 3.2.0) + - arek/Location (1.8.0): - arek/Core - - PMAlertController (= 3.1.0) - - arek/MediaLibrary (1.7.1): + - PMAlertController (= 3.2.0) + - arek/MediaLibrary (1.8.0): - arek/Core - - PMAlertController (= 3.1.0) - - arek/Microphone (1.7.1): + - PMAlertController (= 3.2.0) + - arek/Microphone (1.8.0): - arek/Core - - PMAlertController (= 3.1.0) - - arek/Motion (1.7.1): + - PMAlertController (= 3.2.0) + - arek/Motion (1.8.0): - arek/Core - - PMAlertController (= 3.1.0) - - arek/Notifications (1.7.1): + - PMAlertController (= 3.2.0) + - arek/Notifications (1.8.0): - arek/Core - - PMAlertController (= 3.1.0) - - arek/Photos (1.7.1): + - PMAlertController (= 3.2.0) + - arek/Photos (1.8.0): - arek/Core - - PMAlertController (= 3.1.0) - - arek/Reminders (1.7.1): + - PMAlertController (= 3.2.0) + - arek/Reminders (1.8.0): - arek/Core - - PMAlertController (= 3.1.0) - - arek/SpeechRecognizer (1.7.1): + - PMAlertController (= 3.2.0) + - arek/SpeechRecognizer (1.8.0): - arek/Core - - PMAlertController (= 3.1.0) - - PMAlertController (3.1.0) + - PMAlertController (= 3.2.0) + - PMAlertController (3.2.0) DEPENDENCIES: - arek (from `../`) @@ -70,9 +70,9 @@ EXTERNAL SOURCES: :path: ../ SPEC CHECKSUMS: - arek: 9c3a43358625ae21c23e2fef806458ef41d9d94a - PMAlertController: 2c9f27b318e5adf685ba10737ff84be0a3ac5618 + arek: c9d10e60a454d7af1bdb39b0f0b061615a54dcd8 + PMAlertController: 46047b840f6e1833c2a5395c91ccad29e72ae2c0 PODFILE CHECKSUM: 51391b981566b427912c687e0f5ba15813bf3aa4 -COCOAPODS: 1.3.1 +COCOAPODS: 1.4.0 diff --git a/Example/arek_example.xcodeproj/project.pbxproj b/Example/arek_example.xcodeproj/project.pbxproj index 8c057e4..ffd881c 100644 --- a/Example/arek_example.xcodeproj/project.pbxproj +++ b/Example/arek_example.xcodeproj/project.pbxproj @@ -238,12 +238,13 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0820; - LastUpgradeCheck = 0830; + LastUpgradeCheck = 0920; ORGANIZATIONNAME = ennioma; TargetAttributes = { 7569AF8C1E7447F300E81C95 = { CreatedOnToolsVersion = 8.2.1; DevelopmentTeam = MQ7M5YR8SU; + LastSwiftMigration = 0920; ProvisioningStyle = Automatic; SystemCapabilities = { com.apple.Siri = { @@ -253,11 +254,13 @@ }; 7569AFA01E7447F300E81C95 = { CreatedOnToolsVersion = 8.2.1; + LastSwiftMigration = 0920; ProvisioningStyle = Automatic; TestTargetID = 7569AF8C1E7447F300E81C95; }; 7569AFAB1E7447F300E81C95 = { CreatedOnToolsVersion = 8.2.1; + LastSwiftMigration = 0920; ProvisioningStyle = Automatic; TestTargetID = 7569AF8C1E7447F300E81C95; }; @@ -449,7 +452,9 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; @@ -457,7 +462,11 @@ CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; @@ -498,7 +507,9 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; @@ -506,7 +517,11 @@ CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; @@ -546,7 +561,8 @@ PRODUCT_BUNDLE_IDENTIFIER = com.ennioma.arek; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; }; name = Debug; }; @@ -565,7 +581,8 @@ PRODUCT_BUNDLE_IDENTIFIER = com.ennioma.arek; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; }; name = Release; }; @@ -578,7 +595,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "com.ennioma.arek-exampleTests"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/arek_example.app/arek_example"; }; name = Debug; @@ -592,7 +610,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "com.ennioma.arek-exampleTests"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/arek_example.app/arek_example"; }; name = Release; @@ -605,7 +624,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "com.ennioma.arek-exampleUITests"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; TEST_TARGET_NAME = arek_example; }; name = Debug; @@ -618,7 +638,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "com.ennioma.arek-exampleUITests"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; TEST_TARGET_NAME = arek_example; }; name = Release; diff --git a/README.md b/README.md index fa366a1..e0f96e3 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ Every goal could be easily reached using **AREK**. * show a popup to invite the user to re-enable the permission if it has been denied * manage through an easy configuration how many times to ask the user to re-enable the permission (Only once, every hour, once a day, weekly, alwaysπ·) -π¨ AREK is a **Swift 3** and **XCode 8** compatible project π¨ +π¨ AREK is a **Swift 4** and **XCode 9** compatible project π¨ ## Build Status diff --git a/arek.podspec b/arek.podspec index f0448ce..7126677 100644 --- a/arek.podspec +++ b/arek.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'arek' - s.version = '1.7.1' + s.version = '1.8.0' s.summary = 'AREK is a clean and easy to use wrapper over any kind of iOS permission.' s.homepage = 'https://github.com/ennioma/arek' s.license = { :type => 'MIT', :file => 'LICENSE'} @@ -8,9 +8,10 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/ennioma/arek.git', :tag => s.version.to_s } s.social_media_url = 'https://twitter.com/ennioma' s.ios.deployment_target = '9.0' + s.swift_version = '4.0' s.source_files = 'code/Classes/**/*', 'code/Classes/Core/**/*', 'code/Classes/Permissions/**/*' s.exclude_files = 'Example/*' - s.dependency 'PMAlertController', '3.1.0' + s.dependency 'PMAlertController', '3.2.0' s.subspec 'Core' do |ss| ss.source_files = 'code/Classes/Core/**/*.swift' diff --git a/code/Classes/Permissions/ArekCamera.swift b/code/Classes/Permissions/ArekCamera.swift index 691b4c9..d54df1a 100644 --- a/code/Classes/Permissions/ArekCamera.swift +++ b/code/Classes/Permissions/ArekCamera.swift @@ -38,7 +38,7 @@ open class ArekCamera: ArekBasePermission, ArekPermissionProtocol { } open func status(completion: @escaping ArekPermissionResponse) { - switch AVCaptureDevice.authorizationStatus(forMediaType: AVMediaTypeVideo) { + switch AVCaptureDevice.authorizationStatus(for: .video) { case .notDetermined: return completion(.notDetermined) case .restricted, .denied: @@ -49,7 +49,7 @@ open class ArekCamera: ArekBasePermission, ArekPermissionProtocol { } open func askForPermission(completion: @escaping ArekPermissionResponse) { - AVCaptureDevice.requestAccess(forMediaType: AVMediaTypeVideo) { (authorized) in + AVCaptureDevice.requestAccess(for: .video) { (authorized) in if authorized { print("[π¨ Arek π¨] π· permission authorized by user β ") return completion(.authorized) diff --git a/code/Classes/Permissions/ArekMicrophone.swift b/code/Classes/Permissions/ArekMicrophone.swift index 999076e..4ea2d69 100644 --- a/code/Classes/Permissions/ArekMicrophone.swift +++ b/code/Classes/Permissions/ArekMicrophone.swift @@ -45,8 +45,6 @@ open class ArekMicrophone: ArekBasePermission, ArekPermissionProtocol { return completion(.notDetermined) case AVAudioSessionRecordPermission.granted: return completion(.authorized) - default: - return completion(.notDetermined) } } From 372b3c75687713237b4b11bc8b829464c5b56926 Mon Sep 17 00:00:00 2001 From: Mouhcine El Amine <mouhcine.elamine@icloud.com> Date: Fri, 2 Feb 2018 20:06:41 +0100 Subject: [PATCH 2/4] Update version to 2.0.0 --- Example/Podfile.lock | 66 ++++++++++++++++++++++---------------------- arek.podspec | 2 +- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/Example/Podfile.lock b/Example/Podfile.lock index 70bc3c9..739f928 100644 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -1,63 +1,63 @@ PODS: - - arek (1.8.0): - - arek/Bluetooth (= 1.8.0) - - arek/Camera (= 1.8.0) - - arek/CloudKit (= 1.8.0) - - arek/Contacts (= 1.8.0) - - arek/Core (= 1.8.0) - - arek/Events (= 1.8.0) - - arek/Health (= 1.8.0) - - arek/Location (= 1.8.0) - - arek/MediaLibrary (= 1.8.0) - - arek/Microphone (= 1.8.0) - - arek/Motion (= 1.8.0) - - arek/Notifications (= 1.8.0) - - arek/Photos (= 1.8.0) - - arek/Reminders (= 1.8.0) - - arek/SpeechRecognizer (= 1.8.0) - - PMAlertController (= 3.2.0) - - arek/Bluetooth (1.8.0): + - arek (2.0.0): + - arek/Bluetooth (= 2.0.0) + - arek/Camera (= 2.0.0) + - arek/CloudKit (= 2.0.0) + - arek/Contacts (= 2.0.0) + - arek/Core (= 2.0.0) + - arek/Events (= 2.0.0) + - arek/Health (= 2.0.0) + - arek/Location (= 2.0.0) + - arek/MediaLibrary (= 2.0.0) + - arek/Microphone (= 2.0.0) + - arek/Motion (= 2.0.0) + - arek/Notifications (= 2.0.0) + - arek/Photos (= 2.0.0) + - arek/Reminders (= 2.0.0) + - arek/SpeechRecognizer (= 2.0.0) + - PMAlertController (= 3.2.0) + - arek/Bluetooth (2.0.0): - arek/Core - PMAlertController (= 3.2.0) - - arek/Camera (1.8.0): + - arek/Camera (2.0.0): - arek/Core - PMAlertController (= 3.2.0) - - arek/CloudKit (1.8.0): + - arek/CloudKit (2.0.0): - arek/Core - PMAlertController (= 3.2.0) - - arek/Contacts (1.8.0): + - arek/Contacts (2.0.0): - arek/Core - PMAlertController (= 3.2.0) - - arek/Core (1.8.0): + - arek/Core (2.0.0): - PMAlertController (= 3.2.0) - - arek/Events (1.8.0): + - arek/Events (2.0.0): - arek/Core - PMAlertController (= 3.2.0) - - arek/Health (1.8.0): + - arek/Health (2.0.0): - arek/Core - PMAlertController (= 3.2.0) - - arek/Location (1.8.0): + - arek/Location (2.0.0): - arek/Core - PMAlertController (= 3.2.0) - - arek/MediaLibrary (1.8.0): + - arek/MediaLibrary (2.0.0): - arek/Core - PMAlertController (= 3.2.0) - - arek/Microphone (1.8.0): + - arek/Microphone (2.0.0): - arek/Core - PMAlertController (= 3.2.0) - - arek/Motion (1.8.0): + - arek/Motion (2.0.0): - arek/Core - PMAlertController (= 3.2.0) - - arek/Notifications (1.8.0): + - arek/Notifications (2.0.0): - arek/Core - PMAlertController (= 3.2.0) - - arek/Photos (1.8.0): + - arek/Photos (2.0.0): - arek/Core - PMAlertController (= 3.2.0) - - arek/Reminders (1.8.0): + - arek/Reminders (2.0.0): - arek/Core - PMAlertController (= 3.2.0) - - arek/SpeechRecognizer (1.8.0): + - arek/SpeechRecognizer (2.0.0): - arek/Core - PMAlertController (= 3.2.0) - PMAlertController (3.2.0) @@ -70,7 +70,7 @@ EXTERNAL SOURCES: :path: ../ SPEC CHECKSUMS: - arek: c9d10e60a454d7af1bdb39b0f0b061615a54dcd8 + arek: 23436a17670c4dd7244d70283a7392455a5a92de PMAlertController: 46047b840f6e1833c2a5395c91ccad29e72ae2c0 PODFILE CHECKSUM: 51391b981566b427912c687e0f5ba15813bf3aa4 diff --git a/arek.podspec b/arek.podspec index 7126677..8916c32 100644 --- a/arek.podspec +++ b/arek.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'arek' - s.version = '1.8.0' + s.version = '2.0.0' s.summary = 'AREK is a clean and easy to use wrapper over any kind of iOS permission.' s.homepage = 'https://github.com/ennioma/arek' s.license = { :type => 'MIT', :file => 'LICENSE'} From 1d8ac23ae8e63941663dec8973c79e1f080e1393 Mon Sep 17 00:00:00 2001 From: Mouhcine El Amine <mouhcine.elamine@icloud.com> Date: Fri, 2 Feb 2018 20:25:19 +0100 Subject: [PATCH 3/4] Updated version in README --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e0f96e3..c9daf58 100644 --- a/README.md +++ b/README.md @@ -192,7 +192,7 @@ Add AREK to your Podfile ```ruby use_frameworks! target 'MyTarget' do - pod 'arek', '~> 1.6.0' + pod 'arek', '~> 2.0.0' end ``` @@ -200,7 +200,7 @@ If you want to install just a specific permission, let's say `Bluetooth`, you ha ```ruby use_frameworks! target 'MyTarget' do - pod 'arek/Bluetooth', '~> 1.6.0' + pod 'arek/Bluetooth', '~> 2.0.0' end ``` @@ -210,7 +210,7 @@ $ pod install ## Carthage ```ruby -github "ennioma/arek" ~> "1.6.0" +github "ennioma/arek" ~> "2.0.0" ``` Then on your application target *Build Phases* settings tab, add a "New Run Script Phase". Create a Run Script with the following content: @@ -233,7 +233,7 @@ import PackageDescription let package = Package( name: "YourApp", dependencies: [ - .Package(url: "https://github.com/ennioma/arek.git", versionMajor: 3, minor: 0) + .Package(url: "https://github.com/ennioma/arek.git", versionMajor: 2, minor: 0) ] ) ``` From 5cd543319069f17e05405c1e81538c565eb41e2b Mon Sep 17 00:00:00 2001 From: ennioma <ennio.masi@gmail.com> Date: Sat, 3 Feb 2018 14:50:52 +0000 Subject: [PATCH 4/4] Readme updated --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index c9daf58..49a408d 100644 --- a/README.md +++ b/README.md @@ -238,6 +238,8 @@ let package = Package( ) ``` +Note that if you want to install a *Swift 3* version of Arek, the latest compatible version is the *1.7.0*. + ## Add AREK source code to your project Add [https://github.com/ennioma/arek/tree/master/arek/arek/Arek](https://github.com/ennioma/arek/tree/master/arek/Classes) folder to your project.