Skip to main content
Version: 3.4.0-beta.2

Get Started

Release VersionRelease Date
3.4.0-beta.211.10.2024

Follow this guide to get the best out of Appodeal.

The Appodeal SDK gives you access to 70+ Ad Demand Sources and makes them compete against each other in a real-time auction, maximizing your ad revenues. The Appodeal SDK also provides In-app Bidding, Automatic UA Optimization, User Segmentation & A/B Testing, Cross-Promotion and Direct Deals, Instant Payouts, and much more.

info

Appodeal SDK provides two ways of integration. From the options below, choose the one that fits your needs better:

The Appodeal SDK Full Package - The Appodeal SDK provides you with tools to grow your mobile apps and games. In addition to the monetization services, you can benefit from UA (User Acquisition) and in-app analytics services. Here is the list of services Appodeal SDK Full Package includes:

  • Get started with Appodeal to gain access to Monetization and Analytics.

  • Connect with Adjust or AppsFlyer to unlock Attribution features.

  • Connect with Meta (formerly known as facebook-core) for User Acquisition.

  • Connect with Firebase for Analytics + remote config for product A/B tests and settings.

If you plan to run UA campaigns, want to analyze your metrics in our Appodeal's business intelligence tool without using MMP, or want to use remote config for tests and settings, your option is - The Appodeal SDK Full Package.


tip

Please follow this integration guide step by step and choose your integration option when needed.

The following document shows how to integrate Appodeal in your iOS project with your desired networks via CocoaPods and manual setup, and configure all your ad formats.

Minimum requirements:
  • iOS 13.0 or higher (only if you use Firebase, iOS 12.4 if you use MyTarget, otherwise iOS 12.0 or higher is sufficient). You still can integrate Appodeal SDK into a project with a lower value of minimum iOS version. However, on devices that don't support iOS 12.0+ our SDK will just be disabled.
  • Appodeal SDK is compatible with both ARC and non-ARC projects.
  • Xcode 15.3 or higher.

You can use our demo app as a reference project.

Demo App

Step 1. Import SDK

Fat and CocoaPods SDK versions work in pure Obj-C, and Swift as well as mixed Obj-C or Swift projects.

Objective C

If your project is a pure Objective-C project, you should add an empty Swift file, for example, Dummy.swift.

Xcode will offer you to create Bridging Header after adding the empty Swift file, press "Create".

Please select the ad types that are used in your application and the ad networks that you want to include.

Disabling ad networks

As you have selected Appodeal SDK Full Package option, make sure you have not excluded services from the Podfile or from the SDK package.

We recommend using the standard configuration, as disabling some of the recommended adapters can negatively affect revenue.

  1. Podfile configuration
caution

CocoaPods 1.12.0 or higher is required. To get information about CocoaPods update, please see this documentation.

Configuring Podfile

Here is a base and recommended Podfile sample code.
You can add or remove any ad network or service adapter depending on your requirements. We provide a convenient and interactive way to customize and generate Podfile code based on selected ad types, networks and services.

To configure your Podfile please visit Configure Mediated Networks page.

iOS 18 support

Appodeal 3.4.0-beta.2 is fully compatible with iOS 18. If you have implemented Appodeal 3.4.0-beta.1 and faced a problem while publishing your app to the AppStore please update to Appodeal 3.4.0-beta.2 version. If there is no possibility for update to fix the issue just remove APDSmaatoAdapter and BidMachineSmaatoAdapter from your podfile or use the post-install hook provided below.

post_install do |installer|
xcframework_path = "#{installer.sandbox.root}/smaato-ios-sdk/vendor"

Dir.glob("#{xcframework_path}/**/*.framework/OMSDK_Smaato").each do |binary|
if File.exist?(binary)
puts "Stripping bitcode from: #{binary}"
system("xcrun bitcode_strip #{binary} -r -o #{binary}")
end
end
end
Podfile

  1. Call pod install

Call $ pod install to install CocoaPods dependencies or $ pod update to update. If you do not have an installed pod, Install CocoaPods to simplify dependency management

sudo gem install cocoapods

If you have problems with pods versions, please run the following code:

rm -rf "${HOME}/Library/Caches/CocoaPods"
rm -rf "`pwd`/Pods/"
pod update

If the official repo doesn't respond, you can add lines to your podspec and update pods from the Appodeal mirror repository:

source 'https://github.com/appodeal/CocoaPods.git'
source 'https://cdn.cocoapods.org/'

If you are receiving error like this [!] CDN: trunk URL couldn't be downloaded: https://cdn.cocoapods.org/Specs/0/3/e/Appodeal/${VERSION}/Appodeal.podspec.json Response: Failure when receiving data from the peer please run the following command

pod repo remove trunk
  1. Open your project using .xcworkspace file from now on.

Step 2. Prepare Your Application

Add SKAdNetworkIds

Ad networks used in Appodeal mediation support conversion tracking using Apple's SKAdNetwork, which means ad networks are able to attribute an app install even when IDFA is unavailable. To enable this functionality, you will need to update the SKAdNetworkItems key with an additional dictionary in your Info.plist.

info

If you are using Xcode 14+ and SwiftUI in your app, then you can notice that there is no Info.plist in project navigator by default.

You need to go to Target → Info tab → Custom iOS Target Properties and make any changes to it by simply adding an empty line so the Info.plist file shows up in your project navigator.

  1. Select Info.plist in the Project navigator in Xcode
  2. Right-click on Info.plist file → Open as → Source Code
  3. Copy the SKAdNetworkItems from below and paste it into your Info.plist file
There is SKAdNetworks IDs in Info.plist format
<key>SKAdNetworkItems</key>
<array>

</array>

Configure App Transport Security Settings

In order to serve ads, the SDK requires you to allow arbitrary loads. Set up the following keys in Info.plist of your app:

  1. Go to your Info.plist file, then press Add+ anywhere in the first column of the key list.
  2. Add App Transport Security Settings key and set its type to Dictionary in the second column.
  3. Press Add+ at the end of the name App Transport Security Settings key and choose Allow Arbitrary loads. Set its type to Boolean and its value to Yes.

You can also add the key to your Info.plist directly, using this code:

<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>

Location Description (Optional)

NSLocationWhenInUseUsageDescription - Entry is required if your application allows Appodeal SDK to use location data.

<key>NSLocationWhenInUseUsageDescription</key>
<string><App Name> needs your location for analytics and advertising purposes</string>
info

To use location services, your app requests authorization, and the system prompts the user to grant or deny the request.

Please implement Core Location and ask users permission according to the official documentation.

Other Feature Usage Descriptions

Important

Admob Bidding is now available with Appodeal SDK 3.2.0.

Don't forget to download our newest version of Admob Sync tool from this page and perform sync.

You can read more about Admob Sync in our guide.

To improve ad performance the following entries should be added:

  1. GADApplicationIdentifier - When including AdMob in your project, you must also add your AdMob app ID to your info.plist. Use the key GADApplicationIdentifier with the value being your AdMob app ID. For more information about Admob sync check out our Admob guide.
  2. NSUserTrackingUsageDescription - Starting from iOS 14, using IDFA requires permission from the user. The following entry must be added in order to improve ad performance.
  3. NSCalendarsUsageDescription - Recommended by some ad networks.
<key>GADApplicationIdentifier</key>
<string>YOUR_ADMOB_APP_ID</string>
<key>NSUserTrackingUsageDescription</key>
<string><App Name> needs your advertising identifier to provide personalised advertising experience tailored to you</string>
<key>NSCalendarsUsageDescription</key>
<string><App Name> needs your calendar to provide personalised advertising experience tailored to you</string>
info

Please note, if you have removed the Admob adapter, don't forget to remove the BDMNotsyAdapter as well using this guide.

Step 3. Initialize SDK

Before initialisation, we highly recommend to receive all required permissions from the user. Please follow this Data Protection guide.

Import Appodeal into AppDelegate (AppDelegate.m) and initialize the SDK:

import Appodeal

We recommended to call initialization method in AppDelegate -didFinishLaunchingWithOptions: function:

@UIApplicationMain
final class MyAppDelegate: UIResponder, UIApplicationDelegate, AppodealInitializationDelegate {
func application(
_ application: UIApplication, didFinishLaunchingWithOptions
launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
) -> Bool {
Appodeal.setAutocache(false, types: .interstitial)
Appodeal.setLogLevel(.verbose)

// New optional delegate for initialization completion
Appodeal.setInitializationDelegate(self)
/// Any other pre-initialization
/// app specific logic

Appodeal.initialize(
withApiKey: "APP_KEY",
types: .interstitial
)

return true
}
func appodealSDKDidInitialize() {
// Appodeal SDK did complete initialization
}
}

adTypes is a parameter responsible for ad formats (ex. AppodealAdTypeRewardedVideo, AppodealAdTypeInterstitial). Initialize only those ad types you want to use in your app to avoid getting ad requests to unused ones.

consent is an object responsible for agreement to having user's personal data collected according to GDPR and CCPA laws. You can find more information here.

Make sure to replace YOUR_APP_KEY with the actual app key. You can find it in the list of applications in your personal account.

Step 4. Configure Ad Types

Appodeal SDK is now imported and you're ready to implement an ad. Appodeal offers a number of different ad formats, so you can choose the one that best fits your app's user experience.

Attention-grabbing full-screen ad with a static ad display.

Implement Interstitial

User-initiated ads where users can earn in-app rewards in exchange for viewing a video ad.

Implement Rewarded Ad

Traditional ad format that neatly places a small ad at the top or bottom of the screen.

Implement Banner

Medium-rectangule ads (300x250px) that appear within in-app content.

Implement MREC

Ad format that seamlessly fits within the context of an app’s content.

Implement Native Ad

Step 5. What's next

Configure App Privacy

Configure App Privacy according to this doc:

App Privacy Details

Add App-ads.txt File

The app-ads.txt file is a text file which provides a mechanism for publishers to declare their authorized digital sellers.

You can find detailed information here