Skip to content

Upgrading to SDK v8.x

Jonathan Ellis edited this page Nov 7, 2022 · 2 revisions

⚠️ This document relates to deprecated or obsolete SDK versions. For details regarding upgrading to the latest SDK version, consult the main Upgrade Guide.


Upgrading to v8.4

There are no code changes required to upgrade to v8.3.

Please note that the next major release of the iOS SDK (v9.0) will drop support for iOS 9.

Upgrading to v8.3

There are no code changes required to upgrade to v8.3.

Please note that the next major release of the iOS SDK (v9.0) will drop support for iOS 9.

Upgrading to v8.2

Carthage users

All users of Carthage should take note of the updated installation instructions. Now that Carthage 0.37.0 has been released and offers (limited) support for XCFrameworks, you should choose whether to migrate to XCFrameworks (recommended) or remain with traditional universal (fat) frameworks.

The installation instructions now also include a workaround for those Carthage users remaining with universal frameworks on Xcode 12. Cocoapods installation is entirely unaffected by these changes.

Upgrading to v8.1

The SDK will no longer stream to iProov's EU instance by default. You must now explicitly provide a streaming URL when launching an iProov claim.

Upgrading to v8.0

v8.0 is a major release and provides new APIs with breaking changes.

New connection callback statuses

v8.0 introduces connection callbacks, which means that the iProov UI is not displayed until the connection to iProov's servers has been established. This means that you can keep the user in your app and provide the appropriate UI until the connection has been established.

You must now implement new the .connecting and .connected statuses in the iProov callback. Objective-C users should also implement the relevant blocks.

If you do not wish to implement your own custom UI for connecting and revert to the legacy behavior from v7.5 and earlier, you can opt-out of this new feature by setting options.ui.useLegacyConnectingUI = true which will continue to show the connecting indication within the iProov SDK itself.

⚠️ NOTE: the useLegacyConnectingUI is deprecated, and will be removed in a future version of the SDK. All customers are advised to adopt the new connection callbacks as soon as possible.

Changes to .success & .failure statuses

In v7.0, the .success and .failure cases provided additional contextual information (token/reason/feedbackCode) directly in their associated values:

switch status {
   ...
   case let .success(token):
      ...
   case let .failure(reason, feedbackCode):
      ...
   ...
}

In v8.0, the success and failure cases have been changed to allow for further information to be returned, and allow future extensibility for even more values to be returned in the future.

You should be able to easily move from the v7 API (above) to the equivalent v8 API (below) simply as follows:

switch status {
   ...
   case let .success(result):
      let token = result.token
      ...
   case let .failure(result):
      let reason = result.reason
      let feedbackCode = result.feedbackCode
      ...
   ...
}

Changes to failures & errors

  • streamingError has been renamed to networkError.

  • The user_timeout and network_problem failures are now returned as networkErrors for improved consistency.

Changes to UI customization

There is a new option called options.ui.livenessTintColor. Customers who are using the new Liveness Assurance technology as part of Basic Face Verifier can use this option to set the tint color of the screen during the Liveness Assurance face scan.

Due to the new connection callback statuses, options.ui.loadingTintColor option has also been deprecated, as this only takes effect when the legacy connecting UI is displayed.

Changes to string localization

String key names been updated to align with the Android & Web SDKs. There have also been new strings introduced to support Liveness Assurance. Please consult the updated Localizable.strings file and ensure your localization keys and values match.

Cocoapods users

SwiftyJSON and KeychainAccess dependencies are no longer required. Therefore you can remove these pods from the workaround in your Podfile.

The new workaround is therefore as follows:

post_install do |installer|
    installer.pods_project.targets.each do |target|
      if ['iProov', 'Socket.IO-Client-Swift', 'Starscream'].include? target.name
        target.build_configurations.each do |config|
            config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES'
        end
      end
    end
end