Skip to content

Commit 5666fea

Browse files
authored
Merge pull request #979 from OneSignal/fix/register_user_thread_safe
Register User Thread Safety Improvement - For 2.x.x branch
2 parents 9aad5e5 + bc87899 commit 5666fea

File tree

3 files changed

+4
-16
lines changed

3 files changed

+4
-16
lines changed

iOS_SDK/OneSignalSDK/Source/OneSignal.m

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1610,12 +1610,6 @@ + (void)registerUserAfterDelay {
16101610
[OneSignalHelper performSelector:@selector(registerUser) onMainThreadOnObject:self withObject:nil afterDelay:reattemptRegistrationInterval];
16111611
}
16121612

1613-
static dispatch_queue_t serialQueue;
1614-
1615-
+ (dispatch_queue_t) getRegisterQueue {
1616-
return serialQueue;
1617-
}
1618-
16191613
+ (void)registerUser {
16201614
// return if the user has not granted privacy permissions
16211615
if ([self shouldLogMissingPrivacyConsentErrorWithMethodName:nil])
@@ -1631,13 +1625,12 @@ + (void)registerUser {
16311625

16321626
+(void)registerUserNow {
16331627
[OneSignal onesignal_Log:ONE_S_LL_VERBOSE message:@"registerUserNow"];
1634-
1635-
if (!serialQueue)
1636-
serialQueue = dispatch_queue_create("com.onesignal.regiseruser", DISPATCH_QUEUE_SERIAL);
16371628

1638-
dispatch_async(serialQueue, ^{
1629+
// Run on the main queue as it is possible for this to be called from multiple queues.
1630+
// Also some of the code in the method is not thread safe such as _outcomeEventsController.
1631+
[OneSignalHelper dispatch_async_on_main_queue:^{
16391632
[self registerUserInternal];
1640-
});
1633+
}];
16411634
}
16421635

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

iOS_SDK/OneSignalSDK/UnitTests/UnitTestCommonMethods.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ NSString * serverUrlWithPath(NSString *path);
6262

6363
// Expose OneSignal test methods
6464
@interface OneSignal (UN_extra)
65-
+ (dispatch_queue_t) getRegisterQueue;
6665
+ (void)setDelayIntervals:(NSTimeInterval)apnsMaxWait withRegistrationDelay:(NSTimeInterval)registrationDelay;
6766
@end
6867

iOS_SDK/OneSignalSDK/UnitTests/UnitTestCommonMethods.m

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,10 +88,6 @@ + (void)runBackgroundThreads {
8888
if (notifSettingsQueue)
8989
dispatch_sync(notifSettingsQueue, ^{});
9090

91-
registerUserQueue = [OneSignal getRegisterQueue];
92-
if (registerUserQueue)
93-
dispatch_sync(registerUserQueue, ^{});
94-
9591
[OneSignalClientOverrider runBackgroundThreads];
9692

9793
[UNUserNotificationCenterOverrider runBackgroundThreads];

0 commit comments

Comments
 (0)