OneSignal / OneSignal-Cordova-SDK

OneSignal is a free push notification service for mobile apps. This plugin makes it easy to integrate your Ionic, PhoneGap CLI, PhoneGap Build, Cordova, or Sencha Touch app with OneSignal. Supports Android, iOS, and Amazon's Fire OS platforms. https://onesignal.com
Other
251 stars 199 forks source link

[Bug]: (android): pushSubscription listener not resolved #993

Open EinfachHans opened 6 months ago

EinfachHans commented 6 months ago

What happened?

Hey there,

i have the following logic in my app on startup:

  1. Check if there is a token via await OneSignal.User.pushSubscription.getIdAsync();

If the token is not existent ( i understand why this is possible - read here) i add a listener via OneSignal.User.pushSubscription.addEventListener('change', listener);

This works well on ios, but on android it seems to never resolve when the previous subscription was deleted. In this case the listener never gets resolved. But i can see the new created subscription id on the onesignal dashboard. Even an app restart does not work. I have to delete and reinstall the app. Then a new id is created and the listener resolves.

Steps to reproduce?

Let me know if you need a repro for this and to best set it up.

What did you expect to happen?

Even after the subscription is deleted, the listener should resolve when the new id is existent.

OneSignal Cordova SDK version

5.1.3

Which platform(s) are affected?

Relevant log output

No response

Code of Conduct

jennantilla commented 6 months ago

Hello @EinfachHans thanks for reaching out! Yes, if you could please provide reproduction steps we'll dig into this deeper.

Appreciate it!

EinfachHans commented 6 months ago

Hey @jennantilla,

created a repo for this issue: https://github.com/EinfachHans/onesignal-issue

Steps to reproduce:

  1. Check out the repo
  2. In the onesignal.service.ts: Add your correct app id
  3. Run ionic capacitor build android
  4. In Android Studio: Run the app on a device
  5. The app will start and initialize correctly, a subscription is created and visible in the dashboard
  6. Close the app
  7. Delete the subscription in the dashboard
  8. Restart the app
  9. Now there are two possible cases:
    • The Subscription id was kinda cached and the previous and now deleted id is logged. Restart the app in this case...
    • The error occurs: The log [OneSignal]: No token exists, adding listener... will be printed, but the listener will never be resolved and o token is available frontend side. On the other hand there is a new subscription created in the dashboard. On most cases a restart does not solve the problem, only a re-install does.

Let me know if this works for you to reproduce the problem 😊

TierryBr commented 1 week ago

This problem still occurs, is there any solution? @EinfachHans @jennantilla