Releases: tink-ab/tink-link-ios
Releases · tink-ab/tink-link-ios
Tink Link iOS 1.2.0
- Improved the accessibility support.
- Added VoiceOver support to make TinkLink more accessible to users.
- Support dynamic type to scaling fonts automatically.
- Updated the layout to better support iPhone landscape usage.
- Updated the layout to better support iPad usage.
- Updated the QR code color to use
Color.label
. - Updated the sorting order of the providers with different login type.
- Updated the business Provider icon.
- Updated to always show Tink logos when aggregate account with Tink license.
- Improved the error handling in case when trying to use permanent user feature without user session is set #40.
- Fixed the cancel button not responsive issue mentioned in #40.
- Removed the Kingfisher dependency.
Tink Link iOS 1.1.0
- Added support for specifying refreshable items when aggregating with an existing user.
let operation: TinkLinkViewController.Operation = .create( providerPredicate: .kinds(.default), refreshableItems: [.identityData, .loanAccounts] ) let tinkLinkViewController = TinkLinkViewController(operation: operation) { result in do { let credentials = try result.get() } catch { // Handle any errors } }
- Fixed a bug where the cancel button didn't work after some error alerts had been presented.
Tink Link iOS 1.0.0
TinkLinkUI
- Adds a new
fields
option to pre-fill one or more fields in the credentials form.tinkLinkViewController.prefill = .fields([ "username": .init(value: "tink", isEditable: false), "password": .init(value: "tink-1234", isEditable: false) ])
- Fixed the swipe to go back gesture.
TinkLink
- Added a new
picker
input type to theForm.Field.Attributes
. If a field has this type then the associated value will contain a list of options that the user should select from. - The
authenticationUserType
property in theProvider
model has been deprecated and is replaced byfinanceServices
. TheProviderTree
has been updated to reflect this change by replacing theauthenticationUserTypes
node with a newfinancialServices
node.
This release also removes support for Carthage dependency manager. Refer to the installation instructions for other ways to install Tink Link.
For more information about what has changed in the 1.0 release, refer to the Migration Guide.
Tink Link iOS 0.18.1
TinkLink and TinkLinkUI
- Added the manual integration instructions.
- Improved translations.
TinkLinkUI
- Added more detailed instructions on the redirect screen for providers that need to redirect to a third-party app.
- Updated the credentials field validation error text color.
Tink Link iOS 1.0.0 Release Candidate 3
- Includes the changes from Tink Link iOS 0.18.0.
Tink Link iOS 0.18.0
- Added
releaseStatus
property to theProvider
model which indicates providers that are inBETA
. - Added a tag to provider lists to show which ones are in
BETA
. - Added
failedToAddCredentials
error case toTinkLinkError
. This error is returned in theTinkLinkViewController
's completion handler when the user has failed to add credentials and then taps the cancel button. The error has an associated value of errors by credentials ID. - Added
errorsByCredentialsID
property toTinkLinkViewController
. This dictionary is updated when there's an error adding a credentials.
You can use the error or the property to delete any credentials that failed to be added by the TinkLinkViewController
.
do {
let addedCredentials = try result.get()
for (id, error) in tinkLinkViewController.errorsByCredentialsID {
// Code to delete credentials with id
}
} catch TinkLinkError.failedToAddCredentials(let errorsByCredentialsID) {
for (id, error) in errorsByCredentialsID {
// Code to delete credentials with id
}
} catch {
// Handle error
}
Tink Link iOS 1.0.0 Release Candidate 2
ThirdPartyAppAuthenticationTask.Error
andSupplementInformationTask.Error
have been replaced by new errors inTinkLinkError
.
Tink Link iOS 0.17.3
- Fixed icon position in back button.
- Updated color of line in text fields.
Tink Link iOS 0.17.2
- Fixed a bug where the status bar style was wrong when refreshing credentials using a dark navigation bar background color.
- Added more translations for error handling if the third-party authentication app needs to be downloaded or upgraded.
Tink Link iOS 1.0.0 Release Candidate 1
TinkLinkUI
TinkLinkViewController
has new initializers.- If aggregating with a temporary user, pass a
TinkLinkConfiguration
instead of a configuredTink
instance:let scopes: [Scope] = [.transactions(.read), .accounts(.read)] let tinkLinkViewController = TinkLinkViewController(configuration: configuration, market: "SE", scopes: scopes) { result in // Handle result } // Present view controller
- If aggregating with an existing user, configure the
userSession
on theTink
instance instead of instantiating theTinkLinkViewController
with aUserSession
:Tink.shared.userSession = .accessToken("USER_ACCESS_TOKEN") let tinkLinkViewController = TinkLinkViewController { result in // Handle result } // Present view controller
- If aggregating using an
AuthorizationCode
, authenticate the user before instantiating theTinkLinkViewController
using the same initializer as above.Tink.shared.authenticateUser(authorizationCode: "AUTHORIZATION_CODE") { result in do { let accessToken = try result.get() DispatchQueue.main.async { Tink.shared.userSession = .accessToken(accessToken.rawValue) let tinkLinkViewController = TinkLinkViewController { result in // Handle result } // Present view controller } } catch { // Handle error } }
- If aggregating with a temporary user, pass a
- The method for handling redirects is now a static method. Use
Tink.open(_:completion:)
instead of, for exampleTink.shared.open(_:completion:)
. TinkLinkError
has been renamed toTinkLinkUIError
- The error for when the user isn't authenticated has been renamed from
TinkLinkError.unauthenticated
toTinkLinkUIError.notAuthenticated
- The underlying
ThirdPartyAppAuthenticationTask.Error
error is no longer part of theunableToOpenThirdPartyApp
error.
- The error for when the user isn't authenticated has been renamed from
TinkLink
- The Provider model's identifier property has been renamed from
id
toname
. Other APIs referring to a provider has also been renamed, for exampleproviderID
on the Credentials model has been renamed toproviderName
. - Handling authentication callbacks on the different methods in
CredentialsContext
have been moved from theprogressHandler
to the new closure parameterauthenticationHandler
. This works the same as authentication is handled in theTransferContext
and allows you to use the same authentication handling for all credentials operations.Tink.shared.credentialsContext.refresh(credentials, authenticationHandler: { authenticationTask in switch authenticationTask { case .awaitingSupplementalInformation(let supplementInformationTask): // Present supplemental information form case .awaitingThirdPartyAppAuthentication(let thirdPartyAppAuthenticationTask): // Open third party app } }, progressHandler: { status in switch status { case .authenticating: // Show that authentication process has started case .updating: // Show that credentials are updating } }, completion: { result in // Handle result })
- The associated string in the
updating
status emitted by the differentprogressHandlers
have been removed. - The
placeholder
andhelpText
properties on theForm.Field.Attributes
type are now optional. - The
Form.Field.ValidationError
type has been changed to a struct with properties forfieldName
,reason
,minLength
andmaxLength
instead of those values being associated values on an enum. RefreshCredentialsTask
,InitiateTransferTask
andAddBeneficiaryTask
now have ashouldFailOnThirdPartyAppAuthenticationDownloadRequired
property for controlling what should happen if the third party authentication app isn't installed.ProviderContext.Attributes
has been renamed toProviderContext.Filter
.- Known errors, except for
ThirdPartyAppAuthenticationTask.Error
andSupplementInformationTask.Error
, emitted by the headless SDK are now of the typeTinkLinkError
.- All errors are now structs with static properties for error codes and optional properties instead of enums with associated values.
- For example, the errors related to deleted credentials have been renamed to use the same error:
- The
RefreshCredentialsTask.Error.disabled
has been renamed toTinkLinkError.credentialsDeleted
. - The
InitiateTransferTask.Error.disabledCredentials
has been renamed toTinkLinkError.credentialsDeleted
. - The
AddBeneficiaryTask.Error.disabledCredentials
has been renamed toTinkLinkError.credentialsDeleted
.
- The
- The
invalidScopeOrRedirectURI
error onAuthorizationContext.Error
andConsentContext.Error
has been replaced withTinkLinkError.invalidArguments
.
- Some types and methods that have been deprecated for a while have been removed in this release. For example
Account.URI.Kind
andBeneficiary.URI
.