SDK Integration | Appodeal Intelligent Ad Mediation

SDK Integration

App key

Link your Admob account

Appodeal yields optimal results in cooperation with Admob. To continue, you need to link your Admob account.

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

To link your Admob account to Appodeal, use the Chrome extension:

INSTALL EXTENSION


The extension source code is available at https://github.com/appodeal/admob-configurator.

The extension will make two changes in your Admob account. First, it will allow Appodeal to access your Admob reports over API, and second, it will create new ad units on Admob and submit them to Appodeal.

VIDEO TUTORIAL

Get started

  • The Appodeal SDK is compatible with both ARC and non-ARC projects
  • Use XCode 6.0 or higher
  • Target iOS 9.0 or higher.

You still can integrate the Appodeal SDK into a project with a lower value of minimum iOS version. On the devices that don’t support iOS 9.0+ our SDK will just be disabled. 

Download SDK

 

iOS SDK 2.4.9

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

That version includes Parallel Bidding feature. Read more about Parallel bidding in our blog.

General Data Protection Regulation (GDPR) compliance

Publishers need to update their apps to collect user consent prior to initializing our SDK (Read our guide on collecting consent here). Publisher need to pass boolean consent flag(with 'false' meaning that user declined to give consent) to Appodeal.initialize() method in our SDK.

Known Issues

4.1.1. AdColony Presentation Issue

AdColony always checks, if the key window’s rootViewController matches the passed rootViewController. Otherwise, Adcolony fails to present an 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. 

Integrate SDK

Prepare your App

In order to serve ads, the SDK requires that you allow arbitrary loads.

1. Go to your info.plst file, then press Add+ anywhere in the first column of the key list.

2. Add App Transport Security Settingskey and set its type to Dictionary in the second column.

3. Press Add+ at the end of the name App Transport Security Settingskey 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:

CocoaPods Integration

1. Add the following lines to your project's Podfile:

2. Run $ pod install to install CocoaPods dependencies or $ pod update to update them. If you do not have an existing Pod, first install CocoaPods to simplify dependency management, following Cocoapods’ official documentation.

If you have any problems with a Pod’s version, run the following code:

If the official repository doesn't respond, you can add the following line to your Podspec to update Pods from the Appodeal mirror repository:

3. To add Pods with the specific ad formats, use the following code:

  • For interstitials:
  • For banners and MRECs:
  • For rewarded or non-skippable videos:
  • For native ads:

Manual Integration

1. Extract the Appodeal SDK from the downloaded archive.

2. Open your project in Xcode, then drag and drop Appodeal.framework and Resources folder from the archive onto it. Choose Copy items if needed and click Finish.

3. Choose Build Phases → Link Binary With Libraries and add the following Apple frameworks:

  • AdSupport
  • CoreText
  • MobileCoreServices
  • AudioToolbox
  • EventKitUI
  • QuartzCore
  • AVFoundation
  • EventKit
  • SafariServices
  • CFNetwork
  • GLKit
  • Security
  • CoreBluetooth
  • ImageIO
  • Social
  • CoreFoundation
  • JavaScriptCore
  • StoreKit
  • CoreGraphics
  • libc++
  • SystemConfiguration
  • CoreImage
  • libsqlite3.tbd
  • Twitter
  • CoreLocation
  • libxml2.2.tbd
  • UIKit
  • CoreMedia
  • libz.tbd
  • WatchConnectivity
  • CoreMotion
  • MediaPlayer
  • WebKit
  • VideoToolbox
  • CoreTelephony
  • MessageUI

4. Now you need to add the -ObjC linker flag. In your XCode project choose Build Settings → Search for other linker flags → Add -ObjC.

Initialize SDK

Before starting to load ads, you need to initialize the Appodeal SDK, as follows:

1. Import <Appodeal/Appodeal.h> in AppDelegate file:

2. Add the initialization key under the didFinishLaunchingWithOptions function:

3. The AppodealAdType parameter here is responsible for ad formats. They can be combined. 

E.g.:

Choose ad formats

The AppodealAdType parameter in the code above is responsible for the ad formats you are going to implement into your app. To combine them, use the operator |.

Appodeal supports all major mobile ad formats:

  • Interstitial (AppodealAdTypeInterstitial): full-screen ads, that contain a static image or a skippable video.
  • Banner (AppodealAdTypeBanner): rectangular ads that occupy a spot within an app's layout.
  • MREC (AppodealAdTypeMREC): medium-rectangular ads (300x250px) that appear within in-app content. It’s a deprecated ad format and is better to be replaced with native ads.
  • Rewarded video (AppodealAdTypeRewardedVideo): non-skippable video ads that users may choose to watch to get a reward.
  • Non-skippable video (AppodealAdTypeNonSkippableVideo): video ads that must be watched until the end. This format is an alias of AppodealAdTypeRewardedVideo.
  • Native ads (AppodealAdTypeNativeAd): ads that can match the structure and style of an app and naturally continue the user experience.

Note: 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

Implement an interstitial

6.2.1. Basic integration

6.2.2. Set interstitial callbacks

The callbacks are used to track different events in the lifecycle of an ad, e.g., when an ad was clicked on or closed. To get them, you need to set the delegate as follows:

Usually, the class that implements interstitials is also the delegate class, that’s why the delegate property can be set to self.

Now you can use the following callback methods:

Implement a rewarded video

6.3.1. Basic integration

6.3.2. Get reward data for a specific placement

To get reward data and notify your users of it before the video ad is shown, use this method. It returns the object with the currency type and amount of the reward.

6.3.3. Set rewarded video callbacks

Callbacks are used to track different lifecycle events of an ad, e.g., when the video was completed, and a reward should be granted (its type and amount can be set at Appodeal Dashboard). To get them, you need to set the delegate as follows:

Usually, the class that implements rewarded video ads is also the delegate class, that’s why the delegate property can be set to self.

Now you can use the following callback methods:

6.3.4. Set server-to-server (S2S) rewarded video callbacks

The S2S callbacks are used to reward users with virtual currency or in-game items and help prevent cheating. When a user watches a rewarded video ad, a callback is sent to the specified URL on your server. It provides all information about the type of reward and the user you need to grant the reward to. You need to validate this information and adjust user balance accordingly.

1. On your server construct the URL that will receive the callbacks.

2. Go to your Appodeal Dashboard and enter the created URL and the encryption key in App Settings.

3. The S2S callbacks will be sent to your URL using GET requests with two parameters:

4. Use the following sample scripts to let your URL decrypt the data and validate it. If you need scripts in other languages, contact our support team, and we will gladly provide you with them.

Sample in PHP: reward.php

Sample in Ruby: reward.rb

Sample in Java: reward.java

Sample in Python 3: reward.py 

5. Check impression_id for uniqueness and store it in your system to prevent duplicate transactions.

Implement a non-skippable video

6.4.1. Basic integration

6.4.2. Set non-skippable video callbacks

The callbacks are used to track different events in the lifecycle of an ad, e.g. when an ad was clicked on or closed. To get them, you need to set the delegate as follows:

Usually, the class that implements non-skippable video ads is also the delegate class, that’s why the delegate property can be set to self.

Now you can use the following callback methods:

Banner Integration

4.5.1. Basic integration

In the Appodeal SDK banners are singletons: if you have bannerTop and bannerBottom on the different view controllers, the SDK will use the same banner instance on them. E.g.:

4.5.2. Show banner

To show a banner at the bottom of the screen, use:

To show a banner at the top of the screen, use:

To remove banner from your view hierarchy, use the following method:

6.5.3. Set banner callbacks

Callbacks are used to track different lifecycle events of an ad, e.g., when a banner has successfully loaded or is about to appear. To get them, you need to set the delegate as follows:

Usually, the class that implements banners is also the delegate class, that’s why the delegate property can be set to self.

Now you can use the following callback methods:

IMPORTANT: If automatic caching is ON for Banner ad type, you mustn't show banner in the bannerDidLoadAdIsPrecache callback. Banner will be refreshed automatically after the first show.

6.5.4. Advanced BannerView integration

If the basic integration is not appropriate for you due to the complex views hierarchy of your app, you can use AppodealBannerView UIView subclass to integrate banners.

6.5.5. Enable smart-banners

Smart banners are the banner ads which automatically fit the screen/container size. Using them helps to deal with the increasing fragmentation of the screen sizes on different devices. To enable them, use the following method:

6.5.6. Change banner background

This method allows to create a grey background for banner ads: 

6.5.7. Enable banner refresh animation

MREC integration

MREC is the deprecated ad format, which we recommend to replace with native ads. If you still want to implement MREC ads into your app, use the following code:

IMPORTANT: If automatic caching is ON for MREC ad type, you mustn't show banner in the bannerViewDidLoadAd callback. Mrec will be refreshed automatically after the first show.

Native ads integration

6.7.1. Basic native ads integration with Native AdQueue

Native AdQueue is the new native ad implementation and management tool in the Appodeal SDK. You no longer need to load Native Ads up manually. All you have to do is set the desired amount in AdQueue, and it will load new items automatically.

Be careful using AdQueue: if your app loads too many ads but is not able to use it, the ad network can either lower the cost of each impression for you or limit your ability to load native ads.

6.7.2. Configure settings for native ads

In adQueue.settings you can set the following parameters for the native ads of your app:

adQueue.settings setting name

Type

Appointment

Possible values

type

APDNativeAdType


Native Ad Type

APDNativeAdTypeAuto

APDNativeAdTypeVideo

APDNativeAdTypeNoVideo

adViewClass

Class <APDNativeAdView>

Template class

Default template: APDDefaultNativeAdView.class


autocacheMask

APDNativeResourceAutocacheMask

Mask for caching media files

Icons caching: (APDNativeResourceAutocacheIcon): 1

Image and Video caching (APDNativeResourceAutocacheMedia): 2

Cache all media files: 3


6.7.3. Initialize a specific type of native ads

The Appodeal SDK provides both static and video types of native ads.

To implement static native ads into your app, use the following code:

To implement native video ads, use the following code:

The aspect ratio of native video ads in the Appodeal SDK is 16:9, the file size is about 1-3 Mb.

There are two types of native video ads in the Appodeal SDK:

  • skippable - if “skippable” flag is stated, then the video can be skipped after 5 seconds from the start
  • muted - if “muted” flag is stated, then the video will be played with no sound

6.7.4. Cache native ads

You can set the number of ads you need to cache on your Appodeal Dashboard.

Native AdQueue also allows to cache ads with the setMaxAdSize method, but remember, that it is considered deprecated since the version 2.2.0. E.g.:

6.7.5. Use custom templates for native ads

To use your custom templates for native ads, simply state your templates class in adQueue.setting.adViewClass, as follows:

Your template class should conform the following protocol:

The objects, mentioned in this protocol, are:

  • titleLabel - container for title text;
  • callToActionLabel - container for call-to-action text;
  • descriptionLabel - container for description text;
  • iconView - container for icon image;
  • mediaContainerView - container for media files (images and video files);
  • contentRatingLabel - container for showing rating of the content;
  • adChoicesView - container for showing adChoice;
  • rating - container for showing rating of the app;
  • nib - nib-file for template.

Note: All views should be enclosed in a single superview. If YourNativeAdViewTemplate inherits from UITableViewCell(UICollectionViewCell), these views should be contained in the hierarchy of contentView.

6.7.6. Set native ads callbacks

The callbacks are used to track different events in the lifecycle of an ad, e.g., when an ad was clicked on or shown. To get them, you need to set the delegate as follows:

1. Set the delegate: 

2. Implement the following functions:

6.7.7. Get all native ads from Native AdQueue

6.7.8. Common mistakes with native ads

  • No ad attribution or AdChoices icon

The majority of ad networks require from publisher to add a special mark to a native ad, so users don’t mistake them for content. That’s why you always need to make sure, that native ads in your app have the ad attribution (e.g., “Ad”) or the AdChoices icon. 

Wrong Correct

  • Absence of the required native ads elements

Every native ad should contain a title, an image, an action button and an ad mark.

Wrong (no action button) Correct


  • Native ad elements deformation

Advertisers expect that their ads will be displayed clearly and without any deformation. You can scale buttons and images, but you shouldn't crop and deform them.

Wrong Correct

  • Overlaying elements of native ads on each other

Make sure, that all elements of a native ad are visible and not overlaid on each other. It has an impact not only on the ad’s looks but also on the user experience. 

Wrong Correct

6.7.9. Structure of NativeAd in the Appodeal SDK

The NativeAd object has the following characteristics in the Appodeal SDK. All of the fields, marked as “Mandatory”, must be displayed:

  • NSString * title - Title of the native ad. Mandatory. Should always be displayed. Maх length: 25 symbols. If it’s longer than that, add the ellipsis at the end.
  • NSString * subtitle - Subtitle of the native ad. Optional.
  • NSString * callToActionText - Call-to-action text. Mandatory. Should be fully displayed without reduction on a distinct action button.
  • NSString * descriptionText - Text description of the native ad. Optional. Limit number of displayed lines to make it suitable for your app. Min length: 75 symbols. If it’s longer than that, add the ellipsis at the end.
  • NSNumber * starRating - Rating of the app in [0-5] range. Optional.
  • NSNumber * contentRating - Rating of the content. Optional.
  • APDImage * iconImage - Bitmap of an icon. An ad object contains both icon and image. It’s mandatory to use at least one of these elements.
  • APDImage * mainImage - Bitmap of an image. An ad object contains both icon and image. It’s mandatory to use at least one of these elements. Deprecated method. NativeMediaView should be used instead of it to show images or videos.
  • UIView * adChoicesView - View. If it doesn’t return null, it’s mandatory to display a provider icon in any corner of a native ad. Only used for Facebook to display AdChoices icon.

Advanced Features

6.8.1. Enable test mode

In the test mode only test ads will be shown with the 100% fill rate. Your debug data will be written to Logcat.

6.8.2. Enable logging

Е.g.:

Available parameters:

  • APDLogLevelOff - logs off;
  • APDLogFlagError - only error messages;
  • APDLogLevelWarning - warning and error messages;
  • APDLogLevelDebug - debug messages;
  • APDLogLevelInfo - error, warning and information messages;
  • APDLogLevelVerbose - all SDK and ad networks messages.

To search for the additional logs, use the tag Appodeal.

6.8.3. Cache ads by their format

6.8.4. Disable automatic ad caching

6.8.5. Disable ad networks for the specific ad formats

Use this method before the SDK initialization:

6.8.6. Disable data collection for kids apps

Use this method before the SDK initialization:

6.8.7. Set location tracking

Use this method before the SDK initialization:

The SDK will check the location permission on user's device. If this permission is missing, a user will get an alert message with the request for location tracking. 

Transfer User Data 

Our SDK provides the transfer of user data for better ad targeting and higher eCPM. You can manage the user settings with the following class method:

Name of field Type Description
func setUserId String user ID
func setUserEmail String user email
func setUserBirthday Date user birthday
func setUserAge Integer user age
func setUserGender AppodealUserGender user gender
func setUserOccupation AppodealUserOccupation user occupation
func setUserRelationship AppodealUserRelationship user relationship
func setUserAlcoholAttitude AppodealUserAlcoholAttitude user alcohol altitude
func setUserSmokingAttitude AppodealUserSmokingAttitude user smoking altitude
func setUserInterests String user interests

Segments and Placements

Segments

A segment is a fraction of audience unified by filters: e.g., by gender, age or any other parameter known to the app and directed to the Appodeal SDK. Segments are used to track statistics for various user categories and to manage ads for these categories.

If you have no segments, all users will be matched to "default" segment.

If you have multiple segments, pay attention to their order. Only the first segment, in which filters are matched to the user, will apply. All of the rest will be ignored.

To create a segment, follow these steps:

1. Go to our Dashboard, select Segments and click Add new.

2. Use one of the presets or click New Segment, if you want to create a blank segment without any default settings.

3. Fill in a name for your segment.

4. Define the filters. You can select as many of them as you want:

General filters

Age - group users of a particular age;

Applications - group users of one or multiple of your apps;

Country - group users from particular countries;

Device Type - group users that use tablet or/and phone;

Gender - group users by their gender.

Advanced filters

App Version - group users that use a particular app version;

Average Session Length - group users that spend a particular period of time in your app in average;

Bought In-Apps - group users who did or did not make the in-app purchases. Only counts the purchases tracked by the Appodeal.trackInAppPurchase method;

Connection Type - group users by their connection type: Wi-Fi, Mobile Internet or other;

In-Apps Amount - group users by number of the in-app purchases they’ve made. Only counts the purchases tracked by the Appodeal.trackInAppPurchase method;

OS Version - group users by their OS version;

Part of Audience - group a particular percentage of the users. This filter is useful when testing ad campaigns, A/B testing or monetization testing in general;

SDK Version - group users with a particular version of the Appodeal SDK;

Session Count - group users who’ve run the app the particular number of times;

Session Time - group users who run the app at a particular time of day or on a particular day of the week. The segment is aimed at users’ local time and their time zone.

Manual filters

Manual Filters allow grouping users by any characteristics you choose. E.g. you can select users by the source that directed them to you or by the number of levels they’ve played in your game.

To use the manual filters, fill in a name and a value for it. The value can be boolean, numeric or string-based.

5. Select the settings for your new segment:

Disable Ad Types. If any of the ad formats affect negatively a particular part of your audience, you can disable them for this segment;

Disable Ad Networks. If any of the ad networks affect negatively a particular part of your audience, you can disable them for this segment completely or choose the specific ad formats that will be not loaded from this ad network;

Min Pricefloor, $. Allows to set a minimum price for 1000 impressions for every ad format.

Overriden eCPM, $. Allows to manage manually the position of each ad format for every ad network inside the waterfall.

6. Click Create Segment and then enable it in the segments list.

Placements

Appodeal SDK allows you to choose different placements for each impression. Your revenue is separated by placement in our dashboard, which helps to analyze what kind of ads earns you more money.

The placement can only be used as a part of the existing segment.

1. To show an ad in the specific placement, use:

 2. To check if an ad can be shown in the specific placement, use this code as an example:

3. To configure your impression logic for each placement, use the settings listed below:

General Settings

Disable Ad Types. Disable a specific ad format for this placement;

Disable Ads. Disable all the ads for this placement;

Interstitial Type. Show either static or video interstitials at this placement;

Min Pricefloor, $. Set a minimum price for 1000 impressions for every ad format at this placement;

Reward. Set amount and currency of a reward, users get after watching a rewarded video ad at this placement.  To get reward data before video starts, use the Appodeal.reward(forPlacement: "placement") method.

Frequency Settings

Impression Interval. Set the minimum allowed interval between full-screen ads or banners.

Impressions for Period. Set the maximum allowed number of impressions for a particular period of time for full-screen ads.

Impressions per Session. Set the maximum allowed number of impressions for full-screen ads per one session.

4. If you have no placements or call the Appodeal.show method with a placement that doesn’t exist or without any placements in your segment, the impression will be registered to the default placement and its settings will be applied.

To get more information about segments and placements, check out our Knowledge Base.

Crash Hunter

CrashHunter is Appodeal internal crash rate metric. This metric allows us to react quickly on any occured exceptions during Appodeal SDK or any ad networks sdks runtime to increase stability. CrashHunter metric is compatible with other popular crash rate metrics such as Crashlytics, Google Analytics SDK, etc

Installation Guide 

Manual

Add CrashHunter.framework to Link Binary With Libraries build phase of you target.

CocoaPods

Add following line to you Podfile:

Symbolicating crash reports

1. Drag & drop dSYMUploader into your project directory

2. Create New Run Script Phase in Build Phases tab of your target settings

3. Add following script in this phase:

Publish your App

Before submitting your app to the App Store, you need to check the following settings.

IFDA Settings

1. Go to the Advertising Identifier section.

2. Set Yes on the right panel.

3. Tick Serve advertisements within the app.

4. Tick confirmation box under Limit Ad tracking setting in iOS.

Usage descriptions

If your app gets rejected by the App Store because of some missing usage descriptions, add those of them you need to your info.plist file:

It’s Done

You are ready to use Appodeal. If you have any questions, check out our FAQ or contact the support team.

Third-party SDKs versions

Ad network name Version Bitcode support
AdColony 3.3.5 +
AmazonAds 2.2.17 +
AppLovin 5.0.2 +
Chartboost 7.2.0 +
FBAudienceNetwork 5.1.0 +
Flurry 9.0.0 +
Google Mobile Ads 7.33.1 +
InMobi 7.1.1 +
IronSource 6.7.9.3+
Mobvista 3.8.1 +
MoPub 5.2.0 +
myTarget 4.7.9 +
StartApp 3.8.0 +
Tapjoy 12.0.0 +
UnityAds 2.2.1 +
Vungle 6.2.0 +
YandexMobileAds 2.10.0 +

Changelog

Version 2.4.9 (December 5th, 2018)

  • Update Facebook Audienсe Network to 5.1.0
  • Fix Start App location passing
  • Fix autocache flag getter value

Version 2.4.8 (November 1st, 2018)

  • Updated Yandex Mobile Metrica to 3.2.0
  • Updated Yandex Mobile Ads to 2.10.0
  • Fixed banner predicted eCPM
  • Fixed mediation after ad expiration
  • Fixed Vungle complains
  • Improved banner view first loading (it is faster now)

Version 2.4.7 - Beta (September 27th, 2018)

  • Updated Google Mobile Ads SDK to 7.33.1
  • Fixed banner statistic splitting by placements
  • Fixed expiration timeout logic for interstitials and banners

Version 2.4.6 - Beta (September 14th, 2018)

  • Started using GoogleMobileAds unified native ads
  • Improved native ad queue mediation
  • Improved viewability tracking
  • Fixed Facebook native ads title asset rendering

Version 2.4.5 - Beta (August 9th, 2018)

  • Crosspromo targeted by placements
  • Update Unity Ads to 2.2.1
  • Update AppLovin to 5.0.2
  • Update Flurry to 9.0.0
  • Update Mobvista to 3.8.1
  • Update Start App to 3.8.0
  • Update Amazon Ads to 2.2.17
  • Update AdColony to 3.3.5
  • Update TapJoy to 12.0.0
  • Update MoPub to 5.2.0
  • Update Facebook Audience Network to 4.99.2

Version 2.4.4 - Beta (July 3rd, 2018)

  • Update Google Mobile Ads to 7.31.0
  • Update YandexMobileAds to 2.9.0, YandexMobileMetrica to 2.9.8
  • Update Facebook Audience Network to 4.99.0
  • Update IronSource to 6.7.9.2. Add instance id supports
  • Update MoPub to 5.1.0. GDPR support
  • Fix Facebook AdChoice view user interaction
  • Fix rewarded video fully watched flag in callback value

Version 2.4.3 - Beta (June 7th, 2018)

  • Fix interstitial callbacks behaviour
  • Fix potential freeze on attempt to present expired ad
  • Fix mediation stubs on incorrect banner ad creatives
  • Improve custom banner view layout

Version 2.4.1 - Beta (May 20th, 2018)

  • GDPR support
  • Fixes in PB Applovin adapter

Version 2.4.0 - Beta (Apr 10th, 2018)

  • Added Parallel Bidding support via AppodealX exchange server to increase ad revenue
  • Added Vungle Parallel Biddind support
  • Added AdColony Parallel Bidding support
  • Added AppLovin zones support
  • Improved presentation behaviour in offline mode
  • Method (BOOL)canShowAd:(AppodealShowStyle)style forPlacement:(nonnull NSString *)placement is now DEPRECATED

Version 2.3.3 (May 17th, 2018)

  • GDPR compliance
  • Update AppLovin to 5.0.1
  • Update Chartboost to 7.2.0
  • Update Flurry to 8.5.0
  • Update InMobi to 7.1.11
  • Update Vungle to 6.2.0
  • Update AdColony to 3.3.0
  • Small fixes in banner layout

Version 2.3.0 - Beta (Feb 27th, 2018)

  • Removed Appodeal.bundle
  • setCustomRule method renamed to setSegmentFilter
  • Segments v2
  • Update IronSource from 6.7.3.1 to 6.7.5
  • Update Facebook Audience Network from 4.26.0 to 4.27.2
  • Update MyTarget from 4.6.22 to 4.7.2
  • Update Vungle from 5.3.0 to 5.3.2
  • Update Mopub from 4.17.0 to 4.19.0
  • Update AdMob from 7.26.0 to 7.27.0
  • Update AdColony from 3.2.1 to 3.3.0
  • Interstitial Ad mediation perfomance improvements
  • Added placements supports for native ads
  • Removed Avocarrot adapter

Version 2.2.2 - Beta (Feb 2nd, 2018)

  • Minor fixes in native ad adapters
  • Update Mobvista to 3.3.2
  • Added AOL adapter
  • Update AppodealX adapter

Version 2.2.0 - Beta (Dec 8th, 2017)

  • Updating Admob to 7.26.0
  • Updating Avocarrot to 4.5.0
  • Updating Flurry to 8.1.0
  • Updating IronSource to 6.7.3.1
  • Implementing Pubnative new API integration
  • Changing Native Ads integration interface
  • Icon view for native ad is now optional
  • Adding Video Native Ad from MyTarget
  • Integrating Native Ads from Avocarrot
  • Native Ad from admob is now available
  • Adding AppNext Native Ad
  • Integrating Mobvista Native Ad

2.1.11 (Aug 20th, 2018 )

  • Update Yandex Mobile Ads to 2.9.8
  • Update Yandex Mobile Metric to 3.2.0

2.1.10 (Dec 20th, 2017)

  • Minor fixes in MRAID
  • Minor fixes in MyTarget adapter

2.1.9 (Nov 24th, 2017)

  • Google Mobile Ads SDK was updated to 7.26.0
  • IronSource was updated to 6.7.3.1
  • StartApp was updated to 3.5.1
  • Mobvista 2.5.0 interstitials and rewarded videos were added
  • Tapjoy video interstitials were added

2.1.7 (Oct 20, 2017)

  • AdMob new request politics compliance
  • iPhone X compliance
  • Chartboost was updated to 7.0.1
  • YandexMobileAds was updated to 2.7.2

2.1.6 (04 Oct. 2017)

  • AmazonAds was updated to 2.2.15.1
  • AdColony was updated to 3.2.1

2.1.5 (26 Sept. 2017)

  • MRAID prerendering is optional now
  • Google-Mobile-Ads-SDK was updated to 7.24.0
  • IronSource was updated to 6.6.8
  • FacebookAudienceNetwork was updated to 4.26.0
  • IronSource adapter crashes fix

2.1.4 (14 Sept. 2017)

  • fixed s2s callback for server https scheme
  • added iOS 11 support
  • added method setChildDirectedTreatment
  • added method rewardForPlacement
  • added FacebookAudienceNetwork rewarded video
  • added Admob Rewarded video
  • added Applovin banner and MREC
  • complains improvement (default: hide)
  • support placements for Vungle
  • support playable ads in MRAID
  • support Video in MRAID
  • support playable ads in rewarded video
  • improved AppodealX integration (support headers for events)
  • offline mode for ad showing
  • old logic for segment setting Interstitial-video returned (separate settings for static interstitials and skippable video)
  • open Store links for video, banners, interstitials without redirect
  • improvement of Connection determination for ad networks requests
  • fixed test native ad click handling
  • fixed Applovin rewarded videos adapter
  • Unity Ads crash fixes
  • StartApp crash fixes

2.0.0 (May 31th, 2017)

  • Static Intrestitial Ad and Skippable Video were merged into one type - Interstitial
  • Appodealx fully support
  • Native ad queue API
  • Update native media view
  • Update MRAID aligment for better UX
  • Added DFP support
  • Show styles as bitmask. Support operrand |
  • Improvements in VAST player
  • Update external network SDKs
  • Intelligent viewability detection
  • Intelligent fraud detection
  • Improve media files cacher
  • Fixes in segment/placement handling
  • Fixes in MRAID
  • Fixes in VAST
  • Improve banner refreshing cycle
  • Optimisation CPU/RAM work
  • Suppress AppLovin close button when app enter foreground
  • Fix VAST memory leak
  • Validate native ad assets
  • Avoid crashes in AmazonAds after user interaction

1.3.9

  • CocoaPods modular import YandexMobileAds, MoPub, AppLovin headers
  • FIX precache stat tracking for banners, interstitials, MRECs
  • FIX multiplying call +showStyle:rootViewController: for showStyles: AppodealShowStyleBannerBottom, AppodealShowStyleBannerTop

1.3.8

  • Performance improvement banner view precache logic.
  • FIX complain view memory leak
  • Deprecate API: APDBannerView loadAdWithPrecache

1.3.7

  • bug fixes for S2S callbacks implementation

1.3.6

  • bug fixes: Frequency capping
  • bug fixes: AdColony exception
  • Mopub rewarded video fix

1.3.5

  • bug fixes: Show with Placement for Rewarded video
  • small improvements

1.3.4

  • ATS Compliance Updates
  • bug fixes: Show with Placement when Autocache on

1.3.3

  • fixes statistics issues for OpenRTB
  • added disable network via segment settings
  • added auto refresh for APDBannerView
  • added RTB watch for video/rewarded video
  • added ability save click-links for direct offers and cross promo ads
  • bug fixes Pubnative with nil url request

1.3.1-1.3.2

  • stop SDK for iOS less than 8.0.0
  • added descriptions to .h files
  • added Appodeal setFramework for Plugin integration
  • added prefixes for VAST
  • correct bidrequest for Rewarded video for Open Rtb Integration
  • full support of Cocoapods
  • custom Cocoapods integration (Video, Native, Banner, Interstitial)

1.3.0

  • re-new Appodeal SDK - full framework with all adapters inside
  • uses WKWebView in MRAID
  • implementation new VAST adapter
  • fixes banner top&bottom aligning when use smart banners
  • ipv6 compatibility
  • supports hd sizes for banners and interstitials in cross-promo
  • support zeroidfa function for openrtb
  • support BCAT for openrtb
  • support Apps for kids option
  • updates adapters: Vungle 4.0.6, Chartboost 6.5.1, Facebook Audience 4.16.0, MyTarget 4.5.10

1.2.4

  • fixes banner size and view (320x50, 728x90)
  • disable banner background for default
  • add mute button and fullscreen mode for APDMediaView

1.2.3

  • fixes critical VAST error
  • added new method - Appodeal setBannerBackgroundVisible:YES

1.2.2

  • added Smaato native ad

1.2.0

  • improvements for ios 10 integrations
  • updates Cocoapods podspec - added all frameworks
  • support Swift for Cocoapods
  • added + (void)setUserId:(NSString *)userId;

1.1.1

  • performance improvement

1.1.0

  • iOS 10 support
  • added Tapjoy rewarded video adapter
  • added MyTarget video/rewarded video adapter
  • updated Google Admob
  • updated Autoclick detection for Open RTB
  • updated Pubnative integration for Native Ads
  • added new API for banners (enable/disable SmartBanners, Background, Animation
  • added Expandable banner ads

1.0.1

  • fix sending impressions for OpenRTB banners
  • fix APDVideoPlayer (VAST, MediaView) for iOS 8.4 and less
  • update RRI request

1.0.0

  • new API for ads calling (also support all old methods)
  • separete ads networks adapters from main framework
  • bitcode support
  • support OpenRtb integration for all types of ads
  • support multithread (depend on device&proccessor type)
  • support force revenue mode
  • support segments
  • full support Native video ads
  • use AVPlayer instead MPMoviePlayer in VAST implementaton
  • new log levels for quality debuging: Error, Warning, Info, Debug, Verbose (remove old Debug mode)
  • new callback for banner - (void)bannerDidRefresh
  • callbacks return errors and object, that receive error
  • new callback for all types of video - DidBecomeUnavailable, didFailToPresentWithError
  • add internal monitoring of exceptions
  • adwatch option - monitor for showed ads
  • remove singleton for all ads types
  • improve of viewability control option

0.10.7

  • Pubnative S2S integration for Native ads

0.10.6

  • update Direct offers for Native ads
  • fixes error in video-offers on iOS 7.x

0.10.4

  • Yandex Metrica and Yandex ADS updstes only

0.10.3

  • fixed error with Mopub banners

0.10.2

  • small bug fixes

0.10.1

  • Fixes RRI first request bug
  • Implements full MRAID features
  • autoclick protection

0.10.0

  • updated anti-froud protection
  • fixes Yandex Rewarded video error
  • update Facebook Audience Network
  • adds MoPub Video Native ads
  • added ability to control autoplay of Video Native ads

0.9.2

  • Native ads mediation improvement

0.9.0

  • Native video ads (Applovin, Facebook, Pubnative, Adcolony, MoPub)
  • added Smaato native ads
  • added Test native ads
  • added Native ads Direcrt offers
  • added AppodealNativeMediaView
  • added AppodealAdChoicesView
  • improvement of Video caching
  • updated SDKs (Facebook Audience, StartApp, Pubnative, Inmobi)
  • updated VAST | VPAID video integration
  • SpotX VPAID integration
  • added Yandex Video
  • fixed backgrounds crashes

0.8.1

  • added MREC (300*250 banners) - Admob, Inmobi, Inneractive, Yandex, MoPub, liveRails
  • native ads callbacks (nativeAdDidClick, nativeAdDidPresent)
  • imrovement of VAST Video integration
  • added OpenX Interstitials and Banners (320*50)
  • small bug fixes in Banners and Native ads
  • imrovement Native Ads template
  • added MoPub Rewarded video

0.8.0

  • added MREC (300*250 banners) - Admob, Amazon ,Inmobi, Inneractive, Yandex
  • native ads callbacks (nativeAdDidClick, nativeAdDidPresent)
  • imrovement of VAST Video integration
  • added OpenX Interstitials
  • small bug fixes in Banners and Native ads

0.7.0

  • improvment of Rewarded video
  • show ads with price floor
  • test mode in SDK
  • Millennial Media (banners, interstitials, video)
  • update MoPub SDK
  • update Yandex ads SDK (error fixes)
  • update LiveRails SDK
  • update SpotX SDK

0.6.2

  • small bug fixes
  • updates MoPub Native ads implementation
  • adds VAST Direct video campaign
  • Fixes Banner zero size warning

0.6.1

  • fixes some warnings
  • update AppodealBannerView class
  • fixs crashes in iPad banners in sandbox mode

0.6.0

  • separate ad type AppodealShowStyleRewardedVideo for rewarded videos
  • StartApp video (Rewarded) addon
  • Inmobi video (rewarded) addon
  • SpotX video (skippable) addon
  • Liverail video (rewarded) addon
  • fix of Applovin crashes with user setting
  • Native ads manager (load up to 10 native ads)
  • image in native ads (StartApp, Pubnative)
  • Flurry native ads integration update
  • error fix with Pubnative clicks
  • contentRating for native ads
  • Inner-active (banners and interstitials) addon
  • Rubicon (banners and interstitials) update
  • Liverail (banner, interstitials) addon
  • Amazon ads integration (adds click) improvement
  • AppodealBannerView class with banners size
  • added a banner 300*250 (beta)
  • added a banner size (320*50, 728*90, 300*250)
  • network requests optimization
  • external SDKs update
  • user setting before initialized SDK addon
  • removed OpenX banners

0.5.4

  • Remove Adcolony rewarded popup
  • iOS 9.1 support

0.5.3

  • Critical bug fixes
  • Recommended for all user
  • fix MRAID banned error

0.5.2

  • Banner auto refresh interval is now configurable from dashboard
  • Bug fixes

0.5.1

  • Updates Inmobi SDK
  • Updates Inmobi Video, Interstitials, Banners, Native ads adapters
  • Adds Flurry Native ads
  • Fixes crash AdMob smart-banners
  • Fixes Rubicon Interstitial adapter
  • Adds asynchronous download of images in templates for native ads
  • Fixes crash of templates of native ads

0.5.0 Golden Master iOS SDK

  • Native ads support (Target mail.ru, Facebook, Inmobi, StartApp, Applovin, MoPub, Avocarrot, Pubnative, Flurry)
  • Native ads templates
  • updates StartApp SDK integration
  • resolves nonRewarded Adcolony video error
  • updates Inmobi SDK integration

0.4.9

  • Only XCODE 7 support
  • Yandex ads banners
  • Yandex ads interstitials
  • fix Cocoalumberjack integration problems
  • improvement Interstitials and video mediation
  • banner autocache (disable by default)

3rd party SDK updatest for iOS 9

0.4.8

  • Last version which compatible XCODE 6.x
  • Fix video delegate
  • Check version of SDK in API
  • Target mail.ru iPad banner- center position

0.4.7.1

  • Update Target mail.ru sdk for banners

0.4.7

  • Fix MoPub video error
  • Add Rubicon banners
  • Add Rubicon interstitials
  • Add OpenX banners
  • Stop SDK public method
  • Https support (for iOS 9)

0.4.6

  • Critical bug fixes
  • Renew skippable/nonskippable video option
  • Add Chartboost video

0.4.5

  • Fix MoPub`s error click statistics (interstitials)
  • Facebook Audience Network added (banners)
  • New Public method - disableLocationPermissionCheck
  • Add new network - StartApp (banners and interstitials)

0.4.4

  • Prepare SDK for external integration (Unity plugin is ready too)
  • Inmobi banners and interstitials support
  • Removing Applovin banners
  • StartApp banners and interstitials support (for internal testing apps only)
  • Yandex banners and interstitials support (for internal testing apps only)

0.4.3

  • Facebook Audience Network added (Interstitials)
  • Smaato added (Banner and Interstitials)
  • Fix Amazon banner view
  • Public methods added
  • Fixes MRAID clicks handling

0.4.1

  • new adnetwork implementation - Target Mail.ru (Banners, Interstitials), Adcolony & Vungle (Video), Inmobi (Banner & Interstitials)
  • improvement Banner integration
  • support iPAD (vertical orientation)
  • skip/non skip video
  • preroll video
  • apps for kids support

0.3.6

  • fixed video/sound playback
  • fixed 'applicationWillEnterForeground' for banners
  • fixed hide banner
  • fixed bugs

0.3.5

  • adds AppLovin videos
  • adds Swift module map (obsoletes bridge header)
  • fixes ads logic
  • fixes bugs

0.3.4

  • fixed smaato banners
  • fixed banenrs logic
  • fixed bugs

0.3.3

  • updated admob
  • fixed mraid banners/interstitials
  • fixed bugs

0.3.2

  • added new api
  • fixed mraid banners/interstitials
  • fixed fixed banners
  • fixed bugs

0.3.1

  • added new api
  • fixed fixed banners
  • fixed bugs

0.3.0

  • added new api
  • added method showWithAdNetworkName
  • fixed fixed video ads
  • fixed optional callbacks

0.2.9

  • fixed cacheBanner timeout
  • fixed disable admob precache
  • fixed Interstitial networks

0.2.8

  • Fixed banners loading

0.2.7

  • Fixed MoPub video

0.2.6

  • Fixed video ads
  • Fixes bugs

0.2.5

  • fixed banners fillrate

0.2.4

  • Added Chartboost video
  • Added MoPub video
  • Fixes bugs

0.2.3

  • Fixed banner sizes for large screens
  • Fixes bugs

0.2.2

  • Added new sdk api
  • Fixes bugs

0.2.1

  • Added AerServ
  • Added CocoaPods support
  • Added new sdk api
  • Fixes bugs

0.2.0

  • Added AdColony
  • Added Vungle
  • Added new sdk api
  • Fixes bugs

0.1.9

  • Fixes mraid banner sizes.
  • Fixes device rotation craches.

0.1.8

  • Fixes banner position when device orientation changed
  • Fixes craches.

0.1.7

  • Fixes reward user callback

0.1.6

  • Added AODAdView