Integrate Third-Party Ad Networks on iOS

MoPub partners with most ad networks and supports these mediation partners with pre-built adapters. Refer to our list of supported ad networks. You can easily integrate our pre-built adapters by using the MoPub Mediation Integration Tool. You can still mediate ad networks with whom we do not partner (unsupported networks) by writing your own mediation adapters.

Use this guide to set up mediation by downloading adapters and integrating them into your app project. There are two ways to integrate networks: through our MoPub Mediation Integration Tool (recommended), or manually via source code.

We recommend that you integrate adapters using our MoPub Mediation Integration Tool. This is the more efficient option if you’re just getting started with mediation, and don’t need to customize anything.

Our tool provides a new and convenient integration approach. Simply select the ad networks you want to mediate, and the page will output the pod name information to include in your app. Once your pod is final, simply run pod install to get the latest adapters.

Integrate Adapters Manually via Source Code (GitHub)

If you prefer, you can still integrate adapters manually using the existing process. We have migrated our mediation adapters to a new GitHub repository.

  1. Download the mediation adapters. Within the repository, you can find the adapter files grouped by ad network. Simply clone the entire repository or manually download the adapter files that you want to use.

  2. Add the adapter files to your app project. In your app project, make sure the necessary directory paths exist (if you are a new publisher, you may not have them).

    Place the adapter files into the respective directory depending on the ad network(s) you plan to mediate, in the following format: [ad network name]/[adapter files].

    For example, to mediate AdColony, add the AdColony .m and .h files (AdColonyInterstitialCustomEvent and AdColonyRewardedVideoCustomEvent) to an AdColony directory.

    Important notes:

    • Facebook Audience Network: The FacebookNativeAdAdapter makes use of MPNativeAdAdapterDelegate. Make sure you implement this delegate in your code.

    • Manual Reference Counting: If you are using Manual Reference Counting, set the -fobjc-arc compiler flag on these files. Follow these instructions in our integration article.

  3. Incorporate third-party SDKs into your project. You can usually find this information on the ad network’s support page.

  4. In the Publisher UI Networks tab, set up the corresponding network campaigns and target the proper ad units. Refer to our Networks tab documentation for more detail.

Set Up Ad Renderers for Native Ads

To run native ads through mediated ad networks, you must set up the native ad renderer. Create and register the appropriate renderer for each ad network to ensure that your native ad views are laid out as intended. Refer to our Networks tab documentation for more detail. Don’t forget the default MPStaticNativeAdRenderer, shown below.

MoPub Renderer

MPNativeAdRendererConfiguration *mopubConfiguration =

  [MPStaticNativeAdRenderer rendererConfigurationWithRendererSettings:settings];

Third-Party Ad Networks’ Renderers

As an example, the following is the code snippet for Google’s ad renderer:

MPNativeAdRendererConfiguration *googleConfiguration =

  [MPGoogleAdMobNativeRenderer rendererConfigurationWithRendererSettings:settings];

Facebook Audience Network Renderer

Starting with the 5.2.0 release of the Facebook Audience Network SDK, you can simplify your ad layout by using a pre-defined template provided by Facebook. You won’t need to use a custom layout. Simply pass your MPStaticNativeAdRendererSettings to the FacebookNativeAdRenderer’s rendererConfigurationWithRendererSettings: call, and register that configuration with the ad request (FacebookNativeAdRenderer is a new adapter class introduced in the release):

MPStaticNativeAdRendererSettings *settings = [[MPStaticNativeAdRendererSettings alloc] init];
MPNativeAdRendererConfiguration *config = [FacebookNativeAdRenderer rendererConfigurationWithRendererSettings:settings];

MPNativeAdRequest *adRequest = [MPNativeAdRequest requestWithAdUnitIdentifier:@"YOUR_AD_UNIT_ID" rendererConfigurations:@[config]];

Note: At this time, we only encourage you to use the FacebookNativeAdRenderer from above with MoPub’s manual native ad integration, because of layout issues caused by integrating with the Ad Placer (MPTableViewAdPlacer, or MPCollectionViewAdPlacer, etc.). You may notice an irregular layout of assets when using the FacebookNativeAdRenderer in conjunction with the MoPub Ad Placer. This behavior has been confirmed by the Facebook Audience Network team.

Pangle Renderer

To register Pangle’s renderer, use the following code:

MPNativeAdRendererConfiguration *pangleConfiguration =

  [PangleNativeAdRenderer rendererConfigurationWithRendererSettings:settings];

Mintegral Renderer

MPNativeAdRendererConfiguration *mintegralConfiguration =

  [MintegralNativeAdRenderer rendererConfigurationWithRendererSettings:settings];

Register Ad Renderers

Register your ad renderers as follows:

// MPTableViewAdPlacer
MPTableViewAdPlacer placer = [MPTableViewAdPlacer placerWithTableView:self.tableView viewController:self rendererConfigurations:@[mopubConfiguration, googleConfiguration]];
 self.placer.delegate = self;

// MPCollectionViewAdPlacer
MPCollectionViewAdPlacer placer = [MPCollectionViewAdPlacer placerWithCollectionView:self.collectionView viewController:self rendererConfigurations:@[mopubConfiguration, googleConfiguration]];

// MPNativeAdRequest (Manual Integration)
MPNativeAdRequest adRequest = [MPNativeAdRequest requestWithAdUnitIdentifier:nativeAdId rendererConfigurations:@[mopubConfiguration, googleConfiguration]];

Last updated August 28, 2021

TWITTER, MOPUB, and the Bird logo are trademarks of Twitter, Inc. or its affiliates. All third party logos and trademarks included are the property of their respective owners.

© 2021 MoPub (a division of Twitter, Inc.)