Ingo SDK version: 7.1.1
Release Date: 10.5.2023
Note: Documentation for prior versions may be found by using the search bar above.
Deployment Target: iOS 13.0
Ingo Money Mobile SDK version 7.1.1 has a new dependency structure and a new API compared to previous versions. It is recommended to completely remove all references to older Ingo Money Mobile SDK dependencies from both the build scripts and from source code before attempting to integrate Ingo Money SDK version 7.1.1.
Mobile Check Cashing SDK Enrollment API
in order to perform the server to server authentication that provides the necessary inputs for the native Mobile SDK.Add the following framework files to your project:
IngoSharedSdk.xcframework
IngoSdk.xcframework
IngoSdkUx.xcframework
IngoMaterialComponents.xcframework
FraudForce.xcframework
MiSnapSDK.xcframework
MiSnapSDKCamera.xcframework
MiSnapSDKMibiData.xcframework
MiSnapSDKScience.xcframework
MobileFlow.xcframework
AudioToolbox.framework
AVFoundation.framework
CoreGraphics.framework
CoreMedia.framework
CoreVideo.framework
ImageIO.framework
QuartzCore.framework
Security.framework
Invocation of the Ingo Money SDK is comprised of 4 steps
The Ingo Money Mobile SDK requires an authorization token and customer identifier to interact with the Ingo Money service, both of which are securely retrieved via a server to server authentication mechanism. Please refer to the Ingo Money Mobile Check Cashing SDK Enrollment API
documentation for details on enrolling and authenticating an end user in the Ingo Money Service. Once the implementing application retrieves these values from its own API, the Ingo Money Mobile SDK can be configured and launched.
The Ingo Money Mobile SDK requires a device specific identifier generated by the TransUnion Device Risk SDK in order to interact with Ingo Money Service. The Ingo Money Mobile SDK does not rely on a specific version of this libary in order to prevent API conflicts, and it is the implementing application's responsibility to maintain this dependency.
In your AppDelegate import Fraudforce:
import FraudForce
In the didFinishLaunchingWithOptions
method in your AppDelegate add:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
FraudForce.start()
return true
}
Create the following method in the viewController where the Ingo SDK will be launched:
func generateBlackBox() -> String {
return FraudForce.blackbox()
}
Launch the Ingo Money Mobile SDK with the arguments generated in steps 1 and 2, the base URL for the Ingo Money API in the desired environment (UAT/Production), and provide additional UX customizations as desired.
NOTE: Do not launch the SDK multiple times with the same authorization token, as subseqent invocations it will result in a 403 Forbidden
error.
Add the the following method to the class where the Ingo SDK will be launched from:
func launchIngoSdk() {
let customTheme = IngoSharedSdk.IngoSdkTheme.init(light: ingoSdkLightThemeHelper(), dark: ingoSdkDarkThemeHelper())
let theme = customTheme
let bundle = Bundle(for: IngoSdk.AuthorizationViewController.self)
let storyboard = UIStoryboard(name: "IngoSdk", bundle: bundle)
let vc = storyboard.instantiateViewController(withIdentifier: "AuthorizationViewController") as? AuthorizationViewController
BaseViewController.hostViewController = self
vc?.baseUrl = "INGO SDK BASE URL"
vc?.customerId = customerId
vc?.sdkAuthorizationToken = sessionToken
vc?.fraudForceBlackBox = generateBlackBox()
vc?.theme = theme
vc?.isLoggingEnabled = false
vc?.modalPresentationStyle = .fullScreen
self.navigationController?.present(vc!, animated: true, completion: nil)
}
baseUrl
customerId
customerId
value returned from the server to server register customer API call.sdkAuthorizationToken
sessionToken
is the sessionID
header value returned from the server to server AuthenticatePartner
API call.fraudForceBlackBox
generateBlackbox()
function.theme
launchIngoSdk()
function.isLoggingEnabled
selectedAccountIdentifier
selectedAccountIdentifier
paramenter.If a custom theme is needed the SDK can be configured with the following keys:
Each key supports a light and dark value to facilitate device settings.
The Ingo SDK supports both compile time and run time theming.
If you desire to set the theme values via .plist instead of via code, modify the values in the Theme
dictionary inside of the IngoConfig.plist
file. In order for the Ingo SDK to read the theme values in the IngoConfig.plist
, comment out or delete the theme
launch paramenter set in Step 3 (Launching Ingo Money Mobile SDK).
The Ingo SDK theme is passed into the IngoSdkRootViewController
and the default configuration can be set using ingoSdkTheme()
.
Create the following method in the class where you will be launching the Ingo SDK:
public func ingoSdkLightThemeHelper(
primaryColor: String = "1C1C1E",
secondaryColor: String = "3b7bbf",
tertiaryColor: String = "cccccc",
backgroundColor: String = "FFFFFF",
secondaryBackgroundColor: String = "F6F7F8",
primaryInverseTextColor: String = "FFFFFF",
alertColor: String = "F3CA3E",
errorColor: String = "FF0000") -> IngoSharedSdk.IngoSdkColorTheme {
IngoSharedSdk.IngoSdkColorTheme.init(
primaryColor: primaryColor,
secondaryColor: secondaryColor,
tertiaryColor: tertiaryColor,
backgroundColor: backgroundColor,
secondaryBackgroundColor: secondaryBackgroundColor,
primaryInverseTextColor: primaryInverseTextColor,
alertColor: alertColor,
errorColor: errorColor)
}
public func ingoSdkDarkThemeHelper(
primaryColor: String = "FFFFFF",
secondaryColor: String = "3b7bbf",
tertiaryColor: String = "cccccc",
backgroundColor: String = "1C1C1E",
secondaryBackgroundColor: String = "2C2C2E",
primaryInverseTextColor: String = "1C1C1E",
alertColor: String = "F3CA3E",
errorColor: String = "FF0000") -> IngoSharedSdk.IngoSdkColorTheme {
IngoSharedSdk.IngoSdkColorTheme.init(
primaryColor: primaryColor,
secondaryColor: secondaryColor,
tertiaryColor: tertiaryColor,
backgroundColor: backgroundColor,
secondaryBackgroundColor: secondaryBackgroundColor,
primaryInverseTextColor: primaryInverseTextColor,
alertColor: alertColor,
errorColor: errorColor)
}
For detailed information on how these theming keys are applied to the Ingo Money Mobile SDK UX please reference the Figma file included in the distribution, but a brief overview is as follows:
primaryColor
secondaryColor
tertiaryColor
backgroundColor
secondaryBackgroundColor
primaryInverseTextColor
alertColor
errorColor
Copy the IngoLocalizable.strings
file in the IngoSDK/Resources
folder and add it to your project.
If the IngoLocalizable.strings
strings file is not present in your project the SDK will provide default values.
Strings will default to the provided values:
"capture_check_title" = "Add a check to your account balance";
Simply change the value to your desired copy:
"capture_check_title" = "YOUR_CUSTOM_COPY";
IngoConfig.plist
there is a Boolean key titled: promo_code_entry_enabled
, to enable/disable promo code functionality put your desired value here.promo_code_entry_enabled
- VALUE: YES
IngoConfig.plist
there is a Boolean key titled: multicolor_icons_enabled
, to enable/disable multicolor icon functionality put your desired value here.multicolor_icons_enabled
- VALUE: YES
Copy the provided images from IngoSDK/Resources/Images
into your apps asset catalog. These images are the default values.
Copy IngoConfig.plist
from IngoSDK/Resources
and add it to the project. Inside of IngoConfig.plist
is a dictionary titled Images
. Add the desired image to your projects asset catelog and then copy the image name to the corresponding key.
KEY: alert_status
- VALUE:YOUR_IMAGE_NAME
Create a new directory in your project and add your custom font: Fonts/YOUR_FONT_NAME.otf
In the application Info.plist
create a new entry Fonts provided by application
and add your font name in the Array.
In the IngoConfig.plist
there is a key titled: font_name
, add the custom font name here.
KEY: font_name
- VALUE: YOUR_FONT_NAME
Do Not include .ttf or .otf in this key.
The Ingo Mobile Check Cashing SDK will return an object representing the result of the customer's experience within the SDK so that the implementing application can determine the next steps for the customer UX.
In the class you are launching the Ingo SDK add the follow code:
override func viewDidLoad() {
IngoSdk.BaseViewController.delegate = self
}
extension YOUR_VIEW_CONTROLLER: IngoSdkDelegate {
func ingoSdkExited(result: BaseIngoSdkResult) {
switch result {
case is IngoSdkResult:
print("Handle Customer Exit")
case is LegalDocumentsPendingAcceptanceResult:
print("Handle When User Declined Legal Documents")
default:
print("default")
}
}
}
To serialize the result provided from the Ingo SDK Delegate, use the following convenience method:
let serializedIngoSdkResultString = IngoSdkResultSerializer().serialize(input: result)
All SDK result objects have the following attributes:
Field Name | Type | Validations | Description |
---|---|---|---|
exitCode | String | Not Null | The reason the SDK exited (e.g. CUSTOMER_EXIT_SDK , SESSION_TIMEOUT ) |
exitOnUTC | Long | Not Null | The UTC time at SDK Exit |
customerIdentifier | String | Not Null | The Ingo customer identifier associated with the SDK session |
transactionReferenceNumber | String | Nullable | The Ingo transaction reference number associated to the SDK session if available |
title | String | Not Null | Human readable title of the result event |
detail | String | Not Null | Human readable details of the result event |
lastModule | String | Not Null | Last screen / module displayed to the user |
Some exit cases will have additional fields and details to further describe exit conditions.
Ingo Money provides a sample application in order to illustrate the integration, configuration, and launching of the Ingo Money SDK.
In order to run the sample application and enable the MiTek camera experience the Bundle Identifier
of the sample application must be updated in the project settings file to match the Bundle Identifier
that will be used in production to pass MiTek license verification.