Getting started
The Ada iOS SDK is a framework that you can use to embed your Ada AI agent into your native iOS application.
It also supports actions and settings that you can use to customize the behavior of your AI Agent. For example, you might want to set the language, or pass metadata. The iOS SDK reference covers these options and more.
This guide covers the new Ada Messaging iOS SDK (AdaMessaging). If you are migrating from the legacy SDK (AdaEmbedFramework), see Upgrade from the Legacy 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
The AdaMessaging CocoaPod is public, however, use of the chat interface is gated. To gain access please reach out to an Ada Account Manager.
-
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:
launchModalWebSupport— Presents the chat as a modal overlay.launchNavWebSupport— Pushes the chat onto the navigation stack.launchInjectingWebSupport— Injects the chat view into an existing view.
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 Legacy iOS SDK
If you are migrating from the legacy 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