From d6369a81062c89436ba898d4d0855110750d025b Mon Sep 17 00:00:00 2001 From: Maxime Le Moine Date: Wed, 17 Oct 2018 15:15:52 +0200 Subject: [PATCH 1/4] Bump deployment target to iOS 8 --- KeenClient.podspec | 2 +- KeenClient.xcodeproj/project.pbxproj | 12 ++++-------- KeenClient/KeenClient.m | 2 +- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/KeenClient.podspec b/KeenClient.podspec index b42f9fa..c427acc 100644 --- a/KeenClient.podspec +++ b/KeenClient.podspec @@ -2,7 +2,7 @@ Pod::Spec.new do |spec| spec.name = 'KeenClient' spec.version = '3.7.0' spec.license = { :type => 'MIT' } - spec.ios.deployment_target = '6.0' + spec.ios.deployment_target = '8.0' spec.osx.deployment_target = '10.9' spec.homepage = 'https://github.com/keenlabs/KeenClient-iOS' diff --git a/KeenClient.xcodeproj/project.pbxproj b/KeenClient.xcodeproj/project.pbxproj index 50056ef..0476f43 100644 --- a/KeenClient.xcodeproj/project.pbxproj +++ b/KeenClient.xcodeproj/project.pbxproj @@ -890,7 +890,6 @@ 0111015814EF71FB009794A5 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - IPHONEOS_DEPLOYMENT_TARGET = 7.0; ONLY_ACTIVE_ARCH = NO; PRODUCT_NAME = "$(TARGET_NAME)"; }; @@ -899,7 +898,6 @@ 0111015914EF71FB009794A5 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - IPHONEOS_DEPLOYMENT_TARGET = 7.0; ONLY_ACTIVE_ARCH = NO; PRODUCT_NAME = "$(TARGET_NAME)"; }; @@ -923,7 +921,7 @@ GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; }; @@ -939,7 +937,7 @@ GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; }; @@ -949,6 +947,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; DSTROOT = /tmp/KeenClient.dst; GCC_GENERATE_TEST_COVERAGE_FILES = NO; GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO; @@ -957,7 +956,6 @@ GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; "GCC_PREPROCESSOR_DEFINITIONS[arch=*]" = "$(inherited)"; GCC_THUMB_SUPPORT = NO; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; LIBRARY_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)/Library\"", @@ -973,11 +971,11 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; DSTROOT = /tmp/KeenClient.dst; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "$(PROJECT_DIR)/KeenClient/KeenClient-Prefix.pch"; GCC_THUMB_SUPPORT = NO; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; LIBRARY_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)/Library\"", @@ -1076,7 +1074,6 @@ GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; MACOSX_DEPLOYMENT_TARGET = 10.9; ONLY_ACTIVE_ARCH = NO; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1114,7 +1111,6 @@ GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; MACOSX_DEPLOYMENT_TARGET = 10.9; ONLY_ACTIVE_ARCH = NO; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/KeenClient/KeenClient.m b/KeenClient/KeenClient.m index 774c411..70df424 100644 --- a/KeenClient/KeenClient.m +++ b/KeenClient/KeenClient.m @@ -340,7 +340,7 @@ - (void)refreshCurrentLocation { if ([KeenClient isLocationAuthorized:clAuthStatus]) { [self startMonitoringLocation]; } -#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000 +#if TARGET_OS_IPHONE // Else, try and request permission for that. else if (geoLocationRequestEnabled && [self.locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) { From 3db224197b845dda260a3ab022052240342f4b6d Mon Sep 17 00:00:00 2001 From: Maxime Le Moine Date: Wed, 17 Oct 2018 15:19:31 +0200 Subject: [PATCH 2/4] Fix prototypes warnings --- KeenClient.xcodeproj/project.pbxproj | 2 ++ KeenClient/KIOUploader.h | 2 +- KeenClient/KIOUploader.m | 6 +++--- KeenClient/KeenClient.h | 2 +- KeenClient/KeenClient.m | 2 +- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/KeenClient.xcodeproj/project.pbxproj b/KeenClient.xcodeproj/project.pbxproj index 0476f43..ec29f76 100644 --- a/KeenClient.xcodeproj/project.pbxproj +++ b/KeenClient.xcodeproj/project.pbxproj @@ -907,6 +907,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_WARN_STRICT_PROTOTYPES = YES; COPY_PHASE_STRIP = NO; ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; @@ -931,6 +932,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_WARN_STRICT_PROTOTYPES = YES; COPY_PHASE_STRIP = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_VERSION = ""; diff --git a/KeenClient/KIOUploader.h b/KeenClient/KIOUploader.h index 5e8a61d..12bf41a 100644 --- a/KeenClient/KIOUploader.h +++ b/KeenClient/KIOUploader.h @@ -23,6 +23,6 @@ - (instancetype)initWithNetwork:(KIONetwork *)network andStore:(KIODBStore *)store; // Upload events in the store for a given project -- (void)uploadEventsForConfig:(KeenClientConfig *)config completionHandler:(void (^)())completionHandler; +- (void)uploadEventsForConfig:(KeenClientConfig *)config completionHandler:(void (^)(void))completionHandler; @end diff --git a/KeenClient/KIOUploader.m b/KeenClient/KIOUploader.m index 2cc78cd..b51b69c 100644 --- a/KeenClient/KIOUploader.m +++ b/KeenClient/KIOUploader.m @@ -20,7 +20,7 @@ @interface KIOUploader () - (BOOL)isNetworkConnected; -- (void)runUploadFinishedBlock:(void (^)())block; +- (void)runUploadFinishedBlock:(void (^)(void))block; /** Handles the HTTP response from the Keen Event API. This involves deserializing the JSON response @@ -151,7 +151,7 @@ - (BOOL)isNetworkConnected { return [hostReachability KIOcurrentReachabilityStatus] != NotReachable; } -- (void)uploadEventsForConfig:(KeenClientConfig *)config completionHandler:(void (^)())completionHandler { +- (void)uploadEventsForConfig:(KeenClientConfig *)config completionHandler:(void (^)(void))completionHandler { dispatch_async(self.uploadQueue, ^{ if (![self isNetworkConnected]) { [self runUploadFinishedBlock:completionHandler]; @@ -207,7 +207,7 @@ - (void)uploadEventsForConfig:(KeenClientConfig *)config completionHandler:(void }); } -- (void)runUploadFinishedBlock:(void (^)())block { +- (void)runUploadFinishedBlock:(void (^)(void))block { if (block) { KCLogVerbose(@"Running user-specified block."); block(); diff --git a/KeenClient/KeenClient.h b/KeenClient/KeenClient.h index 5464aa1..40d21ac 100644 --- a/KeenClient/KeenClient.h +++ b/KeenClient/KeenClient.h @@ -327,7 +327,7 @@ typedef void (^AnalysisCompletionBlock)(NSData *responseData, NSURLResponse *res @param block The block to be executed once uploading is finished, regardless of whether or not the upload succeeded. The block is also called when no upload was necessary because no events were captured. */ -- (void)uploadWithFinishedBlock:(void (^)())block; +- (void)uploadWithFinishedBlock:(void (^)(void))block; /** Refresh the current geo location. The Keen Client only gets geo at the beginning of each session (i.e. when the client diff --git a/KeenClient/KeenClient.m b/KeenClient/KeenClient.m index 70df424..5f88574 100644 --- a/KeenClient/KeenClient.m +++ b/KeenClient/KeenClient.m @@ -563,7 +563,7 @@ - (void)importFileData { [KIOFileStore importFileDataWithProjectID:self.config.projectID]; } -- (void)uploadWithFinishedBlock:(void (^)())block { +- (void)uploadWithFinishedBlock:(void (^)(void))block { [self.uploader uploadEventsForConfig:self.config completionHandler:block]; } From ab9392bfedd2339da3e6685e19e47de82909d662 Mon Sep 17 00:00:00 2001 From: Maxime Le Moine Date: Wed, 17 Oct 2018 15:24:52 +0200 Subject: [PATCH 3/4] Disable 'Block implicitly retains 'self' warnings in podspec --- KeenClient.podspec | 3 +++ 1 file changed, 3 insertions(+) diff --git a/KeenClient.podspec b/KeenClient.podspec index c427acc..bd6d776 100644 --- a/KeenClient.podspec +++ b/KeenClient.podspec @@ -23,6 +23,9 @@ Pod::Spec.new do |spec| spec.public_header_files = 'KeenClient/*.h' spec.requires_arc = true spec.frameworks = 'SystemConfiguration', 'CoreLocation', 'CFNetwork' + spec.pod_target_xcconfig = { + 'CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF' => 'NO', + } spec.subspec 'keen_sqlite' do |ks| ks.source_files = 'Library/sqlite-amalgamation/*.{h,c}' From a246a2310233e9f5e6b93f80b27c0ed82cb80432 Mon Sep 17 00:00:00 2001 From: Maxime Le Moine Date: Wed, 17 Oct 2018 15:29:41 +0200 Subject: [PATCH 4/4] Update deprecated CLLocationManagerDelegate method --- KeenClient.xcodeproj/project.pbxproj | 2 ++ KeenClient/KeenClient.m | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/KeenClient.xcodeproj/project.pbxproj b/KeenClient.xcodeproj/project.pbxproj index ec29f76..41aac3c 100644 --- a/KeenClient.xcodeproj/project.pbxproj +++ b/KeenClient.xcodeproj/project.pbxproj @@ -907,6 +907,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; COPY_PHASE_STRIP = NO; ENABLE_TESTABILITY = YES; @@ -932,6 +933,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; COPY_PHASE_STRIP = YES; GCC_C_LANGUAGE_STANDARD = gnu99; diff --git a/KeenClient/KeenClient.m b/KeenClient/KeenClient.m index 5f88574..c01c5ab 100644 --- a/KeenClient/KeenClient.m +++ b/KeenClient/KeenClient.m @@ -378,8 +378,8 @@ + (BOOL)isLocationAuthorized:(CLAuthorizationStatus)status { // Delegate method from the CLLocationManagerDelegate protocol. - (void)locationManager:(CLLocationManager *)manager - didUpdateToLocation:(CLLocation *)newLocation - fromLocation:(CLLocation *)oldLocation { + didUpdateLocations:(NSArray *)locations { + CLLocation *newLocation = locations.lastObject; // If it's a relatively recent event, turn off updates to save power NSDate *eventDate = newLocation.timestamp; NSTimeInterval howRecent = [eventDate timeIntervalSinceNow];