2.5.13 Unreal SDK. Integration guide

Get started

1. Get the app key

Add your app to Appodeal and get the app key for your application, as it is used during SDK integration.

2. Link your Admob account to Appodeal

Appodeal yields optimal results in cooperation with Admob. Use our application to link them. The application will allow Appodeal to access your Admob reports over API, and will create new ad units on Admob and submit them to Appodeal. Please, see this page for more information.

If you don't have Admob account, please sign up on  admob.com .


General Data Protection Regulation (GDPR) compliance

Publishers need to update their apps to collect the user consent prior to initializing our SDK (Read our guide on collecting consent  here ).

Publishers need to pass the boolean consent flag(with 'false' meaning that the user declined to give the consent) by parameter Appodeal Is Consent  in Initialize or Appodeal Initialize with Parameters Actions.

Integrate SDK

Appodeal SDK is included into Unreal Engine libraries. To activate it, go to Settings → Plugins → Advertising and select Appodeal Ads Plugin and tick Enabled. In this case Appodeal SDK will be activated for all of your projects. 

If Appodeal SDK is not part of the libraries, download and add it manually. Appodeal SDK will be enabled for a particular project.

You can use our demo app as a reference project.

1. Download SDK

Current available version -2.5.13. Visit the Marketplace to download it. 

Store plugin version doesn't support arm64 architecture.

To support the arm64 architecture, you need to download the plugin directly and put the contents of the plugin in the project directory to Plugins>Appodeal folder.

Minimum OS requirements:

  • Unreal Engine 4.22
  • Android 14+
  • iOS 10+

Mediation A/B testing

If you want to compare Appodeal's performance to another mediation, please follow this Mediation A/B testing guide .

2. Copy SDK files to your project

Unpack the archive and place the files from archive to the SDK (plugin) folder of your project. The name of the folder should comply to the format <project_folder>/Plugins/Appodeal/. If the folder does not exist, create it manually. 

If your project is a pure Blueprint project, please add an empty C++ class to the project, otherwise the plugin may fail to compile.

3. Update Google Play Services

It's required to update Google Play Services to latest versions in order to use beta version of Appodeal Plugin. If you are using Ultimate Mobile Kit in your project, there are no additional actions required. Otherwise, please follow the next steps to build Android application:

1. Make sure that Enable Gradle Instead of Ant selected (Settings > Platforms > Android > APK Packaging)

2. Close Unreal Engine editor if it's opened.

3. Clean Binaries, Build and Intermediate folders in your project.

4. Open aar-imports.txt, which is located in [engine]/Engine/Build/Android/Java/ folder. On Linux based systems Engine Folder usually located in /Users/Shared/Epic Games/UE_4.xx. Here is an example of modified aar-import.txt:

repositories $(ANDROID_HOME)/extras
repositories $(ENGINEDIR)/Source/ThirdParty/Android/extras
com.google.android.gms,play-services-auth,16.0.1
com.google.android.gms,play-services-games,17.0.0
com.google.android.gms,play-services-nearby,16.0.0

You need to add an empty line at the end of the aar-imports.txt file in order to avoid getting errors when compiling the project.

5. Open your project in Editor and select Settings > Plugins.

6. Disable unused google plugins (Google Cloud Messaging and others, they can be enabled by default in an empty project).

4. Unreal Engine Project Configuration

Now configure your project.

Android

Open File → Package Project → Packaging Settings... and open Android in Platforms section.

Then check the settings:

  • Minimum SDK Version should be at least 14.
  • Target SDK is better to set 22 or above.
  • It is recommended to have  "Enable Gradle instead of Ant" option enabled.
  • Android Package Name should match the one you've set in Appodeal when creating the app.
  • Add Extra Permissions to Advanced APK Packaging section:
    • Mandatory:
      • android.permission.ACCESS_NETWORK_STATE;
      • android.permission.INTERNET.
    • Optional:
      • android.permission.ACCESS_WIFI_STATE;
      • android.permission.ACCESS_COARSE_LOCATION;
      • android.permission.WRITE_EXTERNAL_STORAGE;
      • android.permission.RECEIVE_BOOT_COMPLETED (for Vungle).

iOS

1. Open File → Package Project → Packaging Settings... and open iOS in Platforms section.

2. Go to the build settings and set one Additional Linker Flag: -ObjC.

3. Since Appodeal 2.5.11 that uses GoogleMobileAds 7.49.0 you need to add a valid GADApplicationIdentifier: Add GADApplicationIdentifier into info.plist with type string as key and your app identifier as value. Go to Extra PList Data and add a valid GADApplicationIdentifier to Additional Plist Data:

<key>GADApplicationIdentifier</key>
<string>ca-app-pub-3940256099942544~1458002511</string>

Configuration for using the plugin in C++ code

Add the Appodeal module to your *.Build.cs file public dependency module name:


Build.cs
PublicDependencyModuleNames.AddRange(new string[] { ...,  "Appodeal"});
Import this header anywhere in source code project if you want to call functions to show, load, and check ads availability:


include Appodeal
#include "AppodealComponent.h"

5. AdMob Configuration

It's required to provide your AdMob Application Id. You can add the Application Id in the project settings: Settings > Project Settings > Plugins > Appodeal AdMobAppId

You can find the Application Id in AdMob App Settings.


6. Initialization

There are two way to initialize the Appodeal SDK:

  • via the Appodeal Initialize with Parameters Action

Use Appodeal Initialize with Parameters Action to initialize Appodeal plugin. 

In this case, only direct methods will be available. To have access to ad types events, please add Appodeal Component and use events there. 

  • via Appodeal Component  

Add Appodeal Component somewhere to your Actor, to be able to access Events and Appodeal initialization settings.

All Appodeal actions are under Actions → Advertising → Appodeal. 

To set events, go to Components → Appodeal → Events.

When Appodeal component has been configured, call Appodeal Initialize Action. 

To Initialize Appodeal SDK, add Initialize action somewhere on the app start (best place to do that is on BeginPlay Event in starting Scene), then configure app keys (you can find it in App settings in Appodeal dashboard) and check ad types you want to initialize.

Initialization from C++

UE4 initialization
FString appKey;
#if PLATFORM_ANDROID
appKey = FString(TEXT("fee50c333ff3825fd6ad6d38cff78154de3025546d47a84f"));
#elif PLATFORM_IOS
appKey = FString(TEXT("4b46ef930cd37cf11da84ae4d41019abb7234d5bbce3f000"));
#endif
UAppodealComponent::initialize(appKey, consent, AdType::INTERSTITIAL | AdType::BANNER | AdType::REWARDED_VIDEO);

Known issues

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:

AdColony [*** ERROR ***] : AdColony has ads, but could not display them. AdColony was unable to find the currently visible 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. 

GoogleMobileAds background playback issue

GoogleMobileAds will play music during ad downloading, if someone wants to change UserAgent on their custom UserAgent. The issue was detected in v. 7.33.1. This problem has not appeared in newer versions of the Google SDK (starting with v. 7.35.0), but then ads almost stop filling. 

GoogleMobileAds UIWebView crash iOS 13

Rendering of some of Google Mobile Ads creatives may be cause of crash. Workaround: You can force GoogleMobileAds to use WKWebView by adding following key value pair into your info.plist fail:

<key>gad_preferred_webview</key>
<string>wkwebview</string>

Flurry and Facebook symbols collisions

If your added both Flurry and FBAudienceNetwork adapters into project (included into fat Appodeal.framework by default) and try to compile under XCode 11. Your will see following warnings, that your can ignore:

ld: warning: duplicate symbol '_unztell64' in:
    ../Pods/Appodeal/APDFlurryAdapter.embeddedframework/FlurrySDK.framework/FlurrySDK(libExternalSDKs.a-x86_64-master.o)
    ../Pods/Appodeal/APDFacebookAudienceAdapter.embeddedframework/FBAudienceNetwork.framework/FBAudienceNetwork(unzip.c.o)...ld: warning: duplicate symbol '_fill_fopen64_filefunc' in:
../Pods/Appodeal/APDFlurryAdapter.embeddedframework/FlurrySDK.framework/FlurrySDK(libExternalSDKs.a-x86_64-master.o)
../Pods/Appodeal/APDFacebookAudienceAdapter.embeddedframework/FBAudienceNetwork.framework/FBAudienceNetwork(ioapi.c.o)