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.

Appodeal iOS SDK 2.1.7 documentation

Download SDK

AdColony presentation issue: Sometimes you can see in logs something like this: 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.This can happen when rootViewController that was used in showAd doesn't belong to the window that is the first object in the windows array. (AdColony checks if first window's rootViewController matches passed rootViewControler, and if it is not then AdColony fails to present ad and shows such error). This can happen when an application has multiple windows and each window is independent of the other windows in the app.

Appodeal iOS SDK works on >= iOS 8.0 version and is compatible with both ARC and non-ARC projects. It depends (Project Settings -> Build Phases -> Link Binary With Libraries) on the following Apple frameworks:'

Delegate callbacks (optional)

AppodealNonSkippableVideoDelegate protocol includes a variety of optional methods that you can use to be notified of events, e.g. when an video ad has successfully loaded, or when an video ad was completed. To handle these events you need to implement any of the optional methods of AppodealNonSkippableVideoDelegate protocol.

Delegate callbacks (optional)

AppodealRewardedVideoDelegate protocol includes a variety of optional methods that you can use to be notified of events, e.g. when an video ad has successfully loaded, or when an video ad was completed with reward (amount and name can be configured via Appodeal Dashboard). To handle this events you need to implement any of the optional methods of AppodealRewardedVideoDelegate protocol.

S2S Rewards Callbacks

To secure your apps economy we offer S2S reward callbacks. To validate each reward you need to setup callback URL on your server that will receive reward information. We will pass user data to your callback URL that you will need to validate and adjust user balance accordingly.

Delegate callbacks (optional)

AppodealBannerDelegate protocol includes a variety of optional callbacks that you can use to be notified of events, e.g. when an ad banner has successfully loaded, or when an ad banner is about to appear. To handle callbacks, you need to implement AppodealBannerDelegate protocol.

Skippable Video Integration

Skippable Video is now deprecated.

Interstitial now includes skippable video.

Native Ads Integration

A "Native Ad" gives you the opportunity to design and control the mobile app ad exactly as you would like it. Using Native Ads, you can create an ad experience that perfectly fits your application's design, flow, content and functionality.

Basic integration

Import the Appodeal in your view controller and add the following lines to the header file for each view in which you would like to show an ad.

Native Ad Queue

Native AdQueue is a new feature of using native ads in Appodeal SDK. You don't need to download native ads manually anymore. All you have to do is grab some ads from adQueue and adQueue will load new ads automatically.

Using Media View

APDNativeAd provides video ads. You can show them with APDMediaView. That object created with native ad and rootViewController. APDMediaView uses image from native ad as placeholder. After this you can set boolean flags to mediaView: skippable and muted . If you set skippable to YES, then this video can be skipped after 5 seconds. You can add a custom mute button on media view and enabled/disabled sound playable video. When the video is completed, media view will show the image. If you use the APDMediaView as the main Image, you can set the type of media view.

You can set sound to mute while playing video. For example, you can unmute ad by usage:

mediaView.muted = NO;

Appodeal Ad Choices View

Most ads networks require the use of data privacy view in native ad. APDNativeAd returns instance of UIView that is ad choices view. This view must not overlap any assets or be overlapped by any assets. The size of this icon should be 24x24 or more. If this element not required by the networks ad choices view, it will return nil.

Native ads integration with UITableView

If you are using native ads with UITableView then you have to be sure that native ad was loaded before creating native ad cell. If ad was loaded - then after creating cell you will need to attach native ad to contentVIew of the cell. [nativeAd attachToView:cell.contentView viewController:controller]; . When you are creating native ad cell you can use xibs or you can create it manually in code. You can see xib example below:

After native ad was loaded you will need to create native ad cell, and then assign its properties to properties of elements inside your custom cell.

NSString * descriptionText : Text description of native ad. Optional. If you choose to display the description you should display minimum 75 characters. You should limit number of lines displayed suitable for your app. You can add ellipsis at the end.

NSNumber * starRating : Rating of the app in [0-5] range.

NSNumber * contentRating : Content rating of the ad. Optional.

APDImage * iconImage : Icon. Either icon or image is mandatory to display.

APDImage * mainImage : Image. Either icon or image is mandatory to display.

UIView * adChoicesView : If returned view is not null it is mandatory to display it in any corner of native ad. Only used for Facebook to display AdChoices icon.

Segments and Placements

Segments are divisions of your user base, which share commonalities such as age, sex, location, interests, income bracket, etc. There are several ways to segment users into groups including the use of demographics, in-app behavior or engagement analysis, interests and personal profile data, and location.

Once user segments have been created, they can then be analyzed and used to configure ads.

5) Segment settings. You can apply following settings for each segment. They will apply to all users matched to that segment.

Disable networks - Allows you to disable any network for an ad type it supports.

Min pricefloor - Allows you to set minimum price floor for each ad type. Ads with eCPM lower than price floor will not be filled.

Overriden eCPM - Allows you to override eCPM of each network for ad type. High eCPM(100+) will ensure that the network will be at the top of the waterfall and get the first fill. Low eCPM (close to 0) will ensure that the network acts as backfill.

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

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

Placements

Appodeal SDK allows you to tag each impression with different placement.

Placement can be used for separating your revenue by placement in our dashboard and determining which placement earns you more money.

Also you can configure your impression logic for each placement. You can use the following Placement settings:

Disable ads - disables ads completely for that placement.

Disable as types - disables specific ad type for a placement. If you integrated to show Appodeal.INTERSTITIAL | Appodeal.REWARDED_VIDEO you can disable interstitials or rewarded video for the placement.

Reward - you can set a reward amount and name which will be passed in onRewardedVideoFinished callback for all videos shown with this placement.

Impression/Refresh period - you can set the impression period (in seconds) for interstitials and rewarded video shown with the placement. If the period between two impression is less than the impression period, the second impression will not be shown and the Appodeal.show method will return false. For banners and MRECs you can set their refresh period.

Min pricefloor - Allows you to set minimum price floor for each ad type. Ads with eCPM lower than price floor will not be shown and Appodeal.show method will return false.

Placements can only be used as part of existing segment. If you only want to use placements, create one segment for each platform without any rules and match rule ALL. All of your users will match to it.

If you have no placement, or call Appodeal.show with placement that do not exist or without placement in your segment, the impression will be tagged with 'default' placement and its settings will be applied

IMPORTANT: placements affect ONLY ad presentation, not loading or caching.