Building the SDK

Creating a CafSmartAuth SDK instance

To create a CafSmartAuth instance, use the CafBuilder class. This class provides a set of methods to configure the SDK instance.

Builder Properties

Property
Type
Description
Required

mobileToken

String

Mobile token provided by the platform.

Builder Methods

Method
Type
Description
Required

setStage(_:)

CAFStage

Defines the environment stage (e.g., .prod, .beta). Default is .prod.

setEmailURL(_:)

URL

Sets the email authentication URL. Must use HTTPS protocol.

setPhoneURL(_:)

URL

Sets the phone authentication URL. Must use HTTPS protocol.

setPlatform(_:)

CafSdkPlatform

Sets the platform on which the SDK is running. Default is .nativeIos.

setLivenessSettings(_:)

CafFaceLivenessSettings

Sets the face liveness authentication settings.

setThemeConfigurator(_:)

CafThemeConfigurator

Sets the theme configuration for the SDK. Customize appearance for light and dark modes.

Theme Configuration

To customize the appearance of the SDK, use the theme configurator methods. Two structures are used for theme configuration: CafThemeConfigurator and CafTheme.

CafThemeConfigurator

public struct CafThemeConfigurator {
    public var lightTheme: CafTheme
    public var darkTheme: CafTheme

    public init(lightTheme: CafTheme = CafTheme(),
                darkTheme: CafTheme = CafTheme()) {
        self.lightTheme = lightTheme
        self.darkTheme = darkTheme
    }
}

This structure allows you to define separate themes for light and dark modes. Each theme is defined by a CafTheme structure.

public struct CafTheme {
    public var backgroundColor: UIColor
    public var textColor: UIColor
    public var linkColor: UIColor
    public var boxBorderColor: UIColor
    public var boxFilledBorderColor: UIColor
    public var boxBackgroundColor: UIColor
    public var boxFilledBackgroundColor: UIColor
    public var boxTextColor: UIColor
    public var progressColor: UIColor

    public init(backgroundColor: String = "#FFFFFF",
                textColor: String = "#FF000000",
                linkColor: String = "#004AF7",
                boxBorderColor: String = "#cbcbcb",
                boxFilledBorderColor: String = "#004AF7",
                boxBackgroundColor: String = "#D3D3D3",
                boxFilledBackgroundColor: String = "#D3D3D3",
                boxTextColor: String = "#004AF7",
                progressColor: String = "#004AF7") {
        self.backgroundColor = UIColor(hex: backgroundColor)
        self.textColor = UIColor(hex: textColor)
        self.linkColor = UIColor(hex: linkColor)
        self.boxBorderColor = UIColor(hex: boxBorderColor)
        self.boxFilledBorderColor = UIColor(hex: boxFilledBorderColor)
        self.boxBackgroundColor = UIColor(hex: boxBackgroundColor)
        self.boxFilledBackgroundColor = UIColor(hex: boxFilledBackgroundColor)
        self.boxTextColor = UIColor(hex: boxTextColor)
        self.progressColor = UIColor(hex: progressColor)
    }
}

This structure defines various appearance attributes for the SDK. You can customize colors for backgrounds, text, links, borders, and progress indicators by providing hex string values.

Example

import CafSmartAuth

let smartAuth: CafSmartAuthSdk?

private func setupCafSmartAuth() {
    smartAuth = CafSmartAuthSdk.CafBuilder(mobileToken: "myMFAToken")
        .setStage(.prod)
        .setEmailURL(URL(string: "https://myEmailUrl.com")) // Not mandatory
        .setPhoneURL(URL(string: "https://myPhoneUrl.com")) // Not mandatory
        .setLivenessSettings(
            CafFaceLivenessSettings(
                faceLivenessToken: "myFaceAuthToken",
                useLoadingScreen: false,
                filter: .lineDrawing
            )
        )
        .setThemeConfigurator(
            CafThemeConfigurator(
                lightTheme: CafTheme(
                    backgroundColor: "#FFFFFF",
                    textColor: "#000000"
                ),
                darkTheme: CafTheme(
                    backgroundColor: "#000000",
                    textColor: "#FFFFFF"
                )
            )
        )
        .build()
}

Last updated