diff --git a/iOS_SDK/OneSignalSDK/OneSignal.xcodeproj/project.pbxproj b/iOS_SDK/OneSignalSDK/OneSignal.xcodeproj/project.pbxproj index d79acf627..d9848ce8a 100644 --- a/iOS_SDK/OneSignalSDK/OneSignal.xcodeproj/project.pbxproj +++ b/iOS_SDK/OneSignalSDK/OneSignal.xcodeproj/project.pbxproj @@ -47,10 +47,6 @@ 912412131E73342200E41FD7 /* OneSignalAlertViewDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 912411F31E73342200E41FD7 /* OneSignalAlertViewDelegate.m */; }; 912412141E73342200E41FD7 /* OneSignalAlertViewDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 912411F31E73342200E41FD7 /* OneSignalAlertViewDelegate.m */; }; 912412151E73342200E41FD7 /* OneSignalHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 912411F41E73342200E41FD7 /* OneSignalHelper.h */; }; - 912412191E73342200E41FD7 /* OneSignalHTTPClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 912411F61E73342200E41FD7 /* OneSignalHTTPClient.h */; }; - 9124121A1E73342200E41FD7 /* OneSignalHTTPClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 912411F71E73342200E41FD7 /* OneSignalHTTPClient.m */; }; - 9124121B1E73342200E41FD7 /* OneSignalHTTPClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 912411F71E73342200E41FD7 /* OneSignalHTTPClient.m */; }; - 9124121C1E73342200E41FD7 /* OneSignalHTTPClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 912411F71E73342200E41FD7 /* OneSignalHTTPClient.m */; }; 9124121D1E73342200E41FD7 /* OneSignalJailbreakDetection.h in Headers */ = {isa = PBXBuildFile; fileRef = 912411F81E73342200E41FD7 /* OneSignalJailbreakDetection.h */; }; 9124121E1E73342200E41FD7 /* OneSignalJailbreakDetection.m in Sources */ = {isa = PBXBuildFile; fileRef = 912411F91E73342200E41FD7 /* OneSignalJailbreakDetection.m */; }; 9124121F1E73342200E41FD7 /* OneSignalJailbreakDetection.m in Sources */ = {isa = PBXBuildFile; fileRef = 912411F91E73342200E41FD7 /* OneSignalJailbreakDetection.m */; }; @@ -214,8 +210,6 @@ 912411F31E73342200E41FD7 /* OneSignalAlertViewDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OneSignalAlertViewDelegate.m; sourceTree = ""; }; 912411F41E73342200E41FD7 /* OneSignalHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OneSignalHelper.h; sourceTree = ""; }; 912411F51E73342200E41FD7 /* OneSignalHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OneSignalHelper.m; sourceTree = ""; }; - 912411F61E73342200E41FD7 /* OneSignalHTTPClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OneSignalHTTPClient.h; sourceTree = ""; }; - 912411F71E73342200E41FD7 /* OneSignalHTTPClient.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OneSignalHTTPClient.m; sourceTree = ""; }; 912411F81E73342200E41FD7 /* OneSignalJailbreakDetection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OneSignalJailbreakDetection.h; sourceTree = ""; }; 912411F91E73342200E41FD7 /* OneSignalJailbreakDetection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OneSignalJailbreakDetection.m; sourceTree = ""; }; 912411FA1E73342200E41FD7 /* OneSignalLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OneSignalLocation.h; sourceTree = ""; }; @@ -407,8 +401,6 @@ 912411F11E73342200E41FD7 /* OneSignal.m */, 912411F41E73342200E41FD7 /* OneSignalHelper.h */, 912411F51E73342200E41FD7 /* OneSignalHelper.m */, - 912411F61E73342200E41FD7 /* OneSignalHTTPClient.h */, - 912411F71E73342200E41FD7 /* OneSignalHTTPClient.m */, 912411F81E73342200E41FD7 /* OneSignalJailbreakDetection.h */, 912411F91E73342200E41FD7 /* OneSignalJailbreakDetection.m */, 912411FA1E73342200E41FD7 /* OneSignalLocation.h */, @@ -522,7 +514,6 @@ 9124123D1E73342200E41FD7 /* UIApplicationDelegate+OneSignal.h in Headers */, 9124121D1E73342200E41FD7 /* OneSignalJailbreakDetection.h in Headers */, 9129C6B71E89E59B009CB6A0 /* OSPermission.h in Headers */, - 912412191E73342200E41FD7 /* OneSignalHTTPClient.h in Headers */, 912412151E73342200E41FD7 /* OneSignalHelper.h in Headers */, 91F58D7F1E7C7F5F0017D24D /* OneSignalNotificationSettingsIOS10.h in Headers */, 912412391E73342200E41FD7 /* OneSignalWebView.h in Headers */, @@ -684,7 +675,6 @@ 912412261E73342200E41FD7 /* OneSignalMobileProvision.m in Sources */, 454F94F21FAD218000D74CCF /* OneSignalNotificationServiceExtensionHandler.m in Sources */, 912412321E73342200E41FD7 /* OneSignalTracker.m in Sources */, - 9124121A1E73342200E41FD7 /* OneSignalHTTPClient.m in Sources */, 91B6EA411E85D38F00B5CF01 /* OSObservable.m in Sources */, 4529DF0C1FA932AC00CEAB1D /* OneSignalTrackFirebaseAnalytics.m in Sources */, 91F58D891E7C9A240017D24D /* OneSignalNotificationSettingsIOS7.m in Sources */, @@ -720,7 +710,6 @@ 0338566C1FBBDB150002F7C1 /* OneSignalNotificationServiceExtensionHandler.m in Sources */, 912412271E73342200E41FD7 /* OneSignalMobileProvision.m in Sources */, 912412331E73342200E41FD7 /* OneSignalTracker.m in Sources */, - 9124121B1E73342200E41FD7 /* OneSignalHTTPClient.m in Sources */, 91B6EA421E85D38F00B5CF01 /* OSObservable.m in Sources */, 91F58D8A1E7C9A240017D24D /* OneSignalNotificationSettingsIOS7.m in Sources */, 912412231E73342200E41FD7 /* OneSignalLocation.m in Sources */, @@ -757,7 +746,6 @@ 4529DED51FA823B900CEAB1D /* TestHelperFunctions.m in Sources */, 911E2CBD1E398AB3003112A4 /* UnitTests.m in Sources */, 91B6EA431E85D38F00B5CF01 /* OSObservable.m in Sources */, - 9124121C1E73342200E41FD7 /* OneSignalHTTPClient.m in Sources */, 4529DEDE1FA828E500CEAB1D /* NSDateOverrider.m in Sources */, CA08FC871FE99BB4004C445F /* OneSignalClientOverrider.m in Sources */, 912412401E73342200E41FD7 /* UIApplicationDelegate+OneSignal.m in Sources */, diff --git a/iOS_SDK/OneSignalSDK/Source/OSNotificationPayload.m b/iOS_SDK/OneSignalSDK/Source/OSNotificationPayload.m index b6a881504..ed140eaaa 100644 --- a/iOS_SDK/OneSignalSDK/Source/OSNotificationPayload.m +++ b/iOS_SDK/OneSignalSDK/Source/OSNotificationPayload.m @@ -96,6 +96,8 @@ -(void)parseOSDataPayload { [self parseActionButtons:os_data[@"buttons"]]; } else if (os_data[@"buttons"] && [os_data[@"buttons"] isKindOfClass: [NSDictionary class]] && [os_data[@"buttons"][@"o"] isKindOfClass: [NSArray class]]) { [self parseActionButtons:os_data[@"buttons"][@"o"]]; + } else if ([_rawPayload[@"actionbuttons"] isKindOfClass:[NSArray class]]) { + [self parseActionButtons:_rawPayload[@"actionbuttons"]]; } } diff --git a/iOS_SDK/OneSignalSDK/Source/OneSignal.m b/iOS_SDK/OneSignalSDK/Source/OneSignal.m index d6d798dd3..50d8428d4 100755 --- a/iOS_SDK/OneSignalSDK/Source/OneSignal.m +++ b/iOS_SDK/OneSignalSDK/Source/OneSignal.m @@ -28,7 +28,6 @@ #import "OneSignal.h" #import "OneSignalInternal.h" #import "OneSignalTracker.h" -#import "OneSignalHTTPClient.h" #import "OneSignalTrackIAP.h" #import "OneSignalLocation.h" #import "OneSignalReachability.h" @@ -154,15 +153,6 @@ @implementation OneSignal BOOL disableBadgeClearing = NO; BOOL mShareLocation = YES; - - -static OneSignalHTTPClient *_httpClient; -+ (OneSignalHTTPClient*)httpClient { - if (!_httpClient) - _httpClient = [OneSignalHTTPClient new]; - return _httpClient; -} - static OSNotificationDisplayType _inFocusDisplayType = OSNotificationDisplayTypeInAppAlert; + (void)setInFocusDisplayType:(OSNotificationDisplayType)value { NSInteger op = value; @@ -293,7 +283,6 @@ + (void) setWaitingForApnsResponse:(BOOL)value { + (void)clearStatics { app_id = nil; - _httpClient = nil; _osNotificationSettings = nil; waitingForApnsResponse = false; mLastNotificationTypes = -1; diff --git a/iOS_SDK/OneSignalSDK/Source/OneSignalAlertViewDelegate.m b/iOS_SDK/OneSignalSDK/Source/OneSignalAlertViewDelegate.m index 4b0594b97..9420735ce 100644 --- a/iOS_SDK/OneSignalSDK/Source/OneSignalAlertViewDelegate.m +++ b/iOS_SDK/OneSignalSDK/Source/OneSignalAlertViewDelegate.m @@ -99,24 +99,26 @@ - (void)alertView:(UIAlertView*)alertView clickedButtonAtIndex:(NSInteger)button actionType = OSNotificationActionTypeActionTaken; NSMutableDictionary* userInfo = [mMessageDict mutableCopy]; - - if (mMessageDict[@"os_data"]) { + + //fixed for iOS 7, which has 'actionbuttons' as a root property of the dict, not in 'os_data' + if (mMessageDict[@"os_data"] && !mMessageDict[@"actionbuttons"]) { if ([mMessageDict[@"os_data"][@"buttons"] isKindOfClass:[NSDictionary class]]) userInfo[@"actionSelected"] = mMessageDict[@"os_data"][@"buttons"][@"o"][buttonIndex - 1][@"i"]; else userInfo[@"actionSelected"] = mMessageDict[@"os_data"][@"buttons"][buttonIndex - 1][@"i"]; - } - else if (mMessageDict[@"buttons"]) + } else if (mMessageDict[@"buttons"]) { userInfo[@"actionSelected"] = mMessageDict[@"buttons"][buttonIndex - 1][@"i"]; - else { - NSMutableDictionary* customDict = [userInfo[@"custom"] mutableCopy]; - NSMutableDictionary* additionalData = [[NSMutableDictionary alloc] initWithDictionary:customDict[@"a"]]; + } else { + NSMutableDictionary* customDict = userInfo[@"custom"] ? [userInfo[@"custom"] mutableCopy] : [NSMutableDictionary new]; + NSMutableDictionary* additionalData = customDict[@"a"] ? [[NSMutableDictionary alloc] initWithDictionary:customDict[@"a"]] : [NSMutableDictionary new]; - if([additionalData[@"actionButtons"] isKindOfClass:[NSArray class]]) + if([additionalData[@"actionButtons"] isKindOfClass:[NSArray class]]) { additionalData[@"actionSelected"] = additionalData[@"actionButtons"][buttonIndex - 1][@"id"]; - - else if([mMessageDict[@"o"] isKindOfClass:[NSArray class]]) + } else if([mMessageDict[@"o"] isKindOfClass:[NSArray class]]) { additionalData[@"actionSelected"] = mMessageDict[@"o"][buttonIndex -1][@"i"]; + } else if ([mMessageDict[@"actionbuttons"] isKindOfClass:[NSArray class]]) { + additionalData[@"actionSelected"] = mMessageDict[@"actionbuttons"][buttonIndex - 1][@"i"]; + } customDict[@"a"] = additionalData; userInfo[@"custom"] = customDict; diff --git a/iOS_SDK/OneSignalSDK/Source/OneSignalClient.m b/iOS_SDK/OneSignalSDK/Source/OneSignalClient.m index e805b10e1..f9d0266c7 100644 --- a/iOS_SDK/OneSignalSDK/Source/OneSignalClient.m +++ b/iOS_SDK/OneSignalSDK/Source/OneSignalClient.m @@ -28,6 +28,10 @@ #import "OneSignalClient.h" #import "UIApplicationDelegate+OneSignal.h" +@interface OneSignalClient () +@property (strong, nonatomic) NSURLSession *sharedSession; +@end + @implementation OneSignalClient + (OneSignalClient *)sharedClient { @@ -39,15 +43,21 @@ + (OneSignalClient *)sharedClient { return sharedClient; } +-(instancetype)init { + if (self = [super init]) { + _sharedSession = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; + } + + return self; +} + - (void)executeRequest:(OneSignalRequest *)request onSuccess:(OSResultSuccessBlock)successBlock onFailure:(OSFailureBlock)failureBlock { - if (!request.hasAppId) { - [OneSignal onesignal_Log:ONE_S_LL_DEBUG message:@"HTTP Requests must contain app_id parameter"]; + if (![self validRequest:request]) { + [self handleMissingAppIdError:failureBlock withRequest:request]; return; } - let sess = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; - - let task = [sess dataTaskWithRequest:request.request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { + let task = [self.sharedSession dataTaskWithRequest:request.request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { [OneSignalClient handleJSONNSURLResponse:response data:data error:error onSuccess:successBlock onFailure:failureBlock]; }]; @@ -55,19 +65,17 @@ - (void)executeRequest:(OneSignalRequest *)request onSuccess:(OSResultSuccessBlo } - (void)executeSynchronousRequest:(OneSignalRequest *)request onSuccess:(OSResultSuccessBlock)successBlock onFailure:(OSFailureBlock)failureBlock { - if (!request.hasAppId) { - [OneSignal onesignal_Log:ONE_S_LL_DEBUG message:@"HTTP Requests must contain app_id parameter"]; + if (![self validRequest:request]) { + [self handleMissingAppIdError:failureBlock withRequest:request]; return; } - let sess = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; - __block NSURLResponse *httpResponse; __block NSError *httpError; dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); - let dataTask = [sess dataTaskWithRequest:request.request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { + let dataTask = [self.sharedSession dataTaskWithRequest:request.request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { httpResponse = response; httpError = error; @@ -81,6 +89,24 @@ - (void)executeSynchronousRequest:(OneSignalRequest *)request onSuccess:(OSResul [OneSignalClient handleJSONNSURLResponse:httpResponse data:nil error:httpError onSuccess:successBlock onFailure:failureBlock]; } +- (void)handleMissingAppIdError:(OSFailureBlock)failureBlock withRequest:(OneSignalRequest *)request { + let errorDescription = [NSString stringWithFormat:@"HTTP Request (%@) must contain app_id parameter", NSStringFromClass([request class])]; + + [OneSignal onesignal_Log:ONE_S_LL_ERROR message:errorDescription]; + + failureBlock([NSError errorWithDomain:@"OneSignalError" code:-1 userInfo:@{@"error" : errorDescription}]); +} + +- (BOOL)validRequest:(OneSignalRequest *)request { + if (request.missingAppId) { + return false; + } + + [OneSignal onesignal_Log:ONE_S_LL_VERBOSE message:[NSString stringWithFormat:@"HTTP Request (%@) with URL: %@, with parameters: %@", NSStringFromClass([request class]), request.request.URL.absoluteString, request.parameters]]; + + return true; +} + + (void)handleJSONNSURLResponse:(NSURLResponse*) response data:(NSData*) data error:(NSError*) error onSuccess:(OSResultSuccessBlock)successBlock onFailure:(OSFailureBlock)failureBlock { @@ -106,8 +132,7 @@ + (void)handleJSONNSURLResponse:(NSURLResponse*) response data:(NSData*) data er else successBlock(nil); } - } - else if (failureBlock != nil) { + } else if (failureBlock != nil) { if (innerJson != nil && error == nil) failureBlock([NSError errorWithDomain:@"OneSignalError" code:statusCode userInfo:@{@"returned" : innerJson}]); else if (error != nil) diff --git a/iOS_SDK/OneSignalSDK/Source/OneSignalHTTPClient.h b/iOS_SDK/OneSignalSDK/Source/OneSignalHTTPClient.h deleted file mode 100755 index 90422998f..000000000 --- a/iOS_SDK/OneSignalSDK/Source/OneSignalHTTPClient.h +++ /dev/null @@ -1,34 +0,0 @@ -/** - * Modified MIT License - * - * Copyright 2016 OneSignal - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * 1. The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * 2. All copies of substantial portions of the Software may only be used in connection - * with services provided by OneSignal. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -@interface OneSignalHTTPClient : NSObject - -@property (readonly, nonatomic) NSURL *baseURL; - -- (NSMutableURLRequest*) requestWithMethod:(NSString*)method - path:(NSString*)path; -@end diff --git a/iOS_SDK/OneSignalSDK/Source/OneSignalHTTPClient.m b/iOS_SDK/OneSignalSDK/Source/OneSignalHTTPClient.m deleted file mode 100755 index 650a2d86a..000000000 --- a/iOS_SDK/OneSignalSDK/Source/OneSignalHTTPClient.m +++ /dev/null @@ -1,60 +0,0 @@ -/** - * Modified MIT License - * - * Copyright 2016 OneSignal - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * 1. The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * 2. All copies of substantial portions of the Software may only be used in connection - * with services provided by OneSignal. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#import -#import "OneSignalHTTPClient.h" - -#define DEFAULT_PUSH_HOST @"https://onesignal.com/api/v1/" - -@interface OneSignalHTTPClient() -@property (readwrite, nonatomic) NSURL *baseURL; -@end - -@implementation OneSignalHTTPClient - -@synthesize baseURL = _baseURL; - -- (id)init { - self = [super init]; - if (self) - self.baseURL = [NSURL URLWithString:DEFAULT_PUSH_HOST]; - return self; -} - -- (NSMutableURLRequest*) requestWithMethod:(NSString*)method - path:(NSString*)path { - - NSURL* url = [NSURL URLWithString:path relativeToURL:self.baseURL]; - NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url]; - [request setHTTPMethod:method]; - [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; - [request setValue:@"application/json" forHTTPHeaderField:@"Accept"]; - - return request; -} - -@end diff --git a/iOS_SDK/OneSignalSDK/Source/OneSignalHelper.m b/iOS_SDK/OneSignalSDK/Source/OneSignalHelper.m index 9730d1dd7..c4fd20d54 100644 --- a/iOS_SDK/OneSignalSDK/Source/OneSignalHelper.m +++ b/iOS_SDK/OneSignalSDK/Source/OneSignalHelper.m @@ -117,6 +117,8 @@ + (BOOL)downloadItemAtURL:(NSURL *)url toFile:(NSString *)localPath error:(NSErr [task resume]; + [session finishTasksAndInvalidate]; + while (![delegate isDone]) { [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1.0]]; } diff --git a/iOS_SDK/OneSignalSDK/Source/OneSignalLocation.m b/iOS_SDK/OneSignalSDK/Source/OneSignalLocation.m index 5d61f8b95..433e195a5 100644 --- a/iOS_SDK/OneSignalSDK/Source/OneSignalLocation.m +++ b/iOS_SDK/OneSignalSDK/Source/OneSignalLocation.m @@ -28,7 +28,6 @@ #import #import "OneSignalLocation.h" -#import "OneSignalHTTPClient.h" #import "OneSignalHelper.h" #import "OneSignal.h" #import "OneSignalClient.h" @@ -219,13 +218,13 @@ - (void)locationManager:(id)manager didUpdateLocations:(NSArray *)locations { [invocation invoke]; [invocation getReturnValue:&cords]; - os_last_location *currentLocation = (os_last_location*)malloc(sizeof(os_last_location)); - currentLocation->verticalAccuracy = [[location valueForKey:@"verticalAccuracy"] doubleValue]; - currentLocation->horizontalAccuracy = [[location valueForKey:@"horizontalAccuracy"] doubleValue]; - currentLocation->cords = cords; - @synchronized(OneSignalLocation.mutexObjectForLastLocation) { - lastLocation = currentLocation; + if (!lastLocation) + lastLocation = (os_last_location*)malloc(sizeof(os_last_location)); + + lastLocation->verticalAccuracy = [[location valueForKey:@"verticalAccuracy"] doubleValue]; + lastLocation->horizontalAccuracy = [[location valueForKey:@"horizontalAccuracy"] doubleValue]; + lastLocation->cords = cords; } if(!sendLocationTimer) @@ -236,6 +235,10 @@ - (void)locationManager:(id)manager didUpdateLocations:(NSArray *)locations { } +-(void)locationManager:(id)manager didFailWithError:(NSError *)error { + [OneSignal onesignal_Log:ONE_S_LL_ERROR message:[NSString stringWithFormat:@"CLLocationManager did fail with error: %@", error]]; +} + + (void)resetSendTimer { NSTimeInterval requiredWaitTime = [UIApplication sharedApplication].applicationState == UIApplicationStateActive ? foregroundSendLocationWaitTime : backgroundSendLocationWaitTime ; sendLocationTimer = [NSTimer scheduledTimerWithTimeInterval:requiredWaitTime target:self selector:@selector(sendLocation) userInfo:nil repeats:NO]; diff --git a/iOS_SDK/OneSignalSDK/Source/OneSignalRequest.h b/iOS_SDK/OneSignalSDK/Source/OneSignalRequest.h index a32440f65..fdc363383 100644 --- a/iOS_SDK/OneSignalSDK/Source/OneSignalRequest.h +++ b/iOS_SDK/OneSignalSDK/Source/OneSignalRequest.h @@ -39,8 +39,8 @@ typedef enum {GET, POST, HEAD, PUT, DELETE, OPTIONS, CONNECT, TRACE} HTTPMethod; @property (nonatomic) HTTPMethod method; @property (nonatomic, nonnull) NSString *path; @property (nonatomic, nullable) NSDictionary *parameters; +-(BOOL)missingAppId; //for requests that don't require an appId parameter, the subclass should override this method and return false -(NSMutableURLRequest * _Nonnull )request; --(BOOL)hasAppId; @end #endif diff --git a/iOS_SDK/OneSignalSDK/Source/OneSignalRequest.m b/iOS_SDK/OneSignalSDK/Source/OneSignalRequest.m index 834f00750..e2305db82 100644 --- a/iOS_SDK/OneSignalSDK/Source/OneSignalRequest.m +++ b/iOS_SDK/OneSignalSDK/Source/OneSignalRequest.m @@ -65,8 +65,8 @@ -(NSMutableURLRequest *)request { return request; } --(BOOL)hasAppId { - return self.parameters[@"app_id"] != nil && [self.parameters[@"app_id"] length] > 0; +-(BOOL)missingAppId { + return self.parameters[@"app_id"] == nil || [self.parameters[@"app_id"] length] == 0; } -(void)attachBodyToRequest:(NSMutableURLRequest *)request withParameters:(NSDictionary *)parameters { diff --git a/iOS_SDK/OneSignalSDK/Source/OneSignalTracker.m b/iOS_SDK/OneSignalSDK/Source/OneSignalTracker.m index 30a9f087f..0df368cc6 100644 --- a/iOS_SDK/OneSignalSDK/Source/OneSignalTracker.m +++ b/iOS_SDK/OneSignalSDK/Source/OneSignalTracker.m @@ -29,7 +29,6 @@ #import "OneSignalTracker.h" #import "OneSignalHelper.h" -#import "OneSignalHTTPClient.h" #import "OneSignalWebView.h" #import "OneSignalClient.h" #import "Requests.h" diff --git a/iOS_SDK/OneSignalSDK/Source/Requests.m b/iOS_SDK/OneSignalSDK/Source/Requests.m index 44aeffd64..07d5e0a1d 100644 --- a/iOS_SDK/OneSignalSDK/Source/Requests.m +++ b/iOS_SDK/OneSignalSDK/Source/Requests.m @@ -61,6 +61,10 @@ + (instancetype)withUserId:(NSString *)userId appId:(NSString *)appId { return request; } + +-(BOOL)missingAppId { + return false; //this request doesn't have an app ID parameter +} @end @implementation OSRequestSendTagsToServer