Skip to content

Commit cc67b06

Browse files
committed
Fix idsAvailable not firing a 2nd time
* Fixed issue where idsAvailable would not fire a 2nd time if registrationId the first time
1 parent 13f12eb commit cc67b06

File tree

3 files changed

+11
-3
lines changed

3 files changed

+11
-3
lines changed

OneSignalSDK/onesignal/src/main/java/com/onesignal/OneSignal.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1683,7 +1683,7 @@ public void run() {
16831683
runIdsAvailable.run();
16841684
}
16851685

1686-
private static void fireIdsAvailableCallback() {
1686+
static void fireIdsAvailableCallback() {
16871687
if (idsAvailableHandler != null) {
16881688
OSUtils.runOnMainUIThread(new Runnable() {
16891689
@Override

OneSignalSDK/onesignal/src/main/java/com/onesignal/UserStatePushSynchronizer.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,5 +157,7 @@ protected void fireEventsForUpdateFailure(JSONObject jsonFields) {
157157
protected void onSuccessfulSync(JSONObject jsonFields) {
158158
if (jsonFields.has("email"))
159159
OneSignal.fireEmailUpdateSuccess();
160+
if (jsonFields.has("identifier"))
161+
OneSignal.fireIdsAvailableCallback();
160162
}
161163
}

OneSignalSDK/unittest/src/test/java/com/test/onesignal/MainOneSignalClassRunner.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -591,13 +591,19 @@ public void testInvalidGoogleProjectNumberWithSuccessfulRegisterResponse() throw
591591
// and is testing the same logic.
592592
ShadowPushRegistratorGCM.fail = true;
593593
OneSignalInitWithBadProjectNum();
594-
595594
threadAndTaskWait();
596595
Robolectric.getForegroundThreadScheduler().runOneTask();
597-
assertEquals(-7, ShadowOneSignalRestClient.lastPost.getInt("notification_types"));
598596

597+
assertEquals(-7, ShadowOneSignalRestClient.lastPost.getInt("notification_types"));
599598
// Test that idsAvailable still fires
600599
assertEquals(ShadowOneSignalRestClient.pushUserId, callBackUseId);
600+
assertNull(getCallBackRegId); // Since GCM registration failed, this should be null
601+
602+
// We now get a push token after the device registers with Onesignal,
603+
// the idsAvailable callback should fire a 2nd time with a registrationId automatically
604+
ShadowPushRegistratorGCM.manualFireRegisterForPush();
605+
threadAndTaskWait();
606+
assertEquals(ShadowPushRegistratorGCM.regId, getCallBackRegId);
601607
}
602608

603609
@Test

0 commit comments

Comments
 (0)