@@ -1561,12 +1561,15 @@ + (BOOL)shouldRegisterNow {
15611561 return false ;
15621562
15631563 // Don't make a 2nd on_session if have in inflight one
1564+ onesignal_Log (ONE_S_LL_VERBOSE, [NSString stringWithFormat: @" shouldRegisterNow:waitingForOneSReg: %d " , waitingForOneSReg]);
15641565 if (waitingForOneSReg)
15651566 return false ;
15661567
1568+ onesignal_Log (ONE_S_LL_VERBOSE, [NSString stringWithFormat: @" shouldRegisterNow:isImmediatePlayerCreateOrOnSession: %d " , [self isImmediatePlayerCreateOrOnSession ]]);
15671569 if ([self isImmediatePlayerCreateOrOnSession ])
15681570 return true ;
15691571
1572+ onesignal_Log (ONE_S_LL_VERBOSE, [NSString stringWithFormat: @" shouldRegisterNow:isOnSessionSuccessfulForCurrentState: %d " , isOnSessionSuccessfulForCurrentState]);
15701573 if (isOnSessionSuccessfulForCurrentState)
15711574 return false ;
15721575
@@ -1587,6 +1590,7 @@ + (BOOL)shouldRegisterNow {
15871590}
15881591
15891592+ (void )registerUserAfterDelay {
1593+ [OneSignal onesignal_Log: ONE_S_LL_VERBOSE message: @" registerUserAfterDelay" ];
15901594 [NSObject cancelPreviousPerformRequestsWithTarget: self selector: @selector (registerUser ) object: nil ];
15911595 [OneSignalHelper performSelector: @selector (registerUser ) onMainThreadOnObject: self withObject: nil afterDelay: reattemptRegistrationInterval];
15921596}
@@ -1601,21 +1605,44 @@ + (void)registerUser {
16011605 // return if the user has not granted privacy permissions
16021606 if ([self shouldLogMissingPrivacyConsentErrorWithMethodName: nil ])
16031607 return ;
1604-
1605- // We should delay registration if we are waiting on APNS
1606- // But if APNS hasn't responded within 30 seconds,
1607- // we should continue and register the user.
1608- if (waitingForApnsResponse && initializationTime && [[NSDate date ] timeIntervalSinceDate: initializationTime] < maxApnsWait) {
1608+
1609+ if ([self shouldRegisterUserAfterDelay ]) {
16091610 [self registerUserAfterDelay ];
16101611 return ;
16111612 }
16121613
16131614 if (!serialQueue)
16141615 serialQueue = dispatch_queue_create (" com.onesignal.regiseruser" , DISPATCH_QUEUE_SERIAL);
16151616
1616- dispatch_async (serialQueue, ^{
1617+ [self registerUserNow ];
1618+ }
1619+
1620+ +(void )registerUserNow {
1621+ [OneSignal onesignal_Log: ONE_S_LL_VERBOSE message: @" registerUserNow" ];
1622+
1623+ if (!serialQueue)
1624+ serialQueue = dispatch_queue_create (" com.onesignal.regiseruser" , DISPATCH_QUEUE_SERIAL);
1625+
1626+ dispatch_async (serialQueue, ^{
16171627 [self registerUserInternal ];
1618- });
1628+ });
1629+ }
1630+
1631+ // We should delay registration if we are waiting on APNS
1632+ // But if APNS hasn't responded within 30 seconds (maxApnsWait),
1633+ // we should continue and register the user.
1634+ + (BOOL )shouldRegisterUserAfterDelay {
1635+ [OneSignal onesignal_Log: ONE_S_LL_VERBOSE message: [NSString stringWithFormat: @" registerUser:waitingForApnsResponse: %d " , waitingForApnsResponse]];
1636+ [OneSignal onesignal_Log: ONE_S_LL_VERBOSE message: [NSString stringWithFormat: @" registerUser:initializationTime: %@ " , initializationTime]];
1637+
1638+ // If there isn't an initializationTime yet then the SDK hasn't finished initializing so we should delay
1639+ if (!initializationTime)
1640+ return true ;
1641+
1642+ if (!waitingForApnsResponse)
1643+ return false ;
1644+
1645+ return [[NSDate date ] timeIntervalSinceDate: initializationTime] < maxApnsWait;
16191646}
16201647
16211648+ (OSUserState *)createUserState {
@@ -1697,6 +1724,7 @@ + (OSUserState *)createUserState {
16971724}
16981725
16991726+ (void )registerUserInternal {
1727+ [OneSignal onesignal_Log: ONE_S_LL_VERBOSE message: @" registerUserInternal" ];
17001728 _registerUserFinished = false ;
17011729
17021730 // return if the user has not granted privacy permissions
0 commit comments