Key takeaways
- The best iOS offerwall SDK is the one that installs cleanly with your package manager, supports your deployment target, declares honest privacy data, and credits rewards through signed server-to-server callbacks.
- Three of the six SDKs checked ship a privacy manifest that declares data used for tracking, which affects your App Privacy label and how the SDK behaves when users decline the ATT prompt.
- Apple allows optional rewarded offers under guideline 3.2.2(x), but never forced downloads, rewards for ratings or for allowing tracking, or an app that is little more than an ad catalog.
What is the best offerwall SDK for an iOS app?
The best offerwall SDK for an iOS app is the one that installs with the package manager you already use, supports your deployment target, declares its data honestly in a privacy manifest, and credits rewards through signed server-to-server callbacks instead of events on the device. Among SDKs with current iOS releases in November 2026 are the Moonetix iOS SDK (2.0.0, iOS 13+), from an affiliate network that credits users through signed postbacks, Unity Offerwall (formerly Tapjoy, version 14.8.0, iOS 13+), DT Offer Wall from Digital Turbine (3.68.1, iOS 15+), AdGem (3.5.0, iOS 15+), BitLabs (4.2.0), and ayeT-Studios (1.0.4). Offer supply in your users’ countries decides what each one earns, so test two before you commit.
This guide is about choosing. For step-by-step Swift code, see How to add an offerwall to an iOS app in Swift. Building for Android too? The best offerwall SDKs for Android runs the same checks on Maven packages.
How to choose an iOS offerwall SDK
An SDK becomes part of your app binary, and Apple holds you responsible for it. Its User Privacy and Data Use page says plainly that “developers are responsible for all code included in their apps.” Check these points before you add one:
| What to check | Where to find it | Why it matters |
|---|---|---|
| Install method | The provider’s Swift package repository or podspec | A Swift package adds through Xcode without a Podfile; if you already use CocoaPods, check that a current pod exists |
| Minimum iOS | platforms in Package.swift, the podspec, or MinimumOSVersion in the framework | A higher minimum than yours forces you to drop older devices |
| Privacy manifest | PrivacyInfo.xcprivacy inside the framework | It lists collected data and tracking domains, and feeds your App Privacy answers |
| IDFA and ATT | The SDK docs, and whether it links AdSupport | Decides whether you need an ATT prompt and a usage description |
| Reward path | The callback or postback docs | Only signed server callbacks are safe for a real economy |
| Reversals | The callback docs | Without reversal callbacks you keep paying for rewards the advertiser took back |
The first four take minutes to check yourself: open the package repository, read Package.swift, download the xcframework, and open the privacy manifest. That is what we did below. What is an SDK? covers the general trade-offs.
iOS offerwall SDKs compared
We read each provider’s iOS docs, its Swift package or podspec, and, where the package ships a binary, the privacy manifest inside it. Moonetix comes first and the rest are listed alphabetically, not ranked. Checked on November 11, 2026.
| SDK | Latest version and install | Minimum iOS | Privacy manifest | IDFA and ATT | Reward path in docs |
|---|---|---|---|---|---|
| Moonetix | 2.0.0, Swift Package Manager, CocoaPods podspec, or manual xcframework | 13 | Yes; four data types, none used for tracking | Does not use the advertising identifier | Signed postback for every credit and reversal |
| AdGem | 3.5.0, Swift Package Manager (the CocoaPods pod stops at 2.3.1) | 15.0 | Yes; declares tracking, with device ID and user ID used for third-party advertising | Sends the IDFA only after your app has ATT permission; the SDK does not show the prompt | Client delegate or signed server postback |
| ayeT-Studios | v1.0.4, Swift Package Manager only | 13 in Package.swift | None in the package | Docs do not mention ATT; the open source code reads the IDFA when tracking is authorized | Server callbacks with optional HMAC hash and reversal callbacks |
| BitLabs | 4.2.0 on Swift Package Manager (recommended); CocoaPods 4.1.1 | 12 in Package.swift | None in the package | Docs offer a helper that shows the ATT prompt, since offers “work best” with the ad ID | Server callbacks, highly recommended |
| DT Offer Wall | 3.68.1, CocoaPods or manual xcframework (Swift Package Manager not in its Offer Wall docs) | 15 | Yes; marks device ID as used for tracking | Links AdSupport; iOS ATT steps are not on the Offer Wall pages | Server-side rewarding or DT Virtual Currency Server |
| Unity Offerwall (Tapjoy) | 14.8.0, Swift Package Manager or CocoaPods (TapjoySDK) | 13.0 | Yes; declares tracking and a tracking domain | If you use ATT, wait for the prompt before connecting | Tapjoy-managed or self-managed currency |
We make Moonetix, so we list it first. Every fact about the other networks comes from their own sites and docs, checked on the date shown.
Docs often lag the packages. AdGem’s iOS page still describes 3.0.0 while its package repository has 3.5.0, and BitLabs’ guide shows 4.1.0 against a 4.2.0 tag. Pin a version and read the release notes before you update.
What each provider documents
- Moonetix. The Moonetix iOS SDK docs list iOS 13 or newer, Xcode 16 or newer, iPhone and iPad, and only UIKit and WebKit with no third-party dependencies. The SDK is free under the Apache License 2.0.
- AdGem. The AdGem iOS SDK docs list iOS 15.0 or higher, Xcode 14 or higher, and the AdGem Swift package. They say the SDK includes the IDFA only if your app already has ATT authorization, and that without it attribution falls back to fingerprint matching and SKAdNetwork.
- ayeT-Studios. The iOS SDK v2 docs install from the ios-sdk-v2-repo package and warn that the SDK will not initialize if your placement’s package name does not match your app. Its source code is public, so you can read what it collects from the device.
- BitLabs. The BitLabs iOS SDK docs recommend Swift Package Manager over CocoaPods and say about a deprecated in-app reward handler: “We highly recommend using server-to-server callbacks instead.”
- DT Offer Wall. Digital Turbine’s iOS integration page lists iOS 15, Xcode 14.1, and the
FairBidSDKpod, and asks you to set Allow Arbitrary Loads to Yes under App Transport Security and to tick Requires full screen. The Offer Wall ships inside the DT FairBid SDK. - Unity Offerwall. Unity’s iOS quickstart says the SDK supports iOS 13.0, supports Swift Package Manager from version 13.4.0 via the Tapjoy swift-packages repository, and recommends waiting for the ATT completion handler before connecting.
Weighing Tapjoy against other options in more depth? Tapjoy alternatives covers that question.
ATT, IDFA and SKAdNetwork
The App Store Review Guidelines, in 5.1.2(i), say: “You must receive explicit permission from users via the App Tracking Transparency APIs to track their activity.” Apple defines tracking as linking data from your app with other companies’ data for targeted advertising or ad measurement, or sharing it with data brokers. Without permission, the advertising identifier is all zeros.
For an offerwall SDK, that leaves three cases:
- The SDK never reads the IDFA. You add no ATT prompt for it. The Moonetix docs state this for its SDK.
- The SDK reads the IDFA only after permission. AdGem, BitLabs, and the ayeT-Studios code work this way. If you already show the ATT prompt for other reasons, they pick up the ID; if you do not, they work without it and attribution relies on other signals.
- The SDK expects a prompt. If you show one, add an
NSUserTrackingUsageDescriptionstring to Info.plist and show the prompt before you open the wall, as Unity and AdGem describe.
Never tie rewards to the prompt. Guideline 5.1.2(i) says apps may not require users to enable tracking to “receive monetary or other compensation”, and Apple’s FAQ answers “No” to incentivizing users to allow tracking.
SKAdNetwork is a separate topic. Apple’s Configuring a source app page says an app that displays signed ads must list ad network IDs in Info.plist under SKAdNetworkItems, and that “ad networks are responsible for publishing or providing their ad network IDs.” None of the offerwall setup guides above asks you to add SKAdNetwork IDs for the wall itself, so ask your provider before you paste a long list. SKAdNetwork and ATT explained covers how the two fit together.
Privacy manifests and your App Privacy label
Apple’s privacy manifest documentation says third-party SDKs can contain a PrivacyInfo.xcprivacy file that records the data they collect, and the NSPrivacyTracking key says whether the SDK uses data for tracking. The same page says that if the user has not granted tracking permission, network requests to the domains listed in NSPrivacyTrackingDomains fail.
What we found inside the frameworks:
- Moonetix 2.0.0 sets
NSPrivacyTrackingto false and lists user ID, device ID, coarse location, and product interaction, none used for tracking. Its docs say the device ID is for fraud prevention. - Unity Offerwall 14.8.0 sets
NSPrivacyTrackingto true, lists one tracking domain, and marks device ID, user ID, product interaction, purchase history, and advertising data as used for tracking. - AdGem 3.5.0 sets
NSPrivacyTrackingto true and marks device ID and user ID as used for tracking. - DT FairBid 3.68.1 sets
NSPrivacyTrackingto false but marks device ID as used for tracking. - BitLabs and ayeT-Studios ship as Swift source packages, and we found no privacy manifest in either repository. Ask them for their data list before you fill in your label.
Apple’s third-party SDK requirements list the SDKs that must ship a signed manifest. No offerwall SDK is on that list. Your App Privacy label must still include the data every SDK in your app collects.
App Store guidelines 3.1.1 and 3.2.2 for rewarded offers
The App Review Guidelines never name offerwalls. These are the rules that decide how one may work, checked on November 11, 2026:
| Guideline | What it says, in short | What it means for an offerwall |
|---|---|---|
| 3.2.2(x) | Apps must not force users to rate, review, download other apps, or take other store actions to use the app; they “may otherwise incentivize users to take specific actions” | The wall must be optional; nothing may be locked behind an install |
| 3.2.2(i) and (iii) | No App Store-like interface or general-interest collection of third-party apps; no apps designed predominantly for ads | The wall is one feature of a real app, not the app |
| 3.1.1 | Unlocking features, including in-game currencies, requires in-app purchase; purchased credits or currencies may not expire | Earning coins is not a sale, but coins you sell go through in-app purchase and must not expire |
| 3.1.1(a) | Links to other ways to pay are allowed on the United States storefront; other storefronts need an entitlement | Keep the wall separate from any external payment link |
| 3.1.5(v) | Cryptocurrency apps may not offer currency for completing tasks such as downloading other apps | No crypto rewards for offers |
| Section 3 intro | Paid, incentivized, filtered, or fake feedback can lead to removal from the developer program | No offer or reward for a rating or review |
Kids apps are out: guideline 1.3 says Kids Category apps should not include third-party advertising, and 5.1.4 says the same for apps intended primarily for kids. Describe the Earn feature in your App Review notes. Can you put an offerwall in an iOS app? walks through every rule with a sample review note.
Designs that invite a rejection
A feature that only unlocks after an install offer, bonus coins for tapping Allow on the ATT prompt, a rating prompt with a reward next to it, an app whose only screen is the wall, and an Earn tab your review notes never mention.
Credit rewards on your server, not in the app
Several SDKs offer an in-app reward event, such as AdGem’s offerwallRewardReceived delegate. It is handy for a quick test, but anything that runs on the device can be tampered with on a jailbroken phone. For a real economy, the flow is the same with every provider:
- Your app asks your server to open the wall for the signed-in user.
- The provider sends a signed callback to your server when an offer completes.
- Your server checks the signature, skips any transaction ID it has seen, and adds the currency.
- On a reversal, your server takes the currency back.
- The app reloads the balance when the wall closes.
Unity’s self-managed currency docs describe an MD5 verifier on each callback and retries every five minutes for up to four days. Postback security lists what to verify, and how to prevent duplicate reward credits covers the transaction ID check. Price earned coins against your in-app purchase packs with the virtual currency calculator.
A fair two-SDK test on iOS
Ship two walls behind the same Earn button for a few weeks, alternating by user ID, with the same exchange rate. Count the offers each shows on a real iPhone in your top countries, then compare earnings per 1,000 daily users after reversals and the missing-reward tickets each causes.
How to add Moonetix to your iOS app
If you pick Moonetix, you need one server endpoint and a few lines of Swift.
- Apply as a publisher at moonetix.com. Every application is reviewed by hand, and once you are approved, apps you add are live right away.
- Add your app in the dashboard and set your currency name, icon, conversion rate, user split, rounding, and wall design with the live preview.
- Add
MoonetixOfferwallwith Swift Package Manager or CocoaPods and callMoonetix.configure(appId:)at launch. The Swift guide has the full code. - Add a token endpoint on your server that calls
POST /v1/sessionwith your API key. The app opens the wall with that single-use token, so no key ships in the app. - Credit currency only from the signed postback, then use “Open as a test user” and “Send a test postback” in the app’s Integration tab, as in Test your app before launch. Copy the four data types from the SDK docs into App Store Connect.
Honest limits: offers depend on each user’s country and device, and some campaigns run only on Android, so an iOS-only audience may see fewer offers. Users on VPNs, proxies, Tor, or data center networks are blocked, and end users must be at least 16, so the wall does not belong in a kids app. The Flutter, React Native, and Unity packages bundle the same iOS SDK; see Moonetix for mobile apps for the full picture.
Where Moonetix fits on iOS
Moonetix is an affiliate network for publishers. Its iOS SDK opens the wall with a single-use session token from your server, and every credit and reversal reaches your server as a signed HMAC-SHA256 postback, retried up to 5 times if your server fails. Sign up free (we review every publisher application by hand), or see how the wall works.
Frequently asked questions
Which offerwall SDK is best for iOS?
There is no single best one. Pick the SDK that installs with your package manager, supports your deployment target, ships honest privacy data, and credits through signed server callbacks, then test two side by side in your top countries. Options include the Moonetix iOS SDK, Unity Offerwall, DT Offer Wall, AdGem, BitLabs, and ayeT-Studios.
Do iOS offerwall SDKs support Swift Package Manager?
Most do. Moonetix, AdGem, ayeT-Studios, BitLabs, and Unity Offerwall publish Swift packages. DT Offer Wall documents CocoaPods and a manual xcframework.
Do I need the ATT prompt for an offerwall?
Only if the SDK or anything else in your app tracks users as Apple defines it. Some SDKs read the IDFA only after permission, and some never use it. Never reward users for tapping Allow.
Does Apple allow offerwalls?
The guidelines do not name them. Guideline 3.2.2(x) allows incentives for actions but forbids forcing downloads or store actions, so an optional wall in a real app is generally acceptable, though Apple decides each app at review.
Does an offerwall break the in-app purchase rule?
No. Earning coins by completing offers is not a purchase. Coins you sell must still go through in-app purchase under guideline 3.1.1, and purchased coins may not expire.
What minimum iOS version do offerwall SDKs need?
Among the SDKs checked here, from iOS 12 (BitLabs) to iOS 15 (AdGem and DT Offer Wall). Moonetix, Unity Offerwall, and ayeT-Studios start at iOS 13.


