The way the notification service currently works is the following:
Notification service receives the raw encrypted payload from push
Notification service decrypts the payload
Notification services passes the decrypted payload to an instance of an FxA client
the FxA client converts the payload into an account event (lets assume it's a send tab)
The notification service puts the tab in the tab queue
The notification service then displays the tab as a notification
When the app wakes up, it waits 5 seconds, then loads all tabs in the tab queue.
The above is mostly okay - however, we have a mechanism to retrieve missed send tabs by polling (in case the push notification never arrived) by passing the tabs in the queue and polling, we have two ways to get send tabs and it's possible for them to race - see https://github.com/mozilla-mobile/firefox-ios/issues/13136
Opening this ticket for myself to change the flow so that the Notification Service does not need the tab queue, and instead sets the polling pref to indicate that the app should hit the FxA server when it wakes up to get the tab.
The way the notification service currently works is the following:
The above is mostly okay - however, we have a mechanism to retrieve missed send tabs by polling (in case the push notification never arrived) by passing the tabs in the queue and polling, we have two ways to get send tabs and it's possible for them to race - see https://github.com/mozilla-mobile/firefox-ios/issues/13136
Opening this ticket for myself to change the flow so that the Notification Service does not need the tab queue, and instead sets the polling pref to indicate that the app should hit the FxA server when it wakes up to get the tab.
┆Issue is synchronized with this Jira Task