[ios] Fix excessive connections for MissedNotifications requests #8643
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Creating a new URLSession every time leads to establishing new connections every time. Even without HTTP2 iOS would normally make a pool of 4 HTTP1 connections. Keeping URLSession around should lead to an upgrade to HTTP2.
APNS will send background update notifications even when the app is in foreground. If many alarms get updated at once the app might receive and enqueue a lot of MissedNotification requests. It does not make sense to download MissedNotification many times but this is not addressed in this commit.
In combination these two factors might lead to a lot of connections established by the client.
This commit also switches to using async-based URLSession APIs and implements a new async-based queue.
Another missing part is using the same URLSession for all requests that the app would make.
Tasks
URLSession
for every request for notificationsURLSession
across the appMissedNotification
when we already know we have the latest data.