---
title: "In-App SDK Integration Guide"
slug: "mapp-engage-ios-sdk-in-app"
updated: 2026-06-04T19:04:24Z
published: 2026-06-04T19:04:24Z
canonical: "docs.mapp.com/mapp-engage-ios-sdk-in-app"
---
> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mapp.com/llms.txt
> Use this file to discover all available pages before exploring further.
# In-App SDK Integration Guide
## Overview
This guide explains the step-by-step process for integrating the **In-App Messaging SDK** into your iOS application. Before proceeding with the In-App Messaging SDK, complete the initial [iOS Engage SDK integration](/v1/docs/mapp-engage-ios-sdk-installation) and verify that push notifications are working.
> [!NOTE]
> Note:
>
> The In-App Messaging SDK (`AppoxeeInapp`) is a separate framework from the Mapp Engage push SDK (`Appoxee`). It is shipped under its own xcframework and is not contained in the Engage iOS SDK repository. Configuration is done through the same `AppoxeeConfig.plist` the Engage SDK uses.
---
## Distribution
The In-App SDK (`MappSDKInapp`) is distributed separately from the push SDK (`MappSDK`) and requires it as a dependency.
- **CocoaPods** — add both `pod 'MappSDK'` and `pod 'MappSDKInapp'` to your `Podfile`.
- **Swift Package Manager** — available since version 6.0.7.
- **Manual** — add `AppoxeeInapp.xcframework` and `AppoxeeInappResources.bundle` to your project.
Source repository: [Github](https://github.com/mapp-digital/Mapp-Engage-iOS-SDK-Inapp-AddOn)
For release history, see the [In-App SDK Changelog](/v1/docs/in-app-sdk-changelog).
---
## Prerequisites
- Mapp Engage iOS SDK **v6.0+**, integrated and tested for push notifications.
- Xcode environment for iOS app development.
- The following values from your Mapp Cloud account manager, set in `AppoxeeConfig.plist`:
- `app_id` — App ID from Mapp Engage Channel Management.
- `dmc_system_id` — Mapp Engage tenant/system ID.
- `sdk_key` — SDK key for your application.
- `jamie_url` — In-App caching/delivery host (formerly referred to as the "CEP URL").
---
## Procedure
### Configure `AppoxeeConfig.plist`
The In-App SDK reads the same `AppoxeeConfig.plist` as the Engage SDK. Add the `inapp` block alongside the standard Engage keys:
```xml
app_id
YOUR_APP_ID
dmc_system_id
YOUR_DMC_SYSTEM_ID
sdk_key
YOUR_SDK_KEY
jamie_url
https://your-jamie-host.example.com
is_eu
open_landing_page_inside_app
inapp
media_timeout
5
```
### Add the In-App framework to Xcode
- Copy the `AppoxeeInapp.xcframework` and `AppoxeeInappResources.bundle` files into your project directory.
- In Xcode, go to *Build Phases > Link Binary With Libraries* and add both files.
### Initialize the SDK
Call `engageWithDelegate:with:` in `application:didFinishLaunchingWithOptions:`. The `with` parameter is the same `SERVER` enum used by the Engage SDK — customer-facing values are `L3`, `EMC`, `EMC_US`, and `CROC`.
**Swift**
```swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
AppoxeeInapp.shared()?.engage(withDelegate: nil, with: .EMC)
return true
}
```
**Objective-C**
```objectivec
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[AppoxeeInapp shared] engageWithDelegate:nil with:EMC];
return YES;
}
```
### Trigger Custom Events
Custom trigger events let you fire in-app messages from app behaviour, for example "Open Cart" or "Checkout Started".
**Swift**
```swift
import AppoxeeInapp
AppoxeeInapp.shared()?.reportInteractionEvent(withName: "Event_Name", andAttributes: ["key": "value"])
```
**Objective-C**
```objectivec
#import
[[AppoxeeInapp shared] reportInteractionEventWithName:@"Event_Name"
andAttributes:@{@"key": @"value"}];
```
### Register Custom Events
Register the event names you trigger from the app via the `registerAppEvents` API in Mapp Cloud so they are available as triggers in the In-App campaign editor.
---
## In-App Message Types
The SDK supports three in-app message types:
### 1. Full-Screen Message
- Covers the entire screen.
- **Dismissal**: 'X' icon at the top-right corner.
### 2. Modal Message
- Displayed in a popup.
- Portrait orientation only.
- **Dismissal**: 'X' icon at the top-right corner.
### 3. Banner Message
- Displayed at the top or bottom of the screen.
- Portrait orientation only.
- **Dismissal**: 'X' icon at the top-right corner.
> [!NOTE]
> Keep in mind:
>
> - The `media_timeout` entry inside the `inapp` dictionary in `AppoxeeConfig.plist` sets the default timeout (in seconds) used by the In-App SDK when fetching media for a message.
> - The Plist keys (`app_id`, `dmc_system_id`, `sdk_key`, `jamie_url`) are read by both the Engage SDK and the In-App SDK — keep a single shared file rather than maintaining two copies.
> - Work with your Mapp Cloud account manager for production values and channel-specific configuration.