Get Started
Release version: 2.15.4 | Release date: 07.04.2022
Minimum OS requirements:
Unity 2017.4 (Api Compatibility Level - Experimental (.NET 4.6 Equivalent) or 2018.3+
Android API level 16 (Android OS 4.1) and above
iOS 10.0 or higher
Use XCode 13 or higher
- CocoaPods 1.10.0 or higher
Unity 2017.4
If you are using Unity 2017.4, you need to change Scripting Runtime Version in Player Settings > Other Setting to Experimental (.NET 4.6 Equivalent).
HIGH-LEVEL Integration Steps:
Step 1: Import SDK
Step 2: Project Configuration
Step 3: Initialize SDK
Step 4: Configure Ad Types
Use these instructions to integrate Appodeal Unity Plugin to your application.
You can use our demo app as a reference project.
Step 1. Import SDK
1.1 Download it
Download Appodeal Unity Plugin 2.15.4 that includes the newest Android and iOS Appodeal SDKs with major improvements by clicking on the button below.
1.2 Import it
To import Appodeal Unity Plugin, double-click on the Appodeal-Unity-Plugin-2.15.4-06.04.2022.unitypackage file, or go to Assets → Import Package → Custom Package. Keep all the files in the Importing Package window selected, and click Import .
Use Appodeal SDK Manager to update to the latest Appodeal SDK from the Unity menu bar (Appodeal → Manage Appodeal SDK), supports Unity 2018.3 or higher. More information you can find in our blog.
Step 2. Project Configuration
2.1 Android Configuration
2.1.1 Gradle Settings
Preparing your Gradle build for Android 11
Android 11 changes how apps can query and interact with other apps that the user has installed on a device. For that reason make sure you're using gradle version that matches one of listed here .
- Go to Player Settings → Publishing Settings and enable Custom Base Gradle Template flag.
- Go to Assets→ Plugins → Android → baseProjectTemplate.gradle, open the file and change classpath 'com.android.tools.build:gradle:3.6.0' to 'com.android.tools.build:gradle:3.6.4'.
If you have already been using gradle plugin 4.0.1 version or higher, no change is required.
2.1.2 External Dependency Manager
Appodeal Unity Plugin includes External Dependency Manager package. You need to complete these following steps to resolve Appodeal's dependencies:
1. After importing Appodeal Plugin, select File → Build Settings → Android in Unity menu bar.
2. Add flag Custom Gradle Template for Unity 2017.4 - Unity 2019.2 versions or Custom Main Gradle Template for Unity 2019.3 and higher (Build Settings → Player Settings → Publishing settings).
3. Enable the setting "Patch mainTemplate.gradle" (Assets → External Dependency Manager → Android Resolver → Settings).
4. Enable the setting "Use Jetifier" (Assets → External Dependency Manager → Android Resolver → Settings).
5. Then run Assets → External Dependency Manager → Android Resolver and press Resolve or Force Resolve.
6. As a result, the modules, that are required for Appodeal SDK work, will be imported to project's mainTemplate.gradle file.
2.1.3 Configure AndroidManifest.xml
We distinguish 2 sets of permissions: required permissions, that are obligatory for the correct work of Appodeal SDK, and optional permissions, that can be used for better targeting. For more information about the purpose of each of the permissions, see this FAQ section.
- These are the required permissions
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" />
- These are the optional permissions
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.VIBRATE" />
Required permissions are already added to the project by Appodeal Unity Plugin. If you want to use any of the optional permissions, add them by following one of the methods listed below.
Open Appodeal → Appodeal Settings window in Unity top bar menu. Tick all the permissions you want.
According to Google policy , location permissions may only be requested to provide features beneficial to the user and relevant to the core functionality of the app. You cannot request access to location data for the sole purpose of advertising or analytics.
If you are not using location for the main functions of your app
- Remove location permission in your app by adding the following code to AndroidManifest.xml
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" tools:node="remove" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" tools:node="remove" />
- Update the app on Google Play. During the publishing process, make sure there are no location warnings in Google Play Console.
If you are using location for the main functions of your app
- Fill out the Location permissions declaration form in Google Play Console . You can read more about the declaration form here .
- Update the app on Google Play. During the publishing process, make sure there are no location warnings in Google Play Console.
Some networks and 3rd party dependencies (related to network dependencies) can include their own permissions to the manifest. If you want to force remove such permissions you can refer to this guide.
2.1.4 Multidex Support
If you are using Unity 2019.2 and versions below you need to add Multidex support to your project. Follow this guide to add Multidex.
If you are using Unity 2019.3 or higher go to Player Settings → Publishing Settings → Other Settings and change Minimum API Level to 21 or higher.
Make sure to add Privacy Policy to your app on Google Play that links to Appodeal's Privacy Policy to avoid violating Google Play Developer Distribution Agreement.
2.2 iOS Configuration
2.2.1 External Dependency Manager
Appodeal Unity Plugin includes External Dependency Manager package. You need to complete these following steps to resolve Appodeal's dependencies:
1. After importing Appodeal Plugin, select File → Build Settings → iOS in Unity menu bar.
2. The modules, that are required for the Appodeal SDK work, will be imported to your project during the build. You can edit them or add other modules in the Assets → Appodeal → Editor → NetworkConfigs directory.
2.2.2 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
.
There is SKAdNetworks IDs in
Info.plist format:
Open Appodeal → Appodeal Settings window in Unity top bar menu. Tick the corresponding checkbox.
2.2.3 Configure App Transport Security Settings
In order to serve ads, the SDK requires you to allow arbitrary loads. Set up the following key in info.plist of your app:
Open Appodeal → Appodeal Settings window in Unity top bar menu. Tick the corresponding checkbox.
2.2.4 Other Feature Usage Descriptions
To improve ad performance the the following entries may be added:
- NSUserTrackingUsageDescription - As of iOS 14 using IDFA requires permission from the user. The following entry must be added in order to improve ad performance.
- NSLocationWhenInUseUsageDescription - Entry is required if your application allows Appodeal SDK to use location data.
- NSCalendarsUsageDescription - Recommended by some ad networks.
Open Appodeal → Appodeal Settings window in Unity top bar menu. Tick the corresponding checkboxes.
Known Issues
1. AdColony Presentation Issue
AdColony always checks, if the key window’s rootViewController
matches the passed rootViewController
. Otherwise, Adcolony fails to present the ad. If your app has multiple independent windows, you can get a message with this or similar text:
UIViewController
for your app. Please ensure that your key UIWindow
has a rootViewController
.It means, that the rootViewController
that was used in showAd,
doesn't belong to the first window in the array.
2.3 Admob Configuration
Only if you use AdMob adapter.
Add AdMob App Ids from the Unity Menu bar Appodeal → Appodeal Settings tool for each platform.
AdMob App ID is the unique ID assigned to your app. To find the AdMob App ID in your AdMob account, go to Apps → your application → app settings and copy the AdMob App ID.
For more information about Admob sync check out our FAQ.
Step 3. Initialize SDK
Before loading and displaying ads, you need to initialize Appodeal SDK, as follows:
3.1 Import Namespaces
using AppodealAds.Unity.Api; using AppodealAds.Unity.Common;
3.2 Add Following Code to Start()
Method of Your Main Scene’s MonoBehavior
Appodeal.initialize("YOUR_APPODEAL_APP_KEY", adTypes, consentValue);
consentValue
is boolean, with 'false' meaning that the user declines to give the consent. Read our guide on collecting consent here. Use the type codes below to set the preferred ad format:
Appodeal.INTERSTITIAL
for interstitial.Appodeal.REWARDED_VIDEO
for rewarded videos.Appodeal.NON_SKIPPABLE_VIDEO
for non-skippable videos.Appodeal.BANNER
for banners.Appodeal.MREC
for 300*250 banners.
Non-skippable and rewarded videos cannot be used simultaneously. If you are not sure, which ad formats would suit you the best, check out our FAQ .
Step 4. Configure Ad Types
For completing implementation integrate showing of ad types to your application.
Full-screen ad that engages users with a captivating video.
User-initiated ads where users can earn in-app rewards in exchange for viewing a video ad.
Traditional ad format that neatly places a small ad at the top or bottom of the screen.
Medium-size ads that appear within in-app content the same as banner ads.