Getting started
The Ada iOS SDK is a small framework that you can use to embed your Ada chatbot into your native iOS application.
It also supports actions and settings that you can use to customize the behavior of your bot. For example, you might want to set the bot language, or customize the greeting. The iOS SDK reference covers these options and more.
You’ll need an active Ada bot handle and access to the Ada Dashboard to use the SDK. To gain access, please reach out to an Ada Account Manager.
This guide covers the new Ada iOS SDK. If you are migrating from the existing SDK (AdaEmbedFramework), see Upgrade from the Existing iOS SDK below.
Compatibility
Ada will add support for new iOS versions as they become generally available, and will continue to support and test for two versions behind the current version.
Install the iOS SDK
You can install the Ada iOS SDK using Swift Package Manager, CocoaPods, Carthage, or manually. Swift Package Manager is the recommended installation path.
Install using Swift Package Manager (Recommended)
Via Xcode:
- Open File > Add Package Dependencies…
- Enter the repository URL:
https://github.com/ada-cx-public/messaging-ios.git - Choose the release version you want to ship.
- Add the
AdaMessagingproduct to your app target.
Via Package.swift:
Install using CocoaPods
-
Add
AdaMessagingto your Podfile. -
Install the pod using:
pod install.
Install using Carthage
Add the following to your Cartfile:
Then run:
Add AdaMessaging.xcframework to your app target in Xcode.
Install iOS SDK manually
- Download
AdaMessaging.xcframework.zipfrom the latest release here. - Right-click on the project file in Xcode, then click Add Files to MyProjectName. Ensure that the groups option is selected.
- Ensure your Deployment Target is set to 16.0 or higher.
- In your target’s General settings, add
AdaMessaging.xcframeworkunder Frameworks, Libraries, and Embedded Content with Embed & Sign selected.
Import the framework
Once you’ve installed the Ada iOS SDK, you’re ready to use it in your app!
- Import
AdaMessaginginto your controller. - Create an instance of the
AdaWebHost, as in the example below, replacingmy-botwith the actual name of your bot.
The lazy property prevents AdaWebHost from initializing until the property is used. Use of this property may help to prevent unwanted end users from being created in the background.
You can also pass optional configuration at initialization:
Most apps only need handle. Leave cluster and domain unset unless Ada tells you your AI agent is hosted on a non-default regional cluster or custom domain.
Launch Ada
Finally, launch Ada using one of the three opening methods:
Runtime commands
You can interact with the Ada chat instance at runtime using the following methods.
Set metadata
Use MetaFields.Builder to pass public or sensitive metadata to Ada:
Dictionary overloads for setMetaFields and setSensitiveMetaFields still exist for backward compatibility but are deprecated. Use MetaFields.Builder for all new code.
Set language
Set device token
Trigger a specific answer
Reset the chat
Delete chat history
Info.plist permissions
If your AI Agent flow allows users to upload images, videos, or use the camera, add the corresponding usage descriptions to your app’s Info.plist:
Upgrade from the Existing iOS SDK
If you are migrating from the existing AdaEmbedFramework, the new Messaging SDK is designed as a drop-in replacement. AdaWebHost remains the main public class — most apps only need a dependency swap and an import rename.
Migration steps
- Replace the old dependency with
AdaMessaging. - Rename the framework import from
AdaEmbedFrameworktoAdaMessaging. - Keep your existing
AdaWebHostusage as-is.
Side-by-side mapping
Before / after: imports
Before / after: CocoaPods
Use MetaFields.Builder for new code
Dictionary overloads for setMetaFields, setSensitiveMetaFields, and some reset shapes still exist for backward compatibility but are deprecated. For all new code, prefer MetaFields.Builder:
Release checklist
Before shipping your integration or migration to production:
- Verify your real production bot handle launches successfully
- Test the exact presentation mode you ship (modal, navigation push, or inline)
- Confirm any event logging still receives SDK events
- Test push token registration if your app depends on it
- Test
reset()anddeleteHistory()if your app exposes those actions