E2EE iOS SDK Integration Guide

E2EE iOS 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.

Prerequisites

  • IncdOnboarding variant including "-e2ee", eg. version "5.23.0-s-e2ee"

Integration

  • If integrating through Cocoapods then no further actions are required.
  • If manually integrating:
    Add OpenSSL.xcframework to your project (should be Embedded & signed).
    In build settings for key LD_RUNPATH_SEARCH_PATHS add path @executable_path/Frameworks.

Steps to Enable E2EE in the SDK

1. Set Up a Custom Server for E2EE

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

IncdOnboardingManager.shared.initIncdOnboarding(
    url: url, // URL for regular non-encrypted API requests
    e2eeURL: e2eeURL // URL for E2EE API requests
    apiKey: apiKey)

2. Enable E2EE via IncdOnboardingSessionConfiguration:

let sessionConfig = IncdOnboardingSessionConfiguration(e2eEncryptionEnabled: true, ...)

3. Start Onboarding

Start Onboarding with the configuration created at the previous step.

  • Start onboarding by creating the flow and calling startOnboarding as explained here
  • Start onboarding sections as explained here