Skip to content
12 changes: 0 additions & 12 deletions iOS_SDK/OneSignalSDK/OneSignal.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -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 */; };
Expand Down Expand Up @@ -214,8 +210,6 @@
912411F31E73342200E41FD7 /* OneSignalAlertViewDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OneSignalAlertViewDelegate.m; sourceTree = "<group>"; };
912411F41E73342200E41FD7 /* OneSignalHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OneSignalHelper.h; sourceTree = "<group>"; };
912411F51E73342200E41FD7 /* OneSignalHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OneSignalHelper.m; sourceTree = "<group>"; };
912411F61E73342200E41FD7 /* OneSignalHTTPClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OneSignalHTTPClient.h; sourceTree = "<group>"; };
912411F71E73342200E41FD7 /* OneSignalHTTPClient.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OneSignalHTTPClient.m; sourceTree = "<group>"; };
912411F81E73342200E41FD7 /* OneSignalJailbreakDetection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OneSignalJailbreakDetection.h; sourceTree = "<group>"; };
912411F91E73342200E41FD7 /* OneSignalJailbreakDetection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OneSignalJailbreakDetection.m; sourceTree = "<group>"; };
912411FA1E73342200E41FD7 /* OneSignalLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OneSignalLocation.h; sourceTree = "<group>"; };
Expand Down Expand Up @@ -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 */,
Expand Down Expand Up @@ -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 */,
Expand Down Expand Up @@ -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 */,
Expand Down Expand Up @@ -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 */,
Expand Down Expand Up @@ -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 */,
Expand Down
2 changes: 2 additions & 0 deletions iOS_SDK/OneSignalSDK/Source/OSNotificationPayload.m
Original file line number Diff line number Diff line change
Expand Up @@ -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"]];
}
}

Expand Down
11 changes: 0 additions & 11 deletions iOS_SDK/OneSignalSDK/Source/OneSignal.m
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -293,7 +283,6 @@ + (void) setWaitingForApnsResponse:(BOOL)value {

+ (void)clearStatics {
app_id = nil;
_httpClient = nil;
_osNotificationSettings = nil;
waitingForApnsResponse = false;
mLastNotificationTypes = -1;
Expand Down
22 changes: 12 additions & 10 deletions iOS_SDK/OneSignalSDK/Source/OneSignalAlertViewDelegate.m
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
49 changes: 37 additions & 12 deletions iOS_SDK/OneSignalSDK/Source/OneSignalClient.m
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@
#import "OneSignalClient.h"
#import "UIApplicationDelegate+OneSignal.h"

@interface OneSignalClient ()
@property (strong, nonatomic) NSURLSession *sharedSession;
@end

@implementation OneSignalClient

+ (OneSignalClient *)sharedClient {
Expand All @@ -39,35 +43,39 @@ + (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];
}];

[task resume];
}

- (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;

Expand All @@ -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 {

Expand All @@ -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)
Expand Down
34 changes: 0 additions & 34 deletions iOS_SDK/OneSignalSDK/Source/OneSignalHTTPClient.h

This file was deleted.

60 changes: 0 additions & 60 deletions iOS_SDK/OneSignalSDK/Source/OneSignalHTTPClient.m

This file was deleted.

2 changes: 2 additions & 0 deletions iOS_SDK/OneSignalSDK/Source/OneSignalHelper.m
Original file line number Diff line number Diff line change
Expand Up @@ -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]];
}
Expand Down
17 changes: 10 additions & 7 deletions iOS_SDK/OneSignalSDK/Source/OneSignalLocation.m
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
#import <UIKit/UIKit.h>

#import "OneSignalLocation.h"
#import "OneSignalHTTPClient.h"
#import "OneSignalHelper.h"
#import "OneSignal.h"
#import "OneSignalClient.h"
Expand Down Expand Up @@ -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)
Expand All @@ -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];
Expand Down
Loading