Releases: tink-ab/tink-link-ios
Tink Link iOS 0.14.2
- Fixed an issue where the credentials form had the wrong content insets when the keyboard was showing.
Tink Link iOS 0.14.1
- Fixed an issue where you could get stuck in a error state in
TinkLinkViewController
. - Fixed an issue where sometimes the completion handler was not called when
TinkLinkViewController
was closed.
TinkLink iOS 0.14.0
Support for adding beneficiaries
Tink Link now supports adding beneficiaries. Read more in the tutorial.
Improved the documentation
Required scopes are now specified for each context method.
Tink Link iOS 0.13.0
Tink Link UI with permanent users
Tink Link UI can now be used with permanent users. You can create, update, refresh and authenticate credentials for your permanent users.
Here is an example how to setup Tink Link with a permanent user:
// Initialize with an authorization code.
let tinkLinkViewController = TinkLinkViewController(authorizationCode: AuthorizationCode("YOUR_AUTHORIZATION_CODE")) { result in
do {
let credentials = try result.get()
} catch {
// Handle any errors
}
}
present(tinkLinkViewController, animated: true)
// Initialize with an access token.
let tinkLinkViewController = TinkLinkViewController(userSession: .accessToken("YOUR_ACCESS_TOKEN")) { result in
do {
let credentials = try result.get()
} catch {
// Handle any errors
}
}
present(tinkLinkViewController, animated: true)
If you want to update, refresh or authenticate a credentials for a user, you need to specify the Operation
you want to perform when you initialize the view controller. For example, if you want to update a credentials:
let tinkLinkViewController = TinkLinkViewController(userSession: .accessToken("YOUR_ACCESS_TOKEN"), operation: .update(credentialsID: id)) { result in
do {
let credentials = try result.get()
} catch {
// Handle any errors
}
}
Tink Link iOS 0.12.0
Transfer initiation
Tink Link now supports initiating transfers. Read more in the tutorial.
Fetching transfer source accounts and destination beneficiaries
See more details on getting a source account and getting beneficiaries sections.
Initiate transfer
Initiate the transfer with the details specified. Read more on Initiating a transfer section.
Tink Link iOS 0.11.1
Provider filtering and selection
Tink Link UI now supports opening directly to a specific provider.
TinkLinkViewController(market: "SE", scopes: scopes, providerPredicate: .name("se-test-open-banking-redirect")) { result in
// Handle result
}
The API for changing which providers to list has changed, use the new kinds
case to only show certain providers.
TinkLinkViewController(market: "SE", scopes: scopes, providerPredicate: .kinds([.bank, .creditCard])) { result in
// Handle result
}
Carthage support
Tink Link can now be installed with Carthage. Add github "tink-ab/tink-link-ios"
to your project's Cartfile and run carthage update
to install.
Access type descriptions
Descriptions of different access types are now better described in Tink Link UI.
QR image improvements
The QR code in Tink Link UI is no longer blurry and matches the current theme.
Tink Link iOS 0.11.0
User session
The API to set the user access token is now a property on the Tink
object instead of a method.
You can check if this property is not nil
if you want to check if the Tink
object is currently trying to authenticate with user session credentials.
Tink.shared.userSession = .accessToken(<#T##String#>)
Authenticating credentials
There's now a method to renew and extend the authentication for PSD2 connections.
credentialsContext.authenticate(credentials, progressHandler: { status in
<#Handle status#>
}, completion: { result in
<#Handle result#>
})
Update credentials
The update credentials method has a new parameter. Use the progress handler to handle additional authentication steps like supplemental information or authentication in a third party app.
credentialsContext.update(credentials, form: form, progressHandler: { status in
switch status {
case .awaitingSupplementalInformation(let supplementInformationTask):
<#Present form for supplemental information task#>
case .awaitingThirdPartyAppAuthentication(let thirdPartyAppAuthenticationTask):
<#Open third party app deep link URL#>
default:
break
}
}, completion: { result in
<#Handle result#>
})
Tink Link iOS 0.10.0
Tink Link UI
A new UI framework has been added. Import TinkLinkUI
and use TinkLinkViewController
to display a ready-made authentication flow with a few lines of code.
TinkLinkViewController(market: "SE", scopes: [.accounts(.read)]) { result in
do {
let authorizationCode = try result.get()
// Exchange the authorization code for a access token.
} catch {
// Handle any errors
}
}
Authenticating
The methods to authenticate a permanent user has been renamed and moved to the Tink
class.
Tink.shared.setCredential(.accessToken(“ACCESS_TOKEN”))
In addition to moving the authentication methods to the Tink object, the different context classes like ProviderContext
no longer require a User
to be initialized. Instead, they will be automatically authenticated when the corresponding Tink
object successfully authenticates.
Refreshable items
You can now specify what refreshable items you wish to aggregate when creating and refreshing credentials.
credentialsContext.add(for: provider, form: form, refreshableItems: .accounts, ...)
ThirdPartyAppAuthenticationTask
have been redesigned
There is now a handle
method that is used to attempt to open the third party app. There is an optional closure you can provide if you wish to handle the case when the app is missing the third party app.
// Will attempt to open third party app. If unsuccessful, will
// fallback to displaying a QR code or allowing the
// user to authenticate on another device.
task.handle { [weak self] result in
switch result {
case .qrImage(let image):
// Display the provided QR image.
case .awaitAuthenticationOnAnotherDevice:
// Waiting for authentication on other device.
}
}
Tink Link iOS 0.9.7
- Fixed an issue where BankID could be opened twice or
AddCredentialsTask
would stop updating.
Tink Link iOS 0.9.6
- Added
missingInternetConnection
error case for when device is offline. - Automatically retries requests when service is unavailable.