Skip to content

Commit e8a79a5

Browse files
authored
Merge pull request #1086 from OneSignal/fix_location_crash
Fixing crash when attempting to get Location
2 parents f23db94 + 64b59e4 commit e8a79a5

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

iOS_SDK/OneSignalSDK/Source/OneSignalLocation.m

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,11 @@ + (void)onFocus:(BOOL)isActive {
154154
}
155155
} else {
156156
//Check if always granted
157-
if ([[NSClassFromString(@"CLLocationManager") performSelector:@selector(authorizationStatus)] intValue] == kCLAuthorizationStatusAuthorizedAlways) {
157+
#pragma clang diagnostic push
158+
#pragma clang diagnostic ignored "-Wpointer-integer-compare"
159+
#pragma clang diagnostic push
160+
#pragma clang diagnostic ignored "-Wint-conversion"
161+
if ([NSClassFromString(@"CLLocationManager") performSelector:@selector(authorizationStatus)] == kCLAuthorizationStatusAuthorizedAlways) {
158162
[OneSignalLocation beginTask];
159163
[requestLocationTimer invalidate];
160164
[self requestLocation];
@@ -186,7 +190,7 @@ + (void)sendAndClearLocationListener:(PromptActionResult)result {
186190

187191
+ (void)sendCurrentAuthStatusToListeners {
188192
id clLocationManagerClass = NSClassFromString(@"CLLocationManager");
189-
CLAuthorizationStatus permissionStatus = [[clLocationManagerClass performSelector:@selector(authorizationStatus)] intValue];
193+
CLAuthorizationStatus permissionStatus = [clLocationManagerClass performSelector:@selector(authorizationStatus)];
190194
if (permissionStatus == kCLAuthorizationStatusNotDetermined)
191195
return;
192196

@@ -203,7 +207,7 @@ + (void)internalGetLocation:(bool)prompt fallbackToSettings:(BOOL)fallback {
203207
// If location permissions was not asked "started" will never be true
204208
if ([self started]) {
205209
// We evaluate the following cases after permissions were asked (denied or given)
206-
CLAuthorizationStatus permissionStatus = [[clLocationManagerClass performSelector:@selector(authorizationStatus)] intValue];
210+
CLAuthorizationStatus permissionStatus = [clLocationManagerClass performSelector:@selector(authorizationStatus)];
207211
BOOL showSettings = prompt && fallback && permissionStatus == kCLAuthorizationStatusDenied;
208212
[OneSignal onesignalLog:ONE_S_LL_DEBUG message:[NSString stringWithFormat:@"internalGetLocation called showSettings: %@", showSettings ? @"YES" : @"NO"]];
209213
// Fallback to settings alert view when the following condition are true:
@@ -224,7 +228,7 @@ + (void)internalGetLocation:(bool)prompt fallbackToSettings:(BOOL)fallback {
224228
return;
225229
}
226230

227-
CLAuthorizationStatus permissionStatus = [[clLocationManagerClass performSelector:@selector(authorizationStatus)] intValue];
231+
CLAuthorizationStatus permissionStatus = [clLocationManagerClass performSelector:@selector(authorizationStatus)];
228232
// return if permission not determined and should not prompt
229233
if (permissionStatus == kCLAuthorizationStatusNotDetermined && !prompt) {
230234
[OneSignal onesignalLog:ONE_S_LL_DEBUG message:@"internalGetLocation kCLAuthorizationStatusNotDetermined."];

0 commit comments

Comments
 (0)