Skip to content

Commit 668cad0

Browse files
committed
rm regiseruser queue to fix thread issues
* Removed background queue as some objects such as _outcomeEventsController are not thread safe resulting in some rare crashes due to dangling pointers. * We run on the main queue as registerUser has multiple entries points, so from other queues. - The main queue is where most of the OneSignal code that is not thread safe also runs.
1 parent 930f62d commit 668cad0

File tree

1 file changed

+4
-14
lines changed

1 file changed

+4
-14
lines changed

iOS_SDK/OneSignalSDK/Source/OneSignal.m

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1721,12 +1721,6 @@ + (void)registerUserAfterDelay {
17211721
[OneSignalHelper performSelector:@selector(registerUser) onMainThreadOnObject:self withObject:nil afterDelay:reattemptRegistrationInterval];
17221722
}
17231723

1724-
static dispatch_queue_t serialQueue;
1725-
1726-
+ (dispatch_queue_t)getRegisterQueue {
1727-
return serialQueue;
1728-
}
1729-
17301724
+ (void)registerUser {
17311725
// return if the user has not granted privacy permissions
17321726
if ([self shouldLogMissingPrivacyConsentErrorWithMethodName:nil])
@@ -1737,21 +1731,17 @@ + (void)registerUser {
17371731
return;
17381732
}
17391733

1740-
if (!serialQueue)
1741-
serialQueue = dispatch_queue_create("com.onesignal.regiseruser", DISPATCH_QUEUE_SERIAL);
1742-
17431734
[self registerUserNow];
17441735
}
17451736

17461737
+(void)registerUserNow {
17471738
[OneSignal onesignal_Log:ONE_S_LL_VERBOSE message:@"registerUserNow"];
1748-
1749-
if (!serialQueue)
1750-
serialQueue = dispatch_queue_create("com.onesignal.regiseruser", DISPATCH_QUEUE_SERIAL);
17511739

1752-
dispatch_async(serialQueue, ^{
1740+
// Run on the main queue as it is possible for this to be called from multiple queues.
1741+
// Also some of the code in the method is not thread safe such as _outcomeEventsController.
1742+
[OneSignalHelper dispatch_async_on_main_queue:^{
17531743
[self registerUserInternal];
1754-
});
1744+
}];
17551745
}
17561746

17571747
// We should delay registration if we are waiting on APNS

0 commit comments

Comments
 (0)