SDK reference · Android SDK / Android Getting Started

SDK Modes

The SDK runs in one of three modes. The mode controls how and when captured data is sent to Incode. Choose the mode that matches your integration's network, privacy, and timing requirements.

Mode What It Does When To Use It
Standard Captures data and sends it to Incode in real time as the flow runs. The default. Use when the device has connectivity and you want server-side validation as each step completes.
Capture-Only Captures media on-device without sending it to Incode. You retain the captured data and submit it later from your own back end. Use when capture and submission must be decoupled, or capture happens in an environment without a direct path to Incode. See Capture-Only Mode.
Delayed Captures onboardings offline and syncs them to Incode when a connection is available. Use when capture happens offline and validation can wait for connectivity.

Standard Mode

Standard mode is the default. The SDK captures each module's data and sends it to Incode as the flow progresses. Server-side validation results are available in real time through the result callbacks. No additional configuration is required.

See Getting Started for the standard integration.


Capture-Only Mode

Capture-Only mode captures media on the device without sending it to Incode during the flow. Your back end submits the captured data separately. This mode uses a dedicated integration path.

See Capture-Only Mode for the full guide.


Delayed Mode

Delayed mode captures onboardings offline and syncs them to Incode when a connection is available. It currently supports the following modules: Combined Consent, Document Scan, Face Match, ID Scan, Process ID, and Selfie Scan.

Enable Delayed Mode

  1. Set Delayed mode using setSdkMode(DELAYED):
    IncodeWelcome.getInstance().setSdkMode(SdkMode.DELAYED)
    
    IncodeWelcome.getInstance().setSdkMode(SdkMode.DELAYED);
    
  2. Create a SessionConfig and FlowConfig with the supported modules for Delayed mode. Follow the steps for your integration pattern.
  3. Call startOnboarding(...):
    IncodeWelcome.getInstance().startOnboarding(activityContext, sessionConfig, flowConfig, onboardingListener)
    
    IncodeWelcome.getInstance().startOnboarding(activityContext, sessionConfig, flowConfig, onboardingListener);
    

Sync Delayed Onboardings

An active internet connection is required. Call the following to sync offline onboardings:

IncodeWelcome.getInstance().syncDelayedOnboardings(object : SyncDelayedOnboardingListener {
    override fun onDelayedOnboardingSyncCompleted(delayedOnboardingSyncResult: DelayedOnboardingSyncResult) {
        ...
    }

    override fun onError(delayedOnboardingSyncError: DelayedOnboardingSyncError) {
        ...
    }

    override fun onCancelled() {
        ...
    }
})
IncodeWelcome.getInstance().syncDelayedOnboardings(new SyncDelayedOnboardingListener() {
    @Override
    public void onDelayedOnboardingSyncCompleted(@NonNull DelayedOnboardingSyncResult delayedOnboardingSyncResult) {
        ...
    }

    @Override
    public void onError(@NonNull DelayedOnboardingSyncError delayedOnboardingSyncError) {
        ...
    }

    @Override
    public void onCancelled() {
        ...
    }
});

Was this page helpful?