Closed AnastasiiaSob closed 2 weeks ago
If you are trying to get the notification ID from a content-available push in the background, Apple does not deliver that id with the callback that we are given to listen for that event. There is a limitation on the Airship SDK where we are dropping the ID if the push is received in the foreground in the callback that we need to expose it to flutter. We can look into addressing that but it will take some time.
@rlepinski yes, the is no notificationId with a content-available push in the background as well as in the foreground. That would be of great value, as our feature implementation depends on the uniqueness check for push notifications based on the notificationId. For Android, there is a field 'com.urbanairship.push.CANONICAL_PUSH_ID' to access the notificationId ID. Is there a workaround for now? Or could you estimate how long it would take to address this issue?
We wont be able to provide you the notification ID in the background for content-available push, only when the device is in the foreground.
A workaround would be to set your own unique ID, then use the getNotifications
method and look for that ID in the extras.
@AnastasiiaSob I don't think we can solve your issue with just adding the foreground ID, that would catch some of it but the majority of the time notifications will be received in the BG. I think instead you should use this solution - https://github.com/urbanairship/airship-flutter/issues/200#issuecomment-2274435829
Then use onPushReceived, onForeground events to pull your data from that store. That would be the most reliable way of getting the list of notifications
@rlepinski thank you for your suggestion! We found out that in onPushReceived
the notifications do have notificationId's if they are accessed through await Airship.push.activeNotifications
. We took it as a workaround for now.
Preliminary Info
What Airship dependencies are you using?
airship_flutter: ^7.7.1
What are the versions of any relevant development tools you are using?
Flutter 3.22.3
Report
What unexpected behavior are you seeing?
After sending a push notification from Airship to my physical iOS device and calling
Airship.push.onPushReceived.listen((event) {...}
I get aPushPayload
Object that contains the propertynotificationId
with a null value. I can see the push notification on my screen and I see the payload in my console. For example:PushPayload( notificationId=null, alert=TEXT from Airship, title=title from airship, subtitle=null, extras={ com.urbanairship.metadata: eyJ2ZXJ...., com.urbanairship.media_attachment: {url: [......] }, ^u: https://www.google.com})
What is the expected behavior?
After sending a push notification from Airship to my physical iOS device and calling
Airship.push.onPushReceived.listen((event) {...}
I assume to get aPushPayload
Object that contains a not-null propertynotificationId
.What are the steps to reproduce the unexpected behavior?
Send a push notification to an iOS device while the app is in foreground and active. Access the
PushPayload
Objectevent.pushPayload
in theonPushReceived
listener. The push notification is not a silent push.Do you have logging for the issue?
In the info above.