exponea / exponea-flutter-sdk

MIT License
7 stars 9 forks source link

No campaign event appears with status "delivered" on iOS #1

Closed larsoleheggland closed 1 year ago

larsoleheggland commented 3 years ago

When sending push notifications, only Android users receives the "delivered" campaign event - which makes it hard to calculate click-rates on iOS devices.

Both iOS and Android sucessfully receive the "Clicked" and "Sent" campaign event status.

When running in debug on iOS, the self-check on push notification suceeds - and all push notification sucessfully displays, and works as expected on both device types.

michaela-dev commented 3 years ago

Hi, thanks for the report! We will check it and let you know.

ghost commented 2 years ago

Hi, any news?

adam1929 commented 2 years ago

Hi @ghost, are 'delivered' events are still missing from your reports? Please, how do you implement a Notification extension? https://github.com/exponea/exponea-flutter-sdk/blob/main/documentation/PUSH_IOS.md#notification-service-extension

adam1929 commented 1 year ago

Hi @ghost and @larsoleheggland this is limitation of technology, unfortunatelly. You may read about it here: https://firebase.google.com/docs/cloud-messaging/flutter/receive (just first paragraph) As doc is saying, app has to be reopened. “Background state” is non-deterministic in this case: If app is in background, it may be killed due to some battery-saving app, or by system due to lack of RAM or due to inactivity (I experienced this on iPhone), so it becomes as ‘Terminated’. There is no much difference for Flutter SDK between background and terminated app :-/ ^ so ‘delivered’ events are not tracked from with 100% warranty. On the other hand, ‘clicked’ event are sending because if you click on Notification then app is opened (goes to foreground state) and then everything should be start working normally. So please do not fully rely on ‘delivered’ events for Flutter SDK. Event ‘sent’ is fine to consider, because it means that Push has been sent to valid FCM token and there is only small chance of case, that token is valid and App has been uninstalled - this is ensured by system.