Skip to content

Releases: tink-ab/tink-link-ios

Tink Link iOS 1.2.0

17 Jun 11:44
8bb44c7
Compare
Choose a tag to compare
  • 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

25 Mar 10:40
dd700ca
Compare
Choose a tag to compare
  • 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

15 Mar 14:03
b271a05
Compare
Choose a tag to compare

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 the Form.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 the Provider model has been deprecated and is replaced by financeServices. The ProviderTree has been updated to reflect this change by replacing the authenticationUserTypes node with a new financialServices 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

10 Feb 13:39
97c7f1a
Compare
Choose a tag to compare

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

22 Jan 12:47
deac380
Compare
Choose a tag to compare
Pre-release

Tink Link iOS 0.18.0

13 Jan 09:49
b2316a9
Compare
Choose a tag to compare
  • Added releaseStatus property to the Provider model which indicates providers that are in BETA.
  • Added a tag to provider lists to show which ones are in BETA.
  • Added failedToAddCredentials error case to TinkLinkError. This error is returned in the TinkLinkViewController'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 to TinkLinkViewController. 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

18 Dec 15:39
3b3c05a
Compare
Choose a tag to compare
Pre-release
  • ThirdPartyAppAuthenticationTask.Error and SupplementInformationTask.Error have been replaced by new errors in TinkLinkError.

Tink Link iOS 0.17.3

17 Dec 09:48
adfe770
Compare
Choose a tag to compare
  • Fixed icon position in back button.
  • Updated color of line in text fields.

Tink Link iOS 0.17.2

14 Dec 10:23
2cc8829
Compare
Choose a tag to compare
  • 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

08 Dec 09:27
00b5321
Compare
Choose a tag to compare
Pre-release

TinkLinkUI

  • TinkLinkViewController has new initializers.
    • If aggregating with a temporary user, pass a TinkLinkConfiguration instead of a configured Tink 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 the Tink instance instead of instantiating the TinkLinkViewController with a UserSession:
      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 the TinkLinkViewController 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
          }
      }
  • The method for handling redirects is now a static method. Use Tink.open(_:completion:) instead of, for example Tink.shared.open(_:completion:).
  • TinkLinkError has been renamed to TinkLinkUIError
    • The error for when the user isn't authenticated has been renamed from TinkLinkError.unauthenticated to TinkLinkUIError.notAuthenticated
    • The underlying ThirdPartyAppAuthenticationTask.Error error is no longer part of the unableToOpenThirdPartyApp error.

TinkLink

  • The Provider model's identifier property has been renamed from id to name. Other APIs referring to a provider has also been renamed, for example providerID on the Credentials model has been renamed to providerName.
  • Handling authentication callbacks on the different methods in CredentialsContext have been moved from the progressHandler to the new closure parameter authenticationHandler. This works the same as authentication is handled in the TransferContext 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 different progressHandlers have been removed.
  • The placeholder and helpText properties on the Form.Field.Attributes type are now optional.
  • The Form.Field.ValidationError type has been changed to a struct with properties for fieldName, reason, minLength and maxLength instead of those values being associated values on an enum.
  • RefreshCredentialsTask, InitiateTransferTask and AddBeneficiaryTask now have a shouldFailOnThirdPartyAppAuthenticationDownloadRequired property for controlling what should happen if the third party authentication app isn't installed.
  • ProviderContext.Attributes has been renamed to ProviderContext.Filter.
  • Known errors, except for ThirdPartyAppAuthenticationTask.Error and SupplementInformationTask.Error, emitted by the headless SDK are now of the type TinkLinkError.
    • 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 to TinkLinkError.credentialsDeleted.
      • The InitiateTransferTask.Error.disabledCredentials has been renamed to TinkLinkError.credentialsDeleted.
      • The AddBeneficiaryTask.Error.disabledCredentials has been renamed to TinkLinkError.credentialsDeleted.
    • The invalidScopeOrRedirectURI error on AuthorizationContext.Error and ConsentContext.Error has been replaced with TinkLinkError.invalidArguments.
  • Some types and methods that have been deprecated for a while have been removed in this release. For example Account.URI.Kind and Beneficiary.URI.