Ingo SDK version: 7.1.3
5.6.1
, TransUnion FraudForce 5.2.2
, and Google Play Location Services 21.3.0
IngoSdk.kt
file in the sample application or the artifact's pom.xml
fileIngoSdkSession
object utilizing a builder pattern
IngoAnalytics
interface
23
or greater34
or greater34
or greater21
8.7.1
8.9
2.1.0
1.7.6
and Jetpack Compose Plugin 2.0.0
5.6.1
buildSrc
, if using.build.gradle
to remove all references to previous AAR files, IngoSdk.kt
and IngoPlugins.kt
.Ingo Money Mobile SDK version 7.1.3 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.0.0.
The Ingo Money Mobile SDK relies on Google/Android, third party open source, and proprietary libraries to facilitate an end user's interaction with the Ingo Money service. Google/Android and third party dependency versions may vary based upon the implementing application's requirements. Please refer to the sample application for a working example with specific dependency versions.
The Ingo Money Mobile SDK is comprised of a set of Maven artifacts, and a repository source will need to be added to the project-level build.gradle
.
The Ingo Money Mobile SDK Sample Application illustrates using a flat directory repository.
Alternatively, Ingo Money hosts a remote repository via Azure, or the supplied artifacts and their corresponding metadata can be uploaded to your existing private Maven repository.
allProjects {
repositories {
...
// Example Flat Directory Repository
maven {
name="Project Local Repository"
url = uri("file://"+layout.projectDirectory.dir("../ingo_local_maven_repository"))
}
// Example Ingo Hosted Repository
maven {
name = "Ingo Remote Azure Repository"
url = uri("https://pkgs.dev.azure.com/IngoMoney/76f9583d-4696-49ee-9d1c-c4b5be18b1dd/_packaging/IngoMobileCheckCashingSdkAndroid/maven/v1")
}
}
}
In the application's build.gradle
, add the Ingo Money Mobile SDK artifact as a dependency.
dependencies {
implementation("com.ingo.sdk:androidSdk:7.1.3")
}
The Ingo Money Mobile SDK for Android utilizes the KotlinX serialization library and requires the addition of certain proguard rules in order to prevent required classes from being shrunk or removed. Please refer to the KotlinX serialization documentation for the required proguard rules.
Invocation of the Ingo Money SDK is comprised of 5 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. Please note that the authorization token returned by the API is single use, and can only be used for one invocation of the Ingo Money SDK.
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 compile or link against a specific version of this library in order to prevent API conflicts, and it is the implementing application's responsibility to invoke it.
//Generate TransUnion device blackbox for fraud prevention use
val fraudForceManager = FraudForceManager
fraudForceManager.initialize(FraudForceConfiguration.Builder().build(), this)
val blackbox = fraudForceManager.getBlackbox(context)
The Ingo Money Mobile SDK is configured via the IngoSdkSession
's' Builder
subclass. Once required and optional methods have been invoked on the Builder
, an IngoSdkSession
can be created.
Class | |
---|---|
Builder | constructor(fromContext: Context) The Builder is initialized with the Context from which the Ingo SDK Activity is launched, typically the Application Context or the calling Activity. |
Name | Summary |
---|---|
activityResultLauncher | fun activityResultLauncher( activityResultLauncher: ActivityResultLauncher<Intent>): IngoSdkSession.Builder This ActivityResultLauncher is invoked when the Ingo Money Mobile SDK Activity finishes |
baseUrl | fun baseUrl(baseUrl: String): IngoSdkSession.Builder The URL for the environment the Ingo Money Mobile SDK should connect to, to be provided by Ingo |
build | fun build(): IngoSdkSession Constructs the IngoSdkSession with the configured parameters |
customerId | fun customerId(customerId: String): IngoSdkSession.Builder The customerId value returned from the server to server register customer API call |
fraudforceDeviceBlackbox | fun fraudforceDeviceBlackbox(deviceBlackBox: String): IngoSdkSession.Builder The blackbox value generated by the Transunion Device Risk SDK getBlackbox() function |
sdkAuthorizationToken | fun sdkAuthorizationToken(sdkAuthorizationToken: String): IngoSdkSession.Builder The sessionId header value returned from the server to server AuthenticatePartner API call |
Name | Summary |
---|---|
accountIdToFund | fun accountIdToFund(accountIdToFund: String): IngoSdkSession.Builder If the customer has multiple accounts registered, the Ingo SDK's default behavior is to allow the user to select which they'd like to fund. |
analytics | fun analytics(analytics: IngoAnalytics): IngoSdkSession.Builder Provide an implementation of the IngoAnalytics interface in order to receive callbacks of user and application behavior in the Ingo SDK UX. |
isDarkModeAllowed | fun isDarkModeAllowed(isDarkModeAllowed: Boolean): IngoSdkSession.Builder By default, the SDK allows dark mode if the user has it enabled. Set this to false to force the SDK to use the configured light theme. |
isIconTintEnabled | fun isIconTintEnabled(enabled: Boolean): IngoSdkSession.Builder By default, the SDK tints icons with the IngoSdkColorTheme values programmatically. Set this to false in order to disable tinting if overriding default assets with icons that have specific or multiple colors |
isLoggingEnabled | fun isLoggingEnabled(enabled: Boolean): IngoSdkSession.Builder By default, logging is disabled in the Ingo Money Mobile SDK. To enable logging of all HTTP requests and responses as well as other debug and error information to the device log, add this method with a true parameter.Do not enable logging in a production release! |
isPromoCodeEnabled | fun isPromoCodeEnabled(enabled: Boolean): IngoSdkSession.Builder By default, the SDK allows a user to input a promotion code. Set this to false in order to hide the promotion code button. |
isScreenshotEnabled | fun isScreenshotEnabled(isScreenshotEnabled: Boolean): IngoSdkSession.Builder By default, screenshots are enabled. Setting this to false will apply FLAG_SECURE to the window. |
theme | fun theme(theme: IngoSdkTheme): IngoSdkSession.Builder Overrides the values in colors.xml at runtime. |
typography | fun typography(typography: Typography): IngoSdkSession.Builder Override the default Typography value |
Once the IngoSdkSession.Builder
has been configured with the arguments generated in steps 1 and 2 and the base URL for the Ingo Money API in the desired environment (UAT/Production), an IngoSdkSession
can be created to launch the Ingo Money Mobile SDK Android Activity .
NOTE: Do not launch the SDK multiple times with the same authorization token, as subsequent invocations will result in a 403 Forbidden
error. It is not recommended to launch the SDK from an Android lifecycle callback such as onResume
because these callbacks can be executed multiple times, even if the invoking component is not visible at the top of the stack of the running Android task.
```
//Register a result contract and launch the Ingo Money Mobile SDK Activity (https://developer.android.com/training/basics/intents/result)
val ingoActivityResultContract = ...
// Launch the Ingo Money SDK using IngoSdkSession builder.
IngoSdkSession.Builder(applicationContext)
.baseUrl(getString(R.string.ingo_base_url_uat))
.sdkAuthorizationToken(sdkAuthorizationToken)
.customerId(customerId)
.fraudforceDeviceBlackbox(blackbox)
.activityResultLauncher(ingoActivityResultContract)
.build()
.start(onSuccess = {
//callback indicating Ingo Money SDK launched without error
}, onFailure = { exception ->
//callback indicating there was an exception while launching the Ingo Money SDK
})
```
Name | Summary |
---|---|
Builder | class Builder(fromContext: Context) The Builder is initialized with the Context from which the Ingo SDK Activity is launched, typically the Application Context or the calling Activity. |
Name | Summary |
---|---|
start | start(onSuccess: () -> Unit = {}, onFailure: (Exception) -> Unit) launches the Ingo Money Mobile SDK activity with values and customizations provided when configuring the IngoSdkSession via Builder |
Name | Type | Summary |
---|---|---|
onSuccess | () -> Unit | Optional callback function that indicates the SDK activity launched successfully |
onFailure | (Exception) -> Unit) | Required callback function that indicates an exception occurred when launching the SDK. The most common causes include missing or blank required values or an improperly formatted base URL. |
The Ingo Money Mobile Android SDK uses the Android standard activity result API to deliver an object detailing result of the user experience.
If the resultCode
returned is RESULT_OK
, the Ingo Money Mobile SDK exited on a known condition. Otherwise, the Ingo Money Mobile SDK activity was finished for an unknown reason or due to an unexpected error.
private val ingoActivityResultContract =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { activityResult ->
if (activityResult.resultCode == Activity.RESULT_OK) {
Log.d("Ingo SDK Sample", "Ingo SDK Returned Result \"OK\"")
Log.d(
"Ingo SDK Sample",
"Ingo Result Was " + activityResult.data?.getStringExtra(KEY_INGO_RESULT)
)
val jsonString = activityResult.data?.getStringExtra(KEY_INGO_RESULT)
if (jsonString != null) {
val ingoSdkResultObject = IngoSdkResultDeserializer.deserialize(jsonString)
Log.d("Ingo SDK Sample App", "Deserialized Result: $ingoSdkResultObject")
}
} else {
Log.e("Ingo SDK Sample", "Ingo SDK DID NOT RETURN Result \"OK\"")
}
}
The implementing application can inspect and deserialize a result value in the case of the IngoSdkActivity
returning RESULT_OK
in order to determine the end user's experience in the Ingo Money Mobile SDK. The result is returned as a JSON formatted string, accessed with the key KEY_INGO_RESULT
. The Ingo Money Mobile SDK provides a helper class (IngoSdkResultDeserializer
) to decode this string into an object for inspection.
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.
The Ingo Money Mobile SDK uses a light/dark mode compatible theme object in order to style the user experience using Jetpack Compose Material Themes.
It is recommended to configure this theme at compile time using the colors.xml
file. Both light and dark mode values need to be added to the main colors.xml
file, not split across multiple resources directories with added qualifiers.
Example app/src/main/res/values/color.xml
file
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="ingo_sdk_theme_light_primary">#1C1C1E</color>
<color name="ingo_sdk_theme_light_secondary">#23AD4B</color>
<color name="ingo_sdk_theme_light_tertiary">#cccccc</color>
<color name="ingo_sdk_theme_light_background">#FFFFFF</color>
<color name="ingo_sdk_theme_light_secondary_background">#F6F7F8</color>
<color name="ingo_sdk_theme_light_primary_inverse_text">#FFFFFF</color>
<color name="ingo_sdk_theme_light_alert">#F3CA3E</color>
<color name="ingo_sdk_theme_light_error">#FF0000</color>
<color name="ingo_sdk_theme_dark_primary">#FFFFFF</color>
<color name="ingo_sdk_theme_dark_secondary">#23AD4B</color>
<color name="ingo_sdk_theme_dark_tertiary">#cccccc</color>
<color name="ingo_sdk_theme_dark_background">#1C1C1E</color>
<color name="ingo_sdk_theme_dark_secondary_background">#2C2C2E</color>
<color name="ingo_sdk_theme_dark_primary_inverse_text">#1C1C1E</color>
<color name="ingo_sdk_theme_dark_alert">#F3CA3E</color>
<color name="ingo_sdk_theme_dark_error">#FF0000</color>
</resources>
To configure the theme at run time, instantiate an IngoSdkTheme
object with IngoSdkColorTheme
parameters for light
and dark
modes, and set it on the IngoSdkSession.Builder
. This object will takes precedence over any values configured in the colors.xml
file.
It should be noted that this override only applies to UX outside of the camera experience used to capture images, which can only be customized via XML at compile time.
Example of setting theme at runtime
// Launch the Ingo Money SDK with a runtime IngoSdkTheme
IngoSdkSession.Builder(applicationContext)
.baseUrl(getString(R.string.ingo_base_url_uat))
.sdkAuthorizationToken(sdkAuthorizationToken)
.customerId(customerId)
.fraudforceDeviceBlackbox(blackbox)
.activityResultLauncher(ingoActivityResultContract)
.theme(
IngoSdkTheme(
light = IngoSdkColorTheme().copy(primaryColor = "#FF00FF"),
dark = ingoSdkDefaultDarkColorTheme(primaryColor = "#FF00FF")
)
)
.build()
.start(onSuccess = {
//callback indicating Ingo Money SDK launched without error
}, onFailure = { exception ->
//callback indicating there was an exception while launching the Ingo Money SDK
})
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 (light mode):
ingo_sdk_theme_light_primary
/ ingo_sdk_theme_dark_primary
ingo_sdk_theme_light_secondary
/ ingo_sdk_theme_dark_secondary
ingo_sdk_theme_light_tertiary
/ ingo_sdk_theme_dark_tertiary
ingo_sdk_theme_light_background
/ ingo_sdk_theme_dark_background
ingo_sdk_theme_light_secondary_background
/ ingo_sdk_theme_dark_secondary_background
ingo_sdk_theme_light_primary_inverse_text
/ ingo_sdk_theme_dark_primary_inverse_text
ingo_sdk_theme_light_alert
/ ingo_sdk_theme_dark_alert
ingo_sdk_theme_light_error
/ ingo_sdk_theme_light_error
By default, the Ingo Money Mobile SDK supports a configurable dark mode theme. If the implementing application does not support dark mode or wishes to suppress it for the within the Ingo Money Mobile SDK, call isDarkModeAllowed
on the IngoSdkSession.Builder
with a value of false. Ensure to also override the Theme.IngoSdk
value in the application level styles.xml
to ensure the IngoSdkActivity
inherits from an appropriate light mode only theme.
By default, the promotion code entry is enabled in the Ingo Money Mobile SDK. To disallow entering of promotion codes and hide the associated UI elements, call isPromoCodeEnabled
on the IngoSdkSession.Builder
with a value of false.
The Ingo Money Mobile SDK utilizes the Jetpack Compose Typography API in order to easily customize fonts throughout the user experience with the exception of camera experience. To customize the fonts within the Ingo Money Mobile SDK, create your desired implementation of Typography and pass it to the IngoSdkSession.Builder
.
Fonts and other text attributes within the camera experience can be customized at compile time by overriding the following XML styles. Note that the application will have to override the styles in all applicable resource configurations (e.g. both the values
folder and the values-night
folder in order to properly display when dark mode is enabled).
```
<style name="MiSnapTheme.TextAppearance.Headline.Medium" parent="@style/TextAppearance.AppCompat.Medium">
<!-- Customization Attributes -->
</style>
<style name="MiSnapTheme.TextAppearance.HintView" parent="@style/TextAppearance.MaterialComponents.Headline4">
<!-- Customization Attributes -->
</style>
<style name="MiSnapTheme.TextAppearance.Medium" parent="@style/TextAppearance.AppCompat.Medium">
<!-- Customization Attributes -->
</style>
<style name="MiSnapTheme.TextAppearance.SuccessView" parent="@style/TextAppearance.MaterialComponents.Headline2">
<!-- Customization Attributes -->
</style>
```
The Ingo Money Mobile SDK utilizes vector graphics with a tint supplied by theIngoSdkTheme
object. In order to override the default icons, replace drawables with resources of the same name in the implementing application module (e.g. to change the "success" icon, provide a drawable named ic_success_status_icon.xml
in the application's resources).
In order to replace the default iconography with icons that utilize multiple colors, set isIconTintEnabled
to false
on the IngoSdkSession.Builder
which disables theme tinting for all icons throughout the Ingo Money Mobile SDK. If multi-color icons are required in your implementation, it is recommended to override all of the drawables packaged with the SDK that are prefaced with ic_
.
The Ingo Money SDK API and Mobile SDK support associating multiple card and tokenized accounts to a single customer. By default, the customer first be presented a selection list if there are more than one destination account associated to their identifier. If it is known to your application where the customer wants to move their funds, this step may be skipped by setting the desired account identifier on the IngoSdkSession.Builder
.
The Ingo Money Mobile SDK provides an optional interface to forward analytics events of user and application behavior to the implementing application. Implement the IngoAnalytics
interface to receive events to pass to an analytics provider, and set it on the IngoSdkSession.Builder
. It is important to note that calls to this interface can be are blocking, so any processing of the event data should be done asynchronously.
Name | Summary |
---|---|
trackEvent | abstract fun trackEvent(name: String, properties: Map<String, String>?) Blocking, synchronous function with event data. |
name | The event name |
properties | a map of event properties and values |
Example JSON encodings of the arguments passed to trackEvent
:
// Ingo Money Mobile SDK launched
{
"name": "Launch",
"properties": {
"SessionId": "MDg4OWNiN2YtNDQ4Mi00OTlmLTliZWUtMzg0NzUxM2I5NjQ0Ojk5OjA4ODljYjdmLTQ0ODItNDk5Zi05YmVlLTM4NDc1MTNiOTY0NA==",
"CustomerId": "bc2d8c7e-a61f-462c-90b7-5d322872fd6d",
"SystemTime": "1731101734267",
"ApplicationId": "com.ingo.sdk.android.sample",
"Platform": "Android",
"PlatformVersion": "34",
"DeviceModel": "sdk_gphone64_arm64",
"IngoSdkVersion": "7.1.3"
}
}
// User pressed the menu button on the CaptureCheckImages screen
{
"name": "MenuPressed",
"properties": {
"SessionId": "M2FkYWQ2MWYtNDU2Mi00YWIxLWFlOGUtYTIyOTVjNzRhZDU3Ojk5OjNhZGFkNjFmLTQ1NjItNGFiMS1hZThlLWEyMjk1Yzc0YWQ1Nw==",
"CustomerId": "bc2d8c7e-a61f-462c-90b7-5d322872fd6d",
"SystemTime": "1731101184403",
"ScreenName": "CaptureCheckImages"
}
}
// The API request to a given URL completed successfully
{
"name": "ApiRequestEnd",
"properties": {
"SessionId": "M2FkYWQ2MWYtNDU2Mi00YWIxLWFlOGUtYTIyOTVjNzRhZDU3Ojk5OjNhZGFkNjFmLTQ1NjItNGFiMS1hZThlLWEyMjk1Yzc0YWQ1Nw==",
"CustomerId": "bc2d8c7e-a61f-462c-90b7-5d322872fd6d",
"SystemTime": 1731101184403,
"Url": "https://check-cashing-uat.spykemobile.net/mobile-sdk/authorize",
"ApiRequestDuration": "2546"
}
}
Full listing of event names, properties and values:
object IScreenNames {
const val Authorization = "Authorization"
const val AcceptLegalDocuments = "AcceptLegalDocuments"
const val Registration = "Registration"
const val AccountSelection = "AccountSelection"
const val Menu = "Menu"
const val TransactionList = "TransactionList"
const val TransactionDetails = "TransactionDetails"
const val PrivacyPolicyWebView = "PrivacyPolicyWebView"
const val TermsWebView = "TermsWebView"
const val CustomerSupport = "CustomerSupport"
const val CaptureCheckImages = "CaptureCheckImages"
const val ConfirmAmount = "ConfirmAmount"
const val EnterAmount = "EnterAmount"
const val FundsTimingSelection = "FundsTimingSelection"
const val ConfirmTransactionDetails = "ConfirmTransactionDetails"
const val VoidDisclaimer = "VoidDisclaimer"
const val CaptureVoidImage = "CaptureVoidImage"
const val TransactionFunded = "TransactionFunded"
const val TransactionDeclined = "TransactionDeclined"
const val TransactionLoadFailure = "TransactionLoadFailure"
const val CaptureKYCDocuments = "CaptureKYCDocuments"
const val KYCInProgress = "KYCInProgress"
const val KYCFailure = "KYCFailure"
const val TransactionRequiresVoid = "TransactionRequiresVoid"
const val TransactionInReview = "TransactionInReview"
const val MiSnapTimeout = "MiSnapTimeout"
}
object IEventNames {
const val Launch = "Launch"
const val Exit = "Exit"
const val ScreenDisplayed = "ScreenDisplayed"
const val ApiRequestStart = "ApiRequestStart"
const val ApiRequestEnd = "ApiRequestEnd"
const val ApiFailure = "ApiFailure"
const val AppForeground = "AppForeground"
const val AppBackground = "AppBackground"
const val HardwareBackButtonClicked = "HardwareBackButtonClicked"
const val CancellationException = "CancellationException"
const val UseCaseException = "UseCaseException"
const val NavigationPressed = "NavigationPressed"
const val MenuPressed = "MenuPressed"
const val RegistrationSubmitted = "RegistrationSubmitted"
const val LegalDocumentAccepted = "LegalDocumentAccepted"
const val LegalDocumentDeclined = "LegalDocumentDeclined"
const val AccountItemSelected = "AccountItemSelected"
const val AccountConfirmed = "AccountConfirmed"
const val FrontImagePressed = "FrontImagePressed"
const val BackImagePressed = "BackImagePressed"
const val FeesInfoDisplayed = "FeesInfoDisplayed"
const val FeesInfoClosed = "FeesInfoClosed"
const val SubmitCheckImages = "SubmitCheckImages"
const val CheckStatusPressed = "CheckStatusPressed"
const val TransactionListItemSelected = "TransactionListItemSelected"
const val PrivacyPolicyWebViewPressed = "PrivacyPolicyWebViewPressed"
const val TermsWebViewPressed = "TermsWebViewPressed"
const val CustomerSupportPressed = "CustomerSupportPressed"
const val ChatNowPressed = "ChatNowPressed"
const val SupportEmailPressed = "SupportEmailPressed"
const val SupportPhonePressed = "SupportPhonePressed"
const val ConfirmAmountPressed = "ConfirmAmountPressed"
const val ChangeAmountPressed = "ChangeAmountPressed"
const val CheckAmountChanged = "CheckAmountChanged"
const val InMinutesFundsTimingSelected = "InMinutesFundsTimingSelected"
const val InDaysFundsTimingSelected = "InDaysFundsTimingSelected"
const val FundsTimingConfirmed = "FundsTimingConfirmed"
const val PromoCodeInputDisplayed = "PromoCodeInputDisplayed"
const val PromoCodeInputClosed = "PromoCodeInputClosed"
const val ApplyPromoCodePressed = "ApplyPromoCodePressed"
const val PromoCodeSuccessfullyAdded = "PromoCodeSuccessfullyAdded"
const val PromoCodeRejected = "PromoCodeRejected"
const val ConfirmCheckOptionsPressed = "ConfirmCheckOptionsPressed"
const val VoidDisclaimerAccepted = "VoidDisclaimerAccepted"
const val CaptureVoidFrontImagePressed = "CaptureVoidFrontImagePressed"
const val SubmitVoidedCheck = "SubmitVoidedCheck"
const val ResumeVoidRequiredTransaction = "ResumeVoidRequiredTransaction"
const val KYCIdFrontPressed = "KYCIdFrontPressed"
const val KYCIdBackPressed = "KYCIdBackPressed"
const val KYCSelfiePressed = "KYCSelfiePressed"
const val SubmitKYCDocuments = "SubmitKYCDocuments"
const val MiSnapCaptureCancelled = "MiSnapCaptureCancelled"
const val MiSnapCaptureSuccess = "MiSnapCaptureSuccess"
const val MiSnapLicenseFailure = "MiSnapLicenseFailure"
const val MiSnapTimeout = "MiSnapTimeout"
const val MiSnapTimeoutManualPressed = "MiSnapTimeoutManualPressed"
const val MiSnapTimeoutRetryPressed = "MiSnapTimeoutRetryPressed"
const val MiSnapCameraError = "MiSnapCameraError"
const val MiSnapAnalysisError = "MiSnapAnalysisError"
const val MiSnapPermissionError = "MiSnapPermissionError"
const val MiSnapError = "MiSnapError"
const val DialogRetryPressed = "DialogRetryPressed"
const val DialogDismissPressed = "DialogDismissPressed"
const val DialogExitPressed = "DialogExitPressed"
const val LocationAuthorized = "LocationAuthorized"
const val LocationAuthorizationRequired = "LocationAuthorizationRequired"
const val PreciseLocationDenied = "PreciseLocationDenied"
const val SystemSettingsOpened = "SystemSettingsOpened"
}
object IPropertyNames {
const val ApplicationId = "ApplicationId"
const val Platform = "Platform"
const val PlatformVersion = "PlatformVersion"
const val IngoSdkVersion = "IngoSdkVersion"
const val DeviceModel = "DeviceModel"
const val SystemTime = "SystemTime"
const val SessionId = "SessionId"
const val CustomerId = "CustomerId"
const val Module = "Module"
const val Url = "Url"
const val HttpStatus = "HttpStatus"
const val ExceptionMessage = "ExceptionMessage"
const val TransactionId = "TransactionId"
const val ScreenName = "ScreenName"
const val ApiRequestDuration = "ApiRequestDuration"
const val AccountId = "AccountId"
const val DocumentId = "DocumentId"
const val DocumentType = "DocumentType"
const val PromoCode = "PromoCode"
const val FundsTiming = "FundsTiming"
}
object IPropertyValues {
const val IdFront = "IdFront"
const val IdBack = "IdBack"
const val CheckFront = "CheckFront"
const val CheckBack = "CheckBack"
const val FundsInMinutes = "FundsInMinutes"
const val FundsInDays = "FundsInDays"
}
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, a Github username and personal access token (refer to step 4 of the dependency setup section) must be entered into the sample application's settings.gradle.kts
file. Additionally, in order to enable the MiTek camera experience the applicationId
of the sample application must be updated in the /app/build.gradle.kts
file to match the applicationId
that will be used in production to pass MiTek license verification.