--- title: "Basic Automated Setup" slug: "mapp-engage-ios-sdk-basic-automated-setup" description: "Set up the Mapp Engage iOS SDK with automatic integration via SPM or CocoaPods, configure AppoxeeConfig.plist and forward taps if your app is the delegate." status: "update" updated: 2026-11-02T16:19:18Z published: 2026-11-02T16:19:18Z canonical: "docs.mapp.com/mapp-engage-ios-sdk-basic-automated-setup" --- > ## 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. # Basic Automated Setup ## Goal This guide explains how to perform a basic automatic integration of the Mapp Engage iOS SDK into your project. You'll only need to add one method and configure your plist file. For more advanced manual integrations: - [Manual Integration in Swift](/v1/docs/mapp-engage-ios-sdk-manual-integration-swift) - [Manual Integration in Objective-C](/v1/docs/mapp-engage-ios-sdk-manual-integration-objc) --- ## Procedure ### Step 1: Download the SDK [Download](/v1/docs/mapp-engage-ios-sdk-installation) the iOS SDK. If using SPM for integration, skip directly to the SPM section. ### Step 2: Add the Import Statement **Swift** Add the following to your Objective-C bridging header: ```swift #import ``` **Objective-C** In your `AppDelegate.m` file, add this line: ```objectivec #import ``` ### Step 3: Configure application:didFinishLaunchingWithOptions After importing the SDK, update the `application:didFinishLaunchingWithOptions:` method in `AppDelegate`: **Swift** ```swift func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {    Appoxee.shared()?.engageAndAutoIntegrateWithLaunchOptions(launchOptions, andDelegate: nil, with: .L3)    return true } ``` **Objective-C** ```objectivec - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    [[Appoxee shared] engageAndAutoIntegrateWithLaunchOptions:launchOptions andDelegate:nil with:L3];    return YES; } ``` Ensure the `AppoxeeConfig.plist` file is present in the project as this method relies on its configuration. ****Configuration Details**** **SDK Key and Data Center** - Enter the **SDK Key** (provided during app configuration). - Set the `is_eu` flag based on your data center location: - `YES` for the EU - `NO` for the US > [!WARNING] > Warning > > Mismatching the flag with your data center environment will result in the following error in Xcode: ```plaintext [Appoxee Error] Network protocol error with HTTP code: 403 ``` **Server Enums** The `with` parameter in the integration method accepts enums for server selection: - **L3**, **EMC**, **EMC_US**, or **CROC** are valid options provided by the account manager. - **TEST**, **TEST55**, and **TEST61** are for development purposes only and should not be used in production. **Push Notification Permissions** - By default, users are prompted for notification permissions at the first app launch. - To delay this and trigger the dialog later, use the `notificationDialog` parameter: **Swift** ```swift Appoxee.shared()?.engageAndAutoIntegrate(launchOptions: launchOptions, andDelegate: nil, notificationDialog: false, with: .L3) ``` **Objective-C** ```objectivec [[Appoxee shared] engageAndAutoIntegrateWithLaunchOptions:launchOptions andDelegate:nil notificationDialog:NO with:L3]; ``` ### Step 4: Create the AppoxeeConfig.plist File Create a file named `AppoxeeConfig.plist` in your project and include the following structure: ```xml    inapp            custom_fields                    customString            customNumber            customDate                media_timeout        5        sdk            app_id                dmc_system_id                sdk_key                jamie_url                is_eu                open_landing_page_inside_app             ``` **Plist Keys Reference:** | Key | Type | Description | | --- | --- | --- | | `app_id` | String | Numeric Mapp Engage application identifier provided by your account manager. | | `dmc_system_id` | Integer | System identifier for your Mapp Engage instance. | | `sdk_key` | String | Per-app SDK key generated when the iOS channel is created in Mapp Engage. | | `jamie_url` | String | Hostname of the In-App message backend assigned to your tenant. | | `is_eu` | Boolean | `true` for EU data center, `false` for US. | | `open_landing_page_inside_app` | Boolean | If `true`, push landing pages open in an in-app web view; otherwise the system browser opens. | | `inapp.custom_fields` | Array of String | Names of custom attributes to expose as targeting variables for In-App messages. | | `inapp.media_timeout` | Integer | Seconds the SDK waits for In-App media to load before falling back to a text-only message. | --- ## Using Swift Package Manager (Optional) 1. Go to our [GitHub](https://github.com/mapp-digital/Mapp-Engage-iOS-SDK-Inapp-AddOn), and copy the git URL as you would for git clone. 2. Paste it inside the package search window and set up your version number. Then press **Add Package**. 3. After adding the package, go to *Targets* and select the target with the same name as your project. 4. Next, go to the *Build Phases* tab and expand the *Copy Bundle Resources* section. 5. After, expand the *Package* folder on the left side, then expand the SDK folder and drag and drop the **AppoxeeInappResources** file. Unselect **Copy If Needed**, select **Create folder references**, and press **OK**. ![](https://cdn.document360.io/554b9b98-6720-4d8b-9919-c7b203d72648/Images/Documentation/Untitled(4).png) 6. After that, you will be able to build a project. The same procedure applies to the Push notification Package. However, the git URL is different, and the name of the branch corresponds to the task. 7. If you want to update the package, right-click on it and select the **update package** option. ### Required System Frameworks for SPM Integration When integrating the SDK via Swift Package Manager, you must manually link the required system frameworks. 1. Go to **Targets** and select your app target. 2. Open the **Build Phases** tab. 3. Expand **Link Binary With Libraries**. 4. Add the following frameworks: - `WebKit.framework` - `UserNotifications.framework` The SDK uses WebKit components, for example `WKWebView`. If `WebKit.framework` is not linked, the build may fail with undefined symbol errors such as `WKWebView`, `WKPreferences`, or `WKWebViewConfiguration`. --- ## Using Cocoapods (Optional) 1. Add the following to your `Podfile`: ```ruby target 'YourApp' do    pod 'MappSDK' end ``` 1. Run: ```bash pod update ``` --- ## Additional Features ### Push Permission Dialog The push notification permission dialog appears by default on the first app launch. To change when it appears, see [Push Notifications](/v1/docs/mapp-engage-ios-sdk-push-notifications). ### Foreground Notifications From iOS 10 onward, you can decide whether to display notifications while the app is in the foreground. By default, the SDK does not show them. To show them, set `Appoxee.shared()?.showNotificationsOnForeground = true`. Learn more in the [foreground notification guide](/v1/docs/mapp-engage-ios-sdk-foreground-notifications). ### Acting as the UNUserNotificationCenter Delegate With the automatic integration, the SDK handles the notification callbacks for you. If your app sets itself as the `UNUserNotificationCenterDelegate`, for example to handle notification taps itself, it takes over these callbacks. Your app must then implement both delegate methods: - `userNotificationCenter(_:willPresent:withCompletionHandler:)`: decides how a notification is shown while the app is in the foreground. Setting `showNotificationsOnForeground` alone has no effect in this case. See [Foreground Notifications](/v1/docs/mapp-engage-ios-sdk-foreground-notifications). - `userNotificationCenter(_:didReceive:withCompletionHandler:)`: called when the user taps a notification. Forward every tap to the SDK. For code examples, see Forward Notification Taps in [Manual Integration in Swift](/v1/docs/mapp-engage-ios-sdk-manual-integration-swift#forward-notification-taps) or [Manual Integration in Objective-C](/v1/docs/mapp-engage-ios-sdk-manual-integration-objc#forward-notification-taps). > [!WARNING] > Warning > > If your app does not forward notification taps, the landing page or deep link may not open and the app opens on its home screen instead. Custom notification actions may not be processed, and push clicks are not tracked. > [!NOTE] > Note > > Class and method names in the SDK use `Appoxee`, the legacy name of the Mapp Engage SDK. --- ## Troubleshooting - **Error 403:** Ensure the `is_eu` flag matches your data center. - **Landing Pages Not Opening Inside App:** Check the `open_landing_page_inside_app` configuration. This setting only controls whether the landing page opens inside the app or in the browser. It does not replace tap forwarding. - **App Opens on Its Home Screen Instead of the Landing Page:** If your app is the `UNUserNotificationCenterDelegate`, check that it forwards notification taps to the SDK. See [Acting as the UNUserNotificationCenter Delegate](/docs/mapp-engage-ios-sdk-basic-automated-setup#acting-as-the-unusernotificationcenter-delegate). If you use several push providers, also check that your filter does not discard Mapp notifications. Without forwarding, push clicks are not tracked either. - **SDK Version Requirement:** Features like delayed notification dialogs require SDK version **6.0.0 or above**. ## Related - [Installation](/mapp-engage-ios-sdk-installation.md)