iOS

This is a walkthrough of how you can integrate the Onboarding or Authenticate SDK for iOS applications.

Getting started

In order to perform an Onboarding or an Authenticate, you should follow those steps:

  1. Set up the SDK: install and import the SDK.

  2. Get a token: request a token using your business credentials

  3. Get the user workflow result from SDK: use the Message handler to get insights about the user workflow.

  4. Get the Analysis result: use your callback or the endpoint to get the analysis result.

1. Set up the SDK

1.1. Project requirements

The proper functioning of the SDK necessitates the provision of several parameters. These parameters are essential for enabling the full range of functionalities offered by the SDK.

  • iOS 15+ (because of Swift minimum version)

  • Available for iPhone and iPad in portrait mode only

  • Interface: Swift and SwiftUI

Mandatory app permission

The SDK uses the device's camera functionality.

You must add NSCameraUsageDescription within your application's Info.plist file (see Apple documentation).

1.2. Install SDK

ShareID supports CocoaPods with authenticate handled via a .netrc file.

To securely manage your credentials, you’ll need to create a .netrc file in your home directory with the necessary login details.

  1. Create and open

Type touch ~/.netrc & open ~/.netrc

  1. Add login details

machine repository.shareid.net
login <your-repository-login>
password <your-repository-password>
  1. Set file permissions

chmod 600 ~/.netrc

1.3. Add the dependency

To install the SDK with CocoaPods, you'll need to add the dependency to your Podfile. (if it doesn't exist, create one by running the following command in your project directory: pod init)

  1. Add the following to your target

pod 'shareid-sdk-ios', '2.3.22'
  1. Run pod install to install the dependency

  2. Now, you can import and use the SDK in your project

import shareid_sdk_ios

2. Get a token

Use the credentials you received from ShareID's team to get an authentication token and launch an onboarding or authenticate workflow.

Depending on the SDK you are integrating (Onboarding/Authenticate), you may use an API here Get a Token

3. Start an onboarding or authenticate flow

Once you have added the SDK as a dependency and have your credentials, you can configure the SDK.

ShareID.shared.start(service: "<service>", token: "<your-token>")

The service specifies the service in the SDK:

  • onboarding starts the onboarding process

  • authenticate starts the authenticate process

The initial SDK screen is automatically triggered upon execution of the method above.

4. Get the user workflow result from SDK

To receive feedback from the SDK, you need to implement the messageHandler closure, which manages various responses from the ShareID process.

This closure is triggered when the ShareID SDK completes an operation, fails, or encounters an error.

ShareID.shared.messageHandler = { (result: ShareID.Result) in
      switch result.type {
            case .success:
                  // ...
            case .exit:
                  // ...
            case .failure:
                  // ...
      }
}

To view all possible end-of-process results in our SDK, please refer to the Message Handler for all success, exit and failure states.

5. Get the analysis result

When the processing of an onboarding or authenticate request is finished, you may receive the result through the callback if you provided it. You may also, fetch yourself the result by calling our API.

See Get the analysis result for more details.

Customisation

The ShareID iOS SDK is built to be highly customisable, allowing for flexibility through various configuration options or by applying themes to adapt the user interface to your needs.

Configuration

To customise the SDK, pass a ShareID.Theme after building the flow.

ShareID.shared.theme = ShareID.Theme.init()

Set the colors

theme.colors.primary = ...
theme.colors.secondary = ...

Name

Message

Color

primary

The main color

ShareID blue (if nothing defined)

secondary

The main text color

Black or White (depending on your iPhone theme and if nothing is set)

Once you've assigned colors, light/dark mode management is no longer supported.

Set the fonts & text size

theme.typography.h1 = ...
theme.typography.h2 = ...
theme.typography.h3 = ...
theme.typography.h4 = ...
theme.typography.body1 = ...
theme.typography.body2 = ...
theme.typography.body3 = ...
theme.typography.strong = ...
theme.typography.button = ...
theme.typography.counter = ...

Name

Message

Font

h1

The main headline

Roboto Bold 28

h2

The secondary titles

Roboto Bold 20

h3

The tertiary titles

Roboto Bold 18

h4

The quaternary titles

Roboto Bold 16

body1

The main body

Roboto Regular 16

body2

The secondary body

Roboto Regular 14

body3

The tertiary body

Roboto Regular 12

strong

The variant of body1 in medium mode

Robot Medium 16

button

The button text

Robot Medium 18

counter

The document counter text

Roboto Bold 50

To use a customisable font, you may need to register the font to make it effective! (see apple tutorial)

Set the shapes

theme.shapes.documentCornerRadius = ...
theme.shapes.largeCornerRadius = ...
theme.shapes.mediumCornerRadius = ...
theme.shapes.smallCornerRadius = ...

Name

Message

documentCornerRadius

The radius of document corner during scanning

largeCornerRadius

The large radius

mediumCornerRadius

The medium radius

smallCornerRadius

The small radius

Localisation

To customise the text displayed by the ShareID SDK, you can provide your own translations by following these steps:

  • In Xcode, right-click on your project folder > New File... > Strings File > name it Localizable.strings

  • Add this file for each language you wish to customise with the same keys as those defined by ShareID to replace the SDK default values (see the localisation keys)

Example:

"agreement.title" = "Let's verify your identity"
"common.button.continue" = "Continue"

Languages supported:

  • 🇸🇦 (ar), 🇩🇪 (de), 🇬🇧 (en), 🇪🇸 (es), 🇫🇷 (fr), 🇮🇹 (it), 🇵🇹 (pt), 🇷🇴 (ro), 🇷🇺 (ru), 🇵🇱 (pl)

Be sure to add CFBundleLocalizations to your Info.plist file with all the languages you want to support in your application. (This ensures that default Apple buttons are properly localised and enables RTL navigation)

FAQ

Why do I get a "Sandbox: rsync.samba(XXXXX) deny(1) file-read-data..." error?

In Xcode 15, a new feature called User Script Sandboxing has been introduced to enhance build stability and security by preventing scripts from making unintended changes to the system. When enabled, the build system restricts user scripts from using undeclared input/output dependencies. However, this can cause issues with the ShareID SDK, which requires running scripts to dynamically link dependencies.

To fix this issue:

  1. Go to Build Settings > Build Options.

  2. Set the User Script Sandboxing option to No.


Technical support and contact 💬

Last updated