---
title: iOS Attribution SDKs: CocoaPods and SPM Compared
description: Native iOS SDKs from 9 MMPs: pod or Swift package name, licence, minimum iOS version, SPM support, repo and docs, checked 2 Nov 2026 against CocoaPods and GitHub.
url: https://mmpsdk.com/frameworks/ios/
---

[Home](https://mmpsdk.com/) / [Frameworks](https://mmpsdk.com/frameworks/) / iOS (native)

# MMP SDKs for *iOS (native)*

Native iOS attribution SDKs for Swift and Objective-C apps, from CocoaPods, Swift Package Manager and each vendor's docs.

**Short answer**

9 of the 9 MMPs tracked here publish an official iOS (native) SDK: Adjust, Airbridge, AppMetrica, AppsFlyer, Branch, Kochava, Linkrunner, Singular and Tenjin.

## iOS (native) pinout: one pin per MMP

Filled pins have an official SDK. Pins are in A to Z order.

- 1 [Adjust](https://mmpsdk.com/mmp/adjust/)
- 2 [Airbridge](https://mmpsdk.com/mmp/airbridge/)
- 3 [AppMetrica](https://mmpsdk.com/mmp/appmetrica/)
- 4 [AppsFlyer](https://mmpsdk.com/mmp/appsflyer/)
- 5 [Branch](https://mmpsdk.com/mmp/branch/)

**FW-IOS** **iOS (native)** 9 of 9 official

- 6 [Kochava](https://mmpsdk.com/mmp/kochava/)
- 7 [Linkrunner](https://mmpsdk.com/mmp/linkrunner/)
- 8 [Singular](https://mmpsdk.com/mmp/singular/)
- 9 [Tenjin](https://mmpsdk.com/mmp/tenjin/)

Official Vendor-documented Community only None found

## iOS (native) SDKs compared

Last checked 2 Nov 2026. Package, version and licence from CocoaPods and SPM; minimum OS from podspecs, Gradle files and vendor docs.

| MMP | Status | Package | Registry | Version | Licence | Minimum OS | Repo | Install docs | Notes |
|---|---|---|---|---|---|---|---|---|---|
| [Adjust](https://mmpsdk.com/mmp/adjust/) | Official | [Adjust](https://cocoapods.org/pods/Adjust) | CocoaPods + SPM | 5.8.1 | MIT | iOS 12.0 | [Source](https://github.com/adjust/ios_sdk) | [Install docs](https://dev.adjust.com/en/sdk/ios) | Swift Package Manager supported via github.com/adjust/ios_sdk; Carthage also documented. |
| [Airbridge](https://mmpsdk.com/mmp/airbridge/) | Official | [airbridge-ios-sdk](https://github.com/ab180/airbridge-ios-sdk-deployment) | CocoaPods (Airbridge specs repo) + SPM | 4.12.0 | Not published | iOS 12 | [Source](https://github.com/ab180/airbridge-ios-sdk-deployment) | [Install docs](https://help.airbridge.io/en/developers/ios-sdk-v4) | Swift Package Manager via ab180/airbridge-ios-sdk-deployment; newer pods come from Airbridge's own CocoaPods specs repo. |
| [AppMetrica](https://mmpsdk.com/mmp/appmetrica/) | Official | [AppMetricaAnalytics](https://cocoapods.org/pods/AppMetricaAnalytics) | CocoaPods + SPM | 7.0.0 | MIT | iOS 15.0 | [Source](https://github.com/appmetrica/appmetrica-sdk-ios) | [Install docs](https://appmetrica.yandex.com/docs/en/sdk/ios/analytics/quick-start) | SPM supported via the repo Package.swift; a 6.7.1 maintenance release followed 7.0.0. |
| [AppsFlyer](https://mmpsdk.com/mmp/appsflyer/) | Official | [AppsFlyerFramework (SPM product AppsFlyerLib)](https://cocoapods.org/pods/AppsFlyerFramework) | CocoaPods + SPM | 7.0.4 | Proprietary | iOS 12.0 | [Source](https://github.com/AppsFlyerSDK/AppsFlyerFramework) | [Install docs](https://dev.appsflyer.com/hc/docs/install-ios-sdk) | SPM available since 6.1.0 via AppsFlyerFramework-Static, -Dynamic and -Strict repos; binary only, no source. |
| [Branch](https://mmpsdk.com/mmp/branch/) | Official | [BranchSDK](https://cocoapods.org/pods/BranchSDK) | CocoaPods + SPM | 3.14.2 | MIT | iOS 12.0 | [Source](https://github.com/BranchMetrics/ios-branch-deep-linking-attribution) | [Install docs](https://help.branch.io/developer-hub/ios-basic-integration) | Swift Package Manager via BranchMetrics/ios-branch-sdk-spm; a 4.0 beta is also on CocoaPods. |
| [Kochava](https://mmpsdk.com/mmp/kochava/) | Official | [KochavaMeasurement (+ required KochavaNetworking; optional KochavaTracking)](https://github.com/Kochava/Apple-SwiftPackage-KochavaMeasurement-XCFramework) | Swift Package Manager (GitHub) | 11.0.0 | Proprietary (Kochava terms) | iOS 15.5 | [Source](https://github.com/Kochava/Apple-SwiftPackage-KochavaMeasurement-XCFramework) | [Install docs](https://support.kochava.com/sdk-integration/ios-sdk-integration/) | Since v8 distributed exclusively via Swift Package Manager; CocoaPods pods (KochavaTracker etc.) are legacy. |
| [Linkrunner](https://mmpsdk.com/mmp/linkrunner/) | Official | [LinkrunnerKit](https://cocoapods.org/pods/LinkrunnerKit) | CocoaPods + SPM | 4.3.2 | MIT | iOS 15.0 | [Source](https://github.com/linkrunner-labs/linkrunner-ios) | [Install docs](https://docs.linkrunner.io/sdk/ios?utm_source=mmpsdk&utm_medium=referral&utm_campaign=frameworks-ios) | Swift Package Manager supported (docs lead with SPM); requires Swift 5.9. |
| [Singular](https://mmpsdk.com/mmp/singular/) | Official | [Singular-SDK](https://cocoapods.org/pods/Singular-SDK) | CocoaPods + SPM | 12.14.2 | MIT | iOS 12.0 (CocoaPods); iOS 15 (SPM) | [Source](https://github.com/singular-labs/Singular-iOS-SDK) | [Install docs](https://support.singular.net/hc/en-us/articles/360037950591) | SPM via github.com/singular-labs/Singular-iOS-SDK, whose latest tag (12.16.0) is ahead of CocoaPods (12.14.2). |
| [Tenjin](https://mmpsdk.com/mmp/tenjin/) | Official | [TenjinSDK](https://cocoapods.org/pods/TenjinSDK) | CocoaPods + SPM | 1.20.1 | MIT | iOS 12.0 | [Source](https://github.com/tenjin/tenjin-ios-sdk) | [Install docs](https://tenjin.com/docs/mmp-sdk-ios/) | SPM via github.com/tenjin/tenjin-ios-sdk (also tenjin-ios-spm). |

"Not published" means no primary source states the value; it does not mean there is no minimum. Registry and repo links are for reference.

## What the SDK needs from you

The setup steps that apply to any attribution SDK in a iOS app. Each vendor datasheet lists that vendor's own requirements.

- **Install**
  Swift Package Manager or CocoaPods. Some vendors now publish newer versions through SPM first; Kochava distributes only through SPM since v8.
- **Minimum iOS**
  Ranges from iOS 12 to iOS 15.5 across the vendors here. Your deployment target must be at or above the SDK's.
- **ATT prompt**
  Add `NSUserTrackingUsageDescription` and request authorisation with `ATTrackingManager`. Without consent the IDFA is all zeros, and attribution falls back to other signals and SKAN.
- **SKAN and AdAttributionKit**
  Add `NSAdvertisingAttributionReportEndpoint` to Info.plist if your MMP wants copies of postbacks, and check whether the SDK updates conversion values for you.
- **Deep links**
  Enable the Associated Domains capability with `applinks:<your link domain>`, host the apple-app-site-association file (most MMPs host it on their link domain) and forward `continueUserActivity` and URL opens to the SDK.
- **Privacy manifest**
  Check the SDK ships a `PrivacyInfo.xcprivacy` file and include its data types in your App Store privacy answers.

## Questions

**Which MMPs have an official iOS (native) SDK?**

9 of the 9 MMPs tracked here publish an official iOS (native) SDK: Adjust, Airbridge, AppMetrica, AppsFlyer, Branch, Kochava, Linkrunner, Singular and Tenjin.

**How do I install an MMP SDK in a iOS app?**

Add the Swift package in Xcode or the pod to your Podfile, then initialise the SDK early in the app's launch.

**Do I need ATT consent to use an MMP SDK on iOS?**

No. The SDK runs and can attribute without it, using SKAN, AdAttributionKit and any deterministic signal such as a deep link click. Consent only unlocks the IDFA for user-level matching.

**Should I use CocoaPods or Swift Package Manager?**

Either works where the vendor publishes both. Check which channel carries the newest release: Kochava, for example, distributes its iOS SDK only through Swift Package Manager since v8, and Airbridge's newest versions are on its SPM repository ahead of CocoaPods trunk.

**What is an MMP SDK?**

An MMP SDK is the library a mobile measurement partner asks you to add to your app. It records the first open, in-app events and deep link opens, and sends them to the MMP so installs can be matched to the ad or link that drove them.

**Is every MMP SDK open source?**

No. Many wrappers and SDKs are MIT licensed, but some native SDKs are proprietary: AppsFlyer's native iOS and Android SDKs, Kochava's SDKs and AppMetrica's Flutter plugin are published under proprietary terms. The licence column in each table shows what the registry or repository states.

## Other frameworks

- [FW-RN **React Native** npm install the vendor package, then run pod install in the ios folder. Autolinking wires up the native side. *9 of 9 official*](https://mmpsdk.com/frameworks/react-native/)
- [FW-FL **Flutter** flutter pub add the package, then check the iOS deployment target in the Podfile and minSdk in android/app/build.gradle. *8 of 9 official*](https://mmpsdk.com/frameworks/flutter/)
- [FW-EX **Expo** npx expo install the package, add its config plugin to app.json, then npx expo prebuild and run a development build. Expo Go cannot load these native SDKs. *6 of 9 official*](https://mmpsdk.com/frameworks/expo/)
- [FW-UN **Unity** Add the package by Git URL in Unity Package Manager or import the .unitypackage, then resolve native dependencies (often with EDM4U) before building for iOS and Android. *8 of 9 official*](https://mmpsdk.com/frameworks/unity/)
- [FW-CP **Capacitor** npm install the plugin, then npx cap sync to copy it into the iOS and Android projects. *4 of 9 official*](https://mmpsdk.com/frameworks/capacitor/)
- [FW-CD **Cordova** cordova plugin add the package, then rebuild both platforms. *7 of 9 official*](https://mmpsdk.com/frameworks/cordova/)
- [FW-AND **Android (native)** Add the artifact to your Gradle dependencies (and the vendor's Maven repository if it is not on Maven Central), then initialise the SDK in Application.onCreate. *9 of 9 official*](https://mmpsdk.com/frameworks/android/)
- [FW-WEB **Web** Add the vendor's script tag or npm package to the site, then initialise it with your app or project key. *7 of 9 official*](https://mmpsdk.com/frameworks/web/)
