Overview
The Knot Link SDK provides a seamless way for end users to link their merchant accounts to your iOS app, serving as the foundation for Knot’s merchant connectivity platform. It is a client-side integration, consisting of initializing & configuring the SDK and handling events.Installation
The Knot SDK can be installed using CocoaPods or Swift Package Manager (SPM).Using CocoaPods
1
Install CocoaPods
If you haven’t already, install the latest version of CocoaPods.
2
Create a Podfile
If you don’t have an existing Podfile, run the following command to create one:
3
Add to your Podfile
Add the below line to your Podfile in your iOS project directory:
Using Swift Package Manager (SPM)
To install the Knot SDK using Swift Package Manager, ensure you’re using Swift version 5.3 or later.
1
Go to File, Add Packages
In your Xcode project, go to File, Add Packages.
2
Enter Knot package URL
In the top right corner of the dialog box, you’ll see a search bar. Enter the Knot package URL: https://github.com/millionscard/knot-api-ios. From the results, choose the
knot-api-ios package.3
Decide on your Dependency Rule
It is recommended to opt for Up to Next Major Version. Choose the project you want to integrate with KnotAPI and click on Add Package.
4
Confirm package dependency
Confirm that the KnotAPI Swift package was added as a package dependency to your project successfully.
Initialization
Your backend will create a session by calling Create Session and provide it to your frontend. To start a Knot session, you must first configure the session with aKnotConfiguration class. The configuration allows you to set the environment, entry point, and other user experience configurations.
It’s expected that your integration with Knot will retrieve and pass a new session into the SDK on each initialization.
Configure the session
TheKnotConfiguration and CustomerConfiguration classes are used to initialize the SDK with specific parameters.
KnotConfiguration
CustomerConfiguration
See the following examples for how the parameters are used together in text inside the Knot SDK:
"Your [customerName] [cardName | card] was added."
Open the session
To begin the flow, use theopen method with a KnotConfiguration instance and an optional KnotEventDelegate.
To ensure seamless integration and avoid any UI issues when embedding the view controller into your UI hierarchy, it’s crucial to properly position the view controller within the safe area of your application’s interface. This practice helps maintain the accessibility and visibility of the controller across different devices and screen sizes, especially considering the presence of notches, status bars, and navigation elements that might obscure the content.
Single Merchant Flow
If you decide to use List Merchants to retrieve a list of merchants, list them in your app, and then open the SDK with a single merchant, you can do so by passing a merchant ID when configuring the session in theKnotConfiguration. More in Retrieving & Listing Merchants. The merchant ID is the same across all environments.
Although available, it is not recommended that you provide a long list of merchants in order to remove a few, but rather “hide” certain merchants that you desire from your Customer Dashboard.
Entry Points
In your app’s user experience, you may choose to integrate Knot in one or multiple places (e.g. from different tabs or screens). How users behave when interacting with Knot from each of these “entry points” may vary and it will be useful for you to be able to differentiate these groups of users by entry point in order to assess the conversion and value of each entry point. You can provide a value for the entry point inKnotConfiguration.entryPoint when configuring the session. This value will be returned in the AUTHENTICATED webhook.
Categories & Search
Users are presented with a list of merchants in the SDK (unless you provide a single merchant as described above). Accompanying the list is a set of categories and a search experience. Each of these components is visible to users by default (as set in Knot’s backend). You can choose to remove either of them by settinguseCategories: false and useSearch: false in KnotConfiguration. This is not recommended.
Events
To receive updates from the SDK, implementKnotEventDelegate in your class.
onSuccess
This event is called when a user successfully logged in to the merchant and their card was switched. It takes a single string argument containing the name of the merchant.
onError
This event is called when an error occurs during SDK initialization and emits a KnotError enum as described below.
onExit
This event is called when a user closes the SDK.
onEvent
This event is called when certain events occur in the SDK. With this callback, you will be able to understand how a user is progressing through their lifecycle of authenticating to a merchant. It emits a KnotEvent class as described below.
KnotEvent.event property.