Skip to main content

E2EE Android SDK Integration Guide

Overview of E2EE​

End-to-End Encryption (E2EE) adds an extra layer of security to your communications by encrypting the data transmitted between the server and client. The process begins with a key exchange where the client and server share keys for encrypting and decrypting messages. This exchange acts like a handshake and ensures that all subsequent communications are encrypted. Only the intended server and client are able to decrypt the messages.

Steps to Enable E2EE in the SDK​

1. Set Up a Custom Server for E2EE​

Initialize the Welcome SDK with a custom server for E2EE as follows:

new IncodeWelcome.Builder(this, WELCOME_API_URL, WELCOME_API_KEY, E2EE_URL)
.build();
IncodeWelcome.Builder(this, WELCOME_API_URL, WELCOME_API_KEY, E2EE_URL)
.build()

2. Enable E2EE via SessionConfig:​

SessionConfig sessionConfig = new SessionConfig.Builder()
.setE2eEncryptionEnabled(true)
.build();
val sessionConfig: SessionConfig = SessionConfig.Builder()
.setE2eEncryptionEnabled(true)
.build()

3. Pass the SessionConfig Object.​

You can pass the SessionConfig object to IncodeWelcome when starting a Flow. There are two methods to do this based on the API you are using:

3.1 For Simple Flows:​

IncodeWelcome.getInstance().startOnboarding(
activityContext,
sessionConfig,
flowConfig,
onboardingListener);
IncodeWelcome.getInstance().startOnboarding(
activityContext,
sessionConfig,
flowConfig,
onboardingListener)

3.2 For Advanced Usage:​

...
IncodeWelcome.getInstance().startOnboardingSection(
activityContext,
sessionConfig,
flowConfig,
onboardingListener);
...
IncodeWelcome.getInstance().startOnboardingSection(
activityContext,
sessionConfig,
flowConfig,
onboardingListener
)