-
Notifications
You must be signed in to change notification settings - Fork 218
Description
Describe the bug
In our analytic reports we see fetchAuthSession failing after a device wakes up, and has been asleep for some time.
Additional info provided the "Additional context" section below.
This is not a new issue for us. It's been showing up intermittently for the last several months, across various versions of amplify-swift.
Steps To Reproduce
There's no clear way to reproduce this. Just sleeping the device and waking it later with the app running does not reproduce this issue. It's something that we almost always notice in the field.
Expected behavior
Network connectivity is available, so fetchAuthSession should return a valid auth token or flag the user as not being signed in.
Amplify Framework Version
2.35.4
Amplify Categories
Auth
Dependency manager
Swift PM
Swift version
5.10
CLI version
12.1.0
Xcode version
15.4 (15F31d)
Relevant log output
No logs are available.
Is this a regression?
No
Regression additional context
No response
Platforms
iOS
OS Version
No specific OS version
Device
No specific device
Specific to simulators
No response
Additional context
Information originally included in response to issue #3540.
We're also seeing behavior in our app which seems to line up with this issues. I don't have full logs unfortunately, only what I've been able to piece together via analytics.
We have the same testers on iOS and Android, and the code is the same across platforms, but we've only ever seen this issue on iOS.
The issue appears to happen when calling fetchAuthSession right after the device wakes up, and has been asleep for some time.
While that call fails attempting to fetch/refresh the auth token, and with Amplify.Hub.subscribe setup, AuthChannelEventName.SESSION_EXPIRED does not appear to be triggered.
The failure to fetchAuthSession reports:
localizedDescription = "The operation couldn’t be completed. (Amplify.AuthError error 1.)"
print() = "network(AuthError: Unknown service error occurred Recovery suggestion: See the attached error for mo" (Truncated by analytics)The only other info I have is a screenshot from a debug build which reports an error of "The network connection was lost." It was attempting to contact a url of "https://cognito-idp.us-west-2.amazonaws.com/".
I don't know how the internal networking is handled, but is the framework attempting to preflight network connectivity before actually making a request?
In general, that goes against the recommended behavior and could lead to an issue where connectivity checking fails because the device radios haven't been powered up yet right after wake.
This may also relate to another closed issue that my coworker pointed out:
#3437Normally you'd just set waitsForConnectivity and a short timeoutIntervalForResource value for the URLSessionConfiguration and issue any calls without any preflight connectivity checking.
Apologies if this has been investigated previously.