The markdown parsing is broken/disabled for release notes. Sorry about that, I'm chasing the source of a crash that's been bringing this website down for the last couple of days.
### Added
- Added the method `requestSSOLink(withURL:, completionHandler:)` and the `.ssoUnavailable` error to the `SwissPassLoginClient`
### Changed
- Updated all SSO endpoints.
### Fixed
### Added
- Added the SwissPass Mobile card number to the `SwissPassMobileCardViewController`.
- Added an optional boolean property `isContactMobilePhoneNumberVerified` to the `UserInfo` struct
- Added the method `cancelLogin()` to the `SwissPassLoginClient`
### Changed
- Removed support for bitcode.
- Changed the SwissPass card number handling.
- Changed the access token expiration date logic to match the Android implementation.
- Changed the SwissPass Mobile QR-Code payload encoding to match the Android implementation.
- Refactored raw byte handling.
### Fixed
- Fixed a memory leak in the `SwissPassMobileClient`.
- Fixed a memory leak in the `SwissPassMobileCardViewController`.
- Fixed a memory leak in the `SwissPassMobileViewController`.
- Fixed a time zone handling in `UserInfo`.
- Fixed a rare crash that occured when the user closed the browser before the login completed
### Fixed
- The `SwissPassMobileClient` uses the correct hostname when setting up SCNetworkReachability.
### Fixed
- The `SwissPassMobileClient` now maps all error types correctly while updating the security element.
### Added
- Added support for OpenId Connect Discovery to load the OpenID provider configuration information. If this fails, a `.providerConfigurationUnavailable` error is returned.
- Added the global function `swissPassClientVersion()` that returns the version of the framework.
- Added support for an identity assurance level on the `SwissPassLoginUser` and on `UserInfo` based on the new enum type `IAL`. Note that currently only IAL1 and IAL2 are supported.
- Added a 2nd view to the `SwissPassMobileCardViewController`.
- Added a new `SwissPassMobileCardViewControllerDelegate` method which is called when the page view controller did finish a transition.
### Changed
- Changed the deployment target to iOS 12
- Removed the previously deprecated parameter `forceRefresh` in `requestToken()`.
- Removed both the `TokenProvider`and `OAuthServer`.
- Removed the typealias `TokenHandler`
- Changed the `ClientFactory` to take a `SwissPassLoginClient` when creating the `SwissPassMobileClient`.
- Changed the app2web SSO mechanism to use the new SSO ticket endpoint.
- Removed support for the `tokenManagement` page.
- Changed the result of `requestRegistration()` to a `.success` only if the registration process was completed successfully, otherwise `SwissPassLoginError.webSessionClosed` is returned.
- Extended `SwissPassLoginError.webSessionClosed` with an optional associated `WebSessionDetail` that provides more information about modifications to the user account.
- Marked `SwissPassMobileViewController` as deprecated.
- Changed the `UserInfo` property `userID` to use the key `sub` instead of `SPIdPUID`
- Changed the `ClientFactory` create methods to throw a `ClientError` if initialization failed.
- Removed the computed property `accountIsLinkedWithCard` on UserInfo.
### Fixed
- The status bar appearance is handled correctly when showing the login window.
### Fixed
- The fare information navigation bar background is set correctly on iOS 15.
### Fixed
- All properties of `SwissPassLoginClient` are now public.
### Changed
- Built using Xcode 13.
### Added
- Token revocation is performed while performing `requestLogout` whenever possible.
- The `SwissPassLoginClient` now provides information about the authenticated user using the optional `SwissPassLoginUser` property, based on the validated ID Token.
### Changed
- If the SwissPass OpenId Provider does not return a new refresh token as part of the Token Response then we do not reuse the previously issued refresh token anymore.
- The parameter `forceRefresh` in `requestToken()` of the `TokenProvider` is now deprecated and should not be used anymore.
- The `SFSafariViewController` is now presented using the `pageSheet` presentation style to improve the user experience.
### Fixed
- A preconditionFailure related to an unexpected callback caused by opening SwissPass pages multiple times in parallel, for example.
### Added
- Support for the Swift Package Manager.
### Fixed
- Minor UI glitch related to the `SwissPassMobileCardViewController`.
- Minor Darkmode UI glitch related to the `SwissPassMobileViewController`.