diff --git a/_data/sidebar.yml b/_data/sidebar.yml
index 5dc6fc9637..7d7c85a26c 100644
--- a/_data/sidebar.yml
+++ b/_data/sidebar.yml
@@ -612,7 +612,7 @@
subgroup: 0
- sbSecId: 2
- title: Rendering API (Open Beta)
+ title: Rendering API
link:
isHeader: 1
headerId: rendering
@@ -646,7 +646,7 @@
subgroup: 1
- sbSecId: 2
- title: Pure In-App Bidding
+ title: Custom or No mediation
link: /prebid-mobile/modules/rendering/ios-sdk-integration-pb.html
isHeader: 0
isSectionHeader: 0
@@ -670,8 +670,8 @@
subgroup: 1
- sbSecId: 2
- title: Integration with MoPub
- link: /prebid-mobile/modules/rendering/ios-sdk-integration-mopub.html
+ title: Integration with AppLovin MAX
+ link: /prebid-mobile/modules/rendering/ios-sdk-integration-max.html
isHeader: 0
isSectionHeader: 0
sectionTitle:
@@ -684,6 +684,14 @@
isSectionHeader: 0
sectionTitle:
subgroup: 1
+
+- sbSecId: 2
+ title: Ad Experience Controls
+ link: /prebid-mobile/modules/rendering/ios-sdk-customization-controls.html
+ isHeader: 0
+ isSectionHeader: 0
+ sectionTitle:
+ subgroup: 1
- sbSecId: 2
title: "Android"
@@ -703,7 +711,7 @@
subgroup: 1
- sbSecId: 2
- title: Pure In-app Bidding
+ title: Custom or No mediation
link: /prebid-mobile/modules/rendering/android-sdk-integration-pb.html
isHeader: 0
isSectionHeader: 0
@@ -727,8 +735,8 @@
subgroup: 1
- sbSecId: 2
- title: Integration with MoPub
- link: /prebid-mobile/modules/rendering/android-sdk-integration-mopub.html
+ title: Integration with AppLovin MAX
+ link: /prebid-mobile/modules/rendering/android-sdk-integration-max.html
isHeader: 0
isSectionHeader: 0
sectionTitle:
@@ -741,6 +749,14 @@
isSectionHeader: 0
sectionTitle:
subgroup: 1
+
+- sbSecId: 2
+ title: Ad Experience Controls
+ link: /prebid-mobile/modules/rendering/android-sdk-customization-controls.html
+ isHeader: 0
+ isSectionHeader: 0
+ sectionTitle:
+ subgroup: 1
- sbSecId: 2
title: "Ad Server"
@@ -766,10 +782,10 @@
isSectionHeader: 0
sectionTitle:
subgroup: 1
-
+
- sbSecId: 2
- title: Rendering Order - MoPub
- link: /prebid-mobile/modules/rendering/rendering-mopub-line-item-setup.html
+ title: Custom Network - MAX
+ link: /prebid-mobile/modules/rendering/rendering-max-line-item-setup.html
isHeader: 0
isSectionHeader: 0
sectionTitle:
@@ -1265,30 +1281,6 @@
sectionTitle:
subgroup: 0
-- sbSecId: 3
- title: Setup Line Items For MoPub
- link: /prebid-mobile/adops-line-item-setup-mopub.html
- isHeader: 0
- isSectionHeader: 0
- sectionTitle:
- subgroup: 0
-
-- sbSecId: 3
- title: Setup Rewarded Video Line Items For MoPub
- link: /prebid-mobile/adops-setup-rewarded-video-mopub.html
- isHeader: 0
- isSectionHeader: 0
- sectionTitle:
- subgroup: 0
-
-- sbSecId: 3
- title: Setup Full Screen Video Line Items For MoPub
- link: /prebid-mobile/adops-setup-full-screen-video-mopub.html
- isHeader: 0
- isSectionHeader: 0
- sectionTitle:
- subgroup: 0
-
- sbSecId: 3
title: Setup Native Ads
link: /prebid-mobile/adops-native-setup.html
diff --git a/assets/images/ad-ops/mopub/full/mopub-lineitem-full-adunit.png b/assets/images/ad-ops/mopub/full/mopub-lineitem-full-adunit.png
deleted file mode 100644
index 45485964f3..0000000000
Binary files a/assets/images/ad-ops/mopub/full/mopub-lineitem-full-adunit.png and /dev/null differ
diff --git a/assets/images/ad-ops/mopub/full/mopub_lineitem_full_vasttag.png b/assets/images/ad-ops/mopub/full/mopub_lineitem_full_vasttag.png
deleted file mode 100644
index ec952a815c..0000000000
Binary files a/assets/images/ad-ops/mopub/full/mopub_lineitem_full_vasttag.png and /dev/null differ
diff --git a/assets/images/ad-ops/mopub/rewarded/mopub-lineitem-advanced.png b/assets/images/ad-ops/mopub/rewarded/mopub-lineitem-advanced.png
deleted file mode 100644
index 423d9e4eac..0000000000
Binary files a/assets/images/ad-ops/mopub/rewarded/mopub-lineitem-advanced.png and /dev/null differ
diff --git a/assets/images/ad-ops/mopub/rewarded/mopub-lineitem-rewarded copy.png b/assets/images/ad-ops/mopub/rewarded/mopub-lineitem-rewarded copy.png
deleted file mode 100644
index 5bf220d953..0000000000
Binary files a/assets/images/ad-ops/mopub/rewarded/mopub-lineitem-rewarded copy.png and /dev/null differ
diff --git a/assets/images/ad-ops/mopub/rewarded/mopub-lineitem-rewarded.png b/assets/images/ad-ops/mopub/rewarded/mopub-lineitem-rewarded.png
deleted file mode 100644
index dafdbd7081..0000000000
Binary files a/assets/images/ad-ops/mopub/rewarded/mopub-lineitem-rewarded.png and /dev/null differ
diff --git a/assets/images/ad-ops/mopub/rewarded/mopub_lineitem_vasttag.png b/assets/images/ad-ops/mopub/rewarded/mopub_lineitem_vasttag.png
deleted file mode 100644
index cda6243ce5..0000000000
Binary files a/assets/images/ad-ops/mopub/rewarded/mopub_lineitem_vasttag.png and /dev/null differ
diff --git a/assets/images/ad-ops/mopub/rewarded/mopub_lineitem_vasttag2.png b/assets/images/ad-ops/mopub/rewarded/mopub_lineitem_vasttag2.png
deleted file mode 100644
index b5eadf1500..0000000000
Binary files a/assets/images/ad-ops/mopub/rewarded/mopub_lineitem_vasttag2.png and /dev/null differ
diff --git a/assets/images/prebid-mobile/adops-line-item-setup-mopub/mopub1.png b/assets/images/prebid-mobile/adops-line-item-setup-mopub/mopub1.png
deleted file mode 100644
index dafdbd7081..0000000000
Binary files a/assets/images/prebid-mobile/adops-line-item-setup-mopub/mopub1.png and /dev/null differ
diff --git a/assets/images/prebid-mobile/adops-line-item-setup-mopub/mopub2.png b/assets/images/prebid-mobile/adops-line-item-setup-mopub/mopub2.png
deleted file mode 100644
index 33f9729029..0000000000
Binary files a/assets/images/prebid-mobile/adops-line-item-setup-mopub/mopub2.png and /dev/null differ
diff --git a/assets/images/prebid-mobile/adops-line-item-setup-mopub/mopub3.png b/assets/images/prebid-mobile/adops-line-item-setup-mopub/mopub3.png
deleted file mode 100644
index a960770821..0000000000
Binary files a/assets/images/prebid-mobile/adops-line-item-setup-mopub/mopub3.png and /dev/null differ
diff --git a/assets/images/prebid-mobile/adops-line-item-setup-mopub/mopub4.png b/assets/images/prebid-mobile/adops-line-item-setup-mopub/mopub4.png
deleted file mode 100644
index 9773ab05ea..0000000000
Binary files a/assets/images/prebid-mobile/adops-line-item-setup-mopub/mopub4.png and /dev/null differ
diff --git a/assets/images/prebid-mobile/modules/rendering/Prebid-In-App-Bidding-Overview-MoPub.png b/assets/images/prebid-mobile/modules/rendering/Prebid-In-App-Bidding-Overview-MoPub.png
deleted file mode 100644
index cc55054819..0000000000
Binary files a/assets/images/prebid-mobile/modules/rendering/Prebid-In-App-Bidding-Overview-MoPub.png and /dev/null differ
diff --git a/assets/images/prebid-mobile/modules/rendering/ad-experience-android-close-button-possition-top-left.png b/assets/images/prebid-mobile/modules/rendering/ad-experience-android-close-button-possition-top-left.png
new file mode 100644
index 0000000000..e6245c3e5f
Binary files /dev/null and b/assets/images/prebid-mobile/modules/rendering/ad-experience-android-close-button-possition-top-left.png differ
diff --git a/assets/images/prebid-mobile/modules/rendering/ad-experience-android-skip-button-possition-top-left.png b/assets/images/prebid-mobile/modules/rendering/ad-experience-android-skip-button-possition-top-left.png
new file mode 100644
index 0000000000..99f7cc63ba
Binary files /dev/null and b/assets/images/prebid-mobile/modules/rendering/ad-experience-android-skip-button-possition-top-left.png differ
diff --git a/assets/images/prebid-mobile/modules/rendering/ad-experience-ios-close-button-possition-top-left.png b/assets/images/prebid-mobile/modules/rendering/ad-experience-ios-close-button-possition-top-left.png
new file mode 100644
index 0000000000..16e2813058
Binary files /dev/null and b/assets/images/prebid-mobile/modules/rendering/ad-experience-ios-close-button-possition-top-left.png differ
diff --git a/assets/images/prebid-mobile/modules/rendering/ad-experience-ios-skip-button-possition-top-left.png b/assets/images/prebid-mobile/modules/rendering/ad-experience-ios-skip-button-possition-top-left.png
new file mode 100644
index 0000000000..18dd49d35d
Binary files /dev/null and b/assets/images/prebid-mobile/modules/rendering/ad-experience-ios-skip-button-possition-top-left.png differ
diff --git a/assets/images/prebid-mobile/modules/rendering/max-ad-unit-setup.png b/assets/images/prebid-mobile/modules/rendering/max-ad-unit-setup.png
new file mode 100644
index 0000000000..3651005147
Binary files /dev/null and b/assets/images/prebid-mobile/modules/rendering/max-ad-unit-setup.png differ
diff --git a/assets/images/prebid-mobile/modules/rendering/max-cusom-network-setup.png b/assets/images/prebid-mobile/modules/rendering/max-cusom-network-setup.png
new file mode 100644
index 0000000000..e2a921992d
Binary files /dev/null and b/assets/images/prebid-mobile/modules/rendering/max-cusom-network-setup.png differ
diff --git a/assets/images/prebid-mobile/modules/rendering/order-mopub-create.png b/assets/images/prebid-mobile/modules/rendering/order-mopub-create.png
deleted file mode 100644
index eccdb4f6cc..0000000000
Binary files a/assets/images/prebid-mobile/modules/rendering/order-mopub-create.png and /dev/null differ
diff --git a/assets/images/prebid-mobile/modules/rendering/order-mopub-creative-native.png b/assets/images/prebid-mobile/modules/rendering/order-mopub-creative-native.png
deleted file mode 100644
index 8390fc608e..0000000000
Binary files a/assets/images/prebid-mobile/modules/rendering/order-mopub-creative-native.png and /dev/null differ
diff --git a/assets/images/prebid-mobile/modules/rendering/order-mopub-li-ad-unit.png b/assets/images/prebid-mobile/modules/rendering/order-mopub-li-ad-unit.png
deleted file mode 100644
index 494bc1b600..0000000000
Binary files a/assets/images/prebid-mobile/modules/rendering/order-mopub-li-ad-unit.png and /dev/null differ
diff --git a/assets/images/prebid-mobile/modules/rendering/order-mopub-li-audience.png b/assets/images/prebid-mobile/modules/rendering/order-mopub-li-audience.png
deleted file mode 100644
index 3f5593f958..0000000000
Binary files a/assets/images/prebid-mobile/modules/rendering/order-mopub-li-audience.png and /dev/null differ
diff --git a/assets/images/prebid-mobile/modules/rendering/order-mopub-li-type.png b/assets/images/prebid-mobile/modules/rendering/order-mopub-li-type.png
deleted file mode 100644
index 7cbe9f6644..0000000000
Binary files a/assets/images/prebid-mobile/modules/rendering/order-mopub-li-type.png and /dev/null differ
diff --git a/assets/images/prebid-mobile/modules/rendering/order-mopub-native-ad-creative.png b/assets/images/prebid-mobile/modules/rendering/order-mopub-native-ad-creative.png
deleted file mode 100644
index 7a2f63867b..0000000000
Binary files a/assets/images/prebid-mobile/modules/rendering/order-mopub-native-ad-creative.png and /dev/null differ
diff --git a/assets/images/prebid-mobile/modules/rendering/order-mopub-native-ad-li.png b/assets/images/prebid-mobile/modules/rendering/order-mopub-native-ad-li.png
deleted file mode 100644
index 3d02f09ef4..0000000000
Binary files a/assets/images/prebid-mobile/modules/rendering/order-mopub-native-ad-li.png and /dev/null differ
diff --git a/assets/images/prebid-mobile/modules/rendering/order-mopub-order-native.png b/assets/images/prebid-mobile/modules/rendering/order-mopub-order-native.png
deleted file mode 100644
index 2829e93800..0000000000
Binary files a/assets/images/prebid-mobile/modules/rendering/order-mopub-order-native.png and /dev/null differ
diff --git a/assets/images/prebid-mobile/modules/rendering/prebid-in-app-bidding-overview-max.png b/assets/images/prebid-mobile/modules/rendering/prebid-in-app-bidding-overview-max.png
new file mode 100644
index 0000000000..d849ce0c50
Binary files /dev/null and b/assets/images/prebid-mobile/modules/rendering/prebid-in-app-bidding-overview-max.png differ
diff --git a/prebid-mobile/adops-line-item-setup-mopub.md b/prebid-mobile/adops-line-item-setup-mopub.md
deleted file mode 100644
index cd5d578c87..0000000000
--- a/prebid-mobile/adops-line-item-setup-mopub.md
+++ /dev/null
@@ -1,70 +0,0 @@
----
-layout: page_v2
-title: Setup Line Items for MoPub
-description: Setup line items for MoPub
-pid: 1
-top_nav_section: prebid-mobile
-nav_section: prebid-mobile-adops
-sidebarType: 3
----
-
-
-
-
-# Step-by-Step Line Item Setup for MoPub
-
-* TOC
-{:toc }
-
-This page provides step-by-step instructions to set up Prebid Mobile line items for MoPub to serve ads on app with the Prebid SDK. It is using the Universal Prebid Creative.
-
-## Step 1. Add a line item
-
-- Set the **Type & Priority** to **Non-guaranteed** and **12**, respectively, so the line item will compete with all other demand
-- Set the **Rate** to the price you want to target, for example $0.50, in the screenshot below
-
-![MoPub Line Item Setup]({{site.github.url}}/assets/images/prebid-mobile/adops-line-item-setup-mopub/mopub1.png "Example MoPub Line Item"){: .pb-md-img :}
-
-- In the **Advanced Targeting** section, in **Keywords** target **hb_pb:0.50**
-
-![MoPub Advanced Targeting Setup]({{site.github.url}}/assets/images/prebid-mobile/adops-line-item-setup-mopub/mopub2.png "Example MoPub Advanced Targeting"){: .pb-md-img :}
-
-For each level of pricing granularity you need, you will have to set up one line item/creative pair.
-
-Line items must be set up to target custom keywords that include bid price information. The bid price keywords tell you how much the buyer bid on the impression.
-
-By default, `Prebid Mobile` will send the highest bid price to Google Ad Manager using the keyword `hb_pb` but will also pass the keys `hb_pb_BIDDERCODE`. You can decide to create one set of line items for all bidders or one set of line items for each bidder.
-
-## Step 2. Add creatives to your line item
-
-Banner creatives must be HTML banners with the **Format** set to **Banner** that include the code shown below.
-
-![MoPub Creative Setup]({{site.github.url}}/assets/images/prebid-mobile/adops-line-item-setup-mopub/mopub3.png "Example MoPub Creative"){: .pb-md-img :}
-
-The **hb_cache_id** variable stands for the cache id that will load the ad markup from the bid from Prebid Cache. Within each line item, for each ad unit size there should be one creative with this content.
-
-
-{: .alert.alert-success :}
-You can always get the latest version of the creative code below from [the Mobile example creative file in our GitHub repo](https://github.com/prebid/prebid-universal-creative/blob/master/template/amp/dfp-creative.html).
-
-{% highlight javascript %}
-
-
-
-
-{% endhighlight %}
-
-## Step 3. Duplicate line items
-
-Duplicate your line items according to your [price granularity]({{site.github.url}}/prebid-mobile/adops-price-granularity.html) setting.
diff --git a/prebid-mobile/adops-setup-full-screen-video-mopub.md b/prebid-mobile/adops-setup-full-screen-video-mopub.md
deleted file mode 100644
index 429c0488d3..0000000000
--- a/prebid-mobile/adops-setup-full-screen-video-mopub.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-layout: page_v2
-title: Setup Rewarded Video for MoPub
-description: Setup Full Screen Video for MoPub
-pid: 1
-top_nav_section: prebid-mobile
-nav_section: prebid-mobile-adops
-sidebarType: 3
----
-
-# Step-by-Step Line Item Setup for Full-screen Video on MoPub
-
-* TOC
-{:toc }
-
-This page provides step-by-step instructions to set up full-screen video line items on MoPub to be used with the Prebid Mobile SDK.
-
-## Step 1. Create full screen adUnit
-
-
-## Step 2. Add a line item
-In the *Add a Line Item* section:
-1. For the *Type and Priority* settings, select *Non-Guaranteed* as the type and set the priority to *12*. This ensures the line item will compete with all other demand.
-2. Set the Rate to the price you want to target.
-
-3. In the *Advanced Targeting* section, set the target for *Keywords* to `hb_pb:0.50`
-
-
-For each level of pricing granularity required, one line item/creative pairing will need to be set up.
-
-Line items must be set up to target custom keywords that include bid price information. The bid price keywords will contain how much the buyer bid on the impression.
-
-Prebid Mobile, by default, will send the highest bid price to MoPub using the keyword `hb_pb` but will also submit the key `hb_pb_BIDDERCODE` for each bidder. You can decide to create one set of line items for all bidders or one set of line items for each bidder.
-
-## Step 3. Add creatives to your line item
-Full-screen video creatives must have a *VAST tag* with the *Format* set to *Fullscreen* that includes the code below:
-```
-
-
-
- MoPub
-
-
-
-
-
-```
-
-
-
-The `hb_uuid` variable value is the cache id that will load the ad markup from the bid stored in Prebid Cache. Within each line item, for each ad unit size, there should be one creative with this content.
-
-The XML can be constructed by providing the VAST tag URL as:
-`https://%%KEYWORD:hb_cache_host%%%%KEYWORD:hb_cache_path%%?uuid=%%KEYWORD:hb_uuid%%`
-
-## Step 4. Duplicate line items
-Duplicate your line items according to your [price granularity](/prebid-mobile/adops-price-granularity.html) setting.
diff --git a/prebid-mobile/adops-setup-rewarded-video-mopub.md b/prebid-mobile/adops-setup-rewarded-video-mopub.md
deleted file mode 100644
index 839a8593e7..0000000000
--- a/prebid-mobile/adops-setup-rewarded-video-mopub.md
+++ /dev/null
@@ -1,55 +0,0 @@
----
-layout: page_v2
-title: Setup Rewarded Video for MoPub
-description: Setup Rewarded Video for MoPub
-pid: 1
-top_nav_section: prebid-mobile
-nav_section: prebid-mobile-adops
-sidebarType: 3
----
-
-# Step-by-Step Line Item Setup for Rewarded Video on MoPub
-
-* TOC
-{:toc }
-
-This page provides step-by-step instructions to set up rewarded-video line items on MoPub to be used with the Prebid Mobile SDK.
-
-## Step 1. Add a line item
-
- In the *Add a Line Item* section:
- 1. For the *Type and Priority* settings, select *Non-Guaranteed* as the type and set the priority to *12*. This ensures the line item will compete with all other demand.
- 2. Set the Rate to the price you want to target.
-
- 3. In the *Advanced Targeting* section, set the target for *Keywords* to `hb_pb:0.50`
-
-
-For each level of pricing granularity required, one line item/creative pairing will need to be set up.
-
-Line items must be set up to target custom keywords that include bid price information. The bid price keywords will contain how much the buyer bid on the impression.
-
-Prebid Mobile, by default, will send the highest bid price to MoPub using the keyword `hb_pb` but will also submit the key `hb_pb_BIDDERCODE` for each bidder. You can decide to create one set of line items for all bidders or one set of line items for each bidder.
-
-## Step 2. Add creatives to your line item
-Rewarded video creatives must have a *VAST tag* with the *Format* set to *Rewarded Video* that includes the code below:
-
-```
-
-
-
- MoPub
-
-
-
-
-```
-
-
-
-The `hb_uuid` variable value is the cache id that will load the ad markup from the bid stored in Prebid Cache. Within each line item, for each ad unit size, there should be one creative with this content.
-
-The XML can be constructed by providing the VAST tag URL as:
-`https://%%KEYWORD:hb_cache_host%%%%KEYWORD:hb_cache_path%%?uuid=%%KEYWORD:hb_uuid%%`
-
-## Step 3. Duplicate line items
-Duplicate your line items according to your [price granularity](/prebid-mobile/adops-price-granularity.html) setting.
diff --git a/prebid-mobile/modules/rendering/android-sdk-customization-controls.md b/prebid-mobile/modules/rendering/android-sdk-customization-controls.md
new file mode 100644
index 0000000000..6c7e9ade5a
--- /dev/null
+++ b/prebid-mobile/modules/rendering/android-sdk-customization-controls.md
@@ -0,0 +1,76 @@
+---
+
+layout: page_v2
+title: Ad Experience Controls
+description: Customization of ad expirience
+sidebarType: 2
+
+---
+
+# Ad Experience Controls
+
+Prebid SDK provides an API way to customize its behaviour.
+
+> NOTE: In the nearest future the Server Side Configuration will be supported as well. Follow this [feature request](https://github.com/prebid/prebid-server/issues/2186) for the details.
+
+
+## Rendering Controls
+
+The following properties allow to customize the rendering of Video Interstitial Ads.
+
+### Max Video Duration
+
+The `maxVideoDuration` indicates the maximum available playback time in seconds.
+If the value in the **Duration** tag is bigger than the given value SDK will fail to load ad, providing a respective error message.
+
+### Application Muted
+
+The `isMuted` property indicates whether the ad should run playback with sound or not.
+Default value - **false**.
+
+### Close Button Area
+
+The `closeButtonArea` property indicates the percent of device screen which the close button should occupy. The possible values are from **0** to **1**.
+
+### Close Button Position
+
+The `closeButtonPosition` property indicates the position of the close button on the screen. The possible values are **Position.BOTTOM_LEFT** and **Position.TOP_RIGHT**. The default value is **Position.TOP_RIGHT**.
+
+The example:
+
+![Close Button Position - Top Right](/assets/images/prebid-mobile/modules/rendering/ad-experience-android-close-button-possition-top-left.png){:width="250px"}
+
+### Skip Button Area
+
+The `skipButtonArea` property indicates the percent of device screen which the skip button should occupy. The possible values are from **0** to **1**.
+
+### Skip Button Position
+
+The `skipButtonPosition` property indicates the position of the close button on the screen. The possible values are **Position.BOTTOM_LEFT** and **Position.TOP_RIGHT**. The default value is **Position.BOTTOM_LEFT**.
+
+The example:
+
+![Close Button Position - Top Right](/assets/images/prebid-mobile/modules/rendering/ad-experience-android-skip-button-possition-top-left.png){:width="250px"}
+
+### Skip Delay
+
+The `skipDelay` property indicates the number of seconds which should be passed from the start of playback until the skip or close button should be shown. The default value is **10**.
+
+The code sample:
+
+``` kotlin
+adUnit = MediationInterstitialAdUnit(
+ activity,
+ configId,
+ EnumSet.of(AdUnitFormat.DISPLAY),
+ mediationUtils
+)
+
+adUnit?.setMaxVideoDuration(30)
+adUnit?.setCloseButtonArea(0.1)
+adUnit?.setSkipDelay(5)
+adUnit?.setSkipButtonArea(0.1)
+adUnit?.setSkipButtonPosition(Position.TOP_RIGHT)
+adUnit?.setCloseButtonPosition(Position.BOTTOM_LEFT)
+```
+
diff --git a/prebid-mobile/modules/rendering/android-sdk-integration-admob.md b/prebid-mobile/modules/rendering/android-sdk-integration-admob.md
index 5472610336..68af32f417 100644
--- a/prebid-mobile/modules/rendering/android-sdk-integration-admob.md
+++ b/prebid-mobile/modules/rendering/android-sdk-integration-admob.md
@@ -45,14 +45,17 @@ They can be integrated using these mediation API categories:
## Init Prebid Rendering Module
-To start running bid requests you should provide the Prebid Server URL and account ID:
+To start running bid requests you have to set the Prebid Server **Host** and **Account Id** and then initilize the SDK with application context. The best place for this is the `onCreate()` method of your Application class.
```
-PrebidRenderingSettings.setBidServerHost(HOST)
-PrebidRenderingSettings.setAccountId(YOUR_ACCOUNT_ID)
+PrebidMobile.setBidServerHost(HOST)
+PrebidMobile.setAccountId(YOUR_ACCOUNT_ID)
+
+// Init SDK
+PrebidMobile.setApplicationContext(this)
```
-The best place to do it is the `onCreate()` method of your Application class. The `account ID` is an identifier of the **Stored Request** on the prebid server.
+> **NOTE:** The account ID is an identifier of the **Stored Request**.
### Prebid Adapters
@@ -116,7 +119,7 @@ adUnit?.fetchDemand { result ->
#### Step 1: Create AdView and AdRequest
-This step is totally the same as for the pure [AdMob integration](https://developers.google.com/admob/android/banner). You don't have to make any modifications here.
+This step is totally the same as for the original [AdMob integration](https://developers.google.com/admob/android/banner). You don't have to make any modifications here.
#### Step 2: Create AdMobMediationBannerUtils
@@ -180,7 +183,7 @@ adUnit?.fetchDemand { result ->
#### Step 1: Create AdRequest
-This step is totally the same as for pure [AdMob integration](https://developers.google.com/admob/android/interstitial). You don't have to make any modifications here.
+This step is totally the same as for original [AdMob integration](https://developers.google.com/admob/android/interstitial). You don't have to make any modifications here.
#### Step 2: Create AdMobInterstitialMediationUtils
@@ -190,15 +193,15 @@ The `AdMobInterstitialMediationUtils` is a helper class, wich performs certain u
The `MediationInterstitialAdUnit` is part of the prebid mediation API. This class is responsible for making a bid request and providing the winning bid and targeting keywords to mediating SDKs.
-If you need to make a bid request for `video` ad - provide the respective ad format `AdUnitFormat.VIDEO` to the constructor of `MediationInterstitialAdUnit`:
+The **default** ad format for interstitial is **DISPLAY**. In order to make a `multiformat bid request`, set the respective values into the `adUnitFormats` parameter.
```
adUnit = MediationInterstitialAdUnit(
- activity,
- configId,
- AdUnitFormat.VIDEO,
- mediationUtils
-)
+ activity,
+ configId,
+ EnumSet.of(AdUnitFormat.DISPLAY, AdUnitFormat.VIDEO),
+ mediationUtils
+ )
```
#### Step 4: Make a bid request
@@ -260,7 +263,7 @@ adUnit?.fetchDemand { result ->
#### Step 1: Create AdRequest
-This step is totally the same as for the pure [AdMob integration](https://developers.google.com/admob/android/rewarded). You don't have to make any modifications here.
+This step is totally the same as for the original [AdMob integration](https://developers.google.com/admob/android/rewarded). You don't have to make any modifications here.
#### Step 2: Create AdMobRewardedMediationUtils
diff --git a/prebid-mobile/modules/rendering/android-sdk-integration-gam.md b/prebid-mobile/modules/rendering/android-sdk-integration-gam.md
index 66b06ca276..636fb73f79 100644
--- a/prebid-mobile/modules/rendering/android-sdk-integration-gam.md
+++ b/prebid-mobile/modules/rendering/android-sdk-integration-gam.md
@@ -53,14 +53,15 @@ They can be integrated using these API categories.
## Init Prebid Rendering Module
-To start running bid requests you have to provide an **Account Id** for your organization on Prebid server to the SDK:
+To start running bid requests you have to set the Prebid Server **Host** and **Account Id** and then initilize the SDK with application context. The best place for this is the `onCreate()` method of your Application class.
```
-PrebidRenderingSettings.setBidServerHost(HOST)
-PrebidRenderingSettings.setAccountId(YOUR_ACCOUNT_ID)
-```
+PrebidMobile.setBidServerHost(HOST)
+PrebidMobile.setAccountId(YOUR_ACCOUNT_ID)
-The best place to do it is the `onCreate()` method of your Application class.
+// Init SDK
+PrebidMobile.setApplicationContext(this)
+```
> **NOTE:** The account ID is an identifier of the **Stored Request**.
@@ -141,12 +142,18 @@ bannerView.videoPlacementType = PlacementType.IN_BANNER // or any other availabl
### Migration from the original API
+GAM setup:
+1. Leave the original order and ad units as is. They are not relevant for the rendering approach but they will serve ads for released applications.
+2. Create new GAM ad unit.
+3. Setup new [GAM Order](rendering-gam-line-item-setup.html) for rendering approach.
+
+Integration:
1. Replace the `AdManagerAdView` with `BannerView` in the UI.
3. Implement the interface `BannerViewListener`.
4. Remove usage of `AdManagerAdView`, `AdManagerAdRequest`, and implementation of the `AdListener`.
5. Remove original `BannerAdUnit`.
-5. Follow the instructions to integrate [Banner API](#banner-api).
-6. Setup the [GAM Order](rendering-gam-line-item-setup.html) for rendering. You can create a new order or just replace the code of creative in the original one and continue to use it for rendering integration.
+6. Follow the instructions to integrate [Banner API](#banner-api).
+
## Interstitial API
@@ -172,30 +179,15 @@ interstitialAdUnit?.show()
```
-The way of displaying **Video Interstitial Ad** is almost the same with two differences:
-
-- Need to customize the ad unit format
-- No need to set up `minSizePercentage`
-
-``` kotlin
-// 1. Create interstitial custom event handler for GAM ad server.
-val eventHandler = GamInterstitialEventHandler(requireContext(), gamAdUnit)
-
-// 2. Create interstitialAdUnit instance and provide GAM event handler
-interstitialAdUnit = InterstitialAdUnit(requireContext(), configId, AdUnitFormat.VIDEO, eventHandler)
-
-// (Optional) set an event listener
-interstitialAdUnit?.setInterstitialAdUnitListener(this)
-
-// 3. Execute ad load
-interstitialAdUnit?.loadAd()
-
-//....
-
-// 4. After ad is loaded you can execute `show` to trigger ad display
-interstitialAdUnit?.show()
+The **default** ad format for interstitial is **DISPLAY**. In order to make a `multiformat bid request`, set the respective values into the `adUnitFormats` parameter.
```
+interstitialAdUnit = InterstitialAdUnit(
+ requireContext(),
+ configId,
+ EnumSet.of(AdUnitFormat.DISPLAY, AdUnitFormat.VIDEO),
+ eventHandler)
+```
#### Step 1: Create Event Handler
@@ -237,12 +229,17 @@ override fun onAdLoaded(interstitialAdUnit: InterstitialAdUnit) {
### Migration from the original API
+GAM setup:
+1. Leave the original order and ad units as is. They are not relevant for the rendering approach but they will serve ads for released applications.
+2. Create new GAM ad unit.
+3. Setup new [GAM Order](rendering-gam-line-item-setup.html) for rendering approach.
+
+Integration:
1. Replace the `AdManagerInterstitialAd` with `InterstitialRenderingAdUnit`.
3. Implement the interface `InterstitialEventListener`.
4. Remove usage of `AdManagerInterstitialAd`, `AdManagerAdRequest`.
5. Remove original `InterstitialAdUnit`.
-5. Follow the instructions to integrate [Interstitial API](#interstitial-api).
-6. Setup the [GAM Order](rendering-gam-line-item-setup.html) for rendering. **Pay Attention** that you can replace the code of creative in the original order **only for display** ads. For video interstitial you have to create a special order and remove the original one.
+6. Follow the instructions to integrate [Interstitial API](#interstitial-api).
## Rewarded API
@@ -321,8 +318,13 @@ override fun onAdLoaded(rewardedAdUnit: RewardedAdUnit) {
### Migration from the original API
+GAM setup:
+1. Leave the original order and ad units as is. They are not relevant for the rendering approach but they will serve ads for released applications.
+2. Create new GAM ad unit.
+3. Setup new [GAM Order](rendering-gam-line-item-setup.html) for rendering approach.
+
+Integration:
1. Replace the `RewardedAd` with `RewardedAdUnit`.
-3. Implement the interface `RewardedAdUnitListener`.
-5. Remove original `RewardedVideoAdUnit`.
-5. Follow the instructions to integrate [Rewarded API](#rewarded-api).
-6. Setup the [GAM Order](rendering-gam-line-item-setup.html) for rendering. **Pay Attention** that you have to create a new special order for rewarded video ad and remove the original one.
+2. Implement the interface `RewardedAdUnitListener`.
+3. Remove original `RewardedVideoAdUnit`.
+4. Follow the instructions to integrate [Rewarded API](#rewarded-api).
diff --git a/prebid-mobile/modules/rendering/android-sdk-integration-max.md b/prebid-mobile/modules/rendering/android-sdk-integration-max.md
new file mode 100644
index 0000000000..612ed65eb6
--- /dev/null
+++ b/prebid-mobile/modules/rendering/android-sdk-integration-max.md
@@ -0,0 +1,347 @@
+---
+layout: page_v2
+title: AppLovin MAX Integration
+description: Integration of Prebid Rendering module whith AppLovin MAX
+sidebarType: 2
+---
+
+# AppLovin MAX Integration
+
+The integration of Prebid Mobile with AppLovin MAX assumes that publisher has MAX account and has already integrated the AppLovin MAX SDK into the app.
+
+See the [AppLovin MAX Documentation](https://dash.applovin.com/documentation/mediation/android/getting-started/integration) for the MAX integration details.
+
+## MAX Integration Overview
+
+![Rendering with MAX](/assets/images/prebid-mobile/modules/rendering/prebid-in-app-bidding-overview-max.png)
+
+**Steps 1-2** Prebid SDK makes a bid request. Prebid server runs an auction and returns the winning bid.
+
+**Step 3** MAX SDK makes an ad request. MAX returns the waterfall with respective placements.
+
+**Step 4** For each prebid's placement, the MAX SDK sequentially instantiates an adapter.
+
+**Step 5** The adapter verifies the targeting keywords of the winning bid and the custom properties of the given placement. If they match the adapter will render the winning bid. Otherwise, adpater will fail with "no ad" immediately and the next placement will instantiate the same adapter but for another custom properties.
+
+Prebid Mobile supports these ad formats:
+
+- Display Banner
+- Display Interstitial
+- Video Interstitial
+- Rewarded Video
+- Native
+
+They can be integrated using these API categories:
+
+- [**Banner API**](#banner-api) - for *Display* Banner
+- [**Interstitial API**](#interstitial-api) - for *Display* and *Video* Interstitials
+- [**Rewarded API**](#rewarded-api) - for *Rewarded Video*
+- [**Native API**](#native-ads) - for *Native Ads*
+
+## Init Prebid Rendering Module
+
+To start running bid requests you have to set the Prebid Server **Host** and **Account Id** and then initilize the SDK with application context. The best place for this is the `onCreate()` method of your Application class.
+
+```
+PrebidMobile.setBidServerHost(HOST)
+PrebidMobile.setAccountId(YOUR_ACCOUNT_ID)
+
+// Init SDK
+PrebidMobile.setApplicationContext(this)
+```
+
+> **NOTE:** The account ID is an identifier of the **Stored Request**.
+
+### Prebid Adapters
+
+To integrate Prebid Adapters just add the following lines into your build.gradle files:
+
+Root build.gradle
+
+```
+allprojects {
+ repositories {
+ ...
+ mavenCentral()
+ ...
+ }
+}
+```
+
+App module build.gradle:
+
+```
+implementation('org.prebid:prebid-mobile-sdk-max-adapters:x.x.x')
+```
+
+## Banner API
+
+Integration example:
+
+``` kotlin
+// 1. Create MaxAdView
+adView = MaxAdView(adUnitId, requireContext())
+adView?.setListener(createListener())
+
+// 2. Create MaxMediationBannerUtils
+val mediationUtils = MaxMediationBannerUtils(adView)
+
+// 3. Create MediationBannerAdUnit
+adUnit = MediationBannerAdUnit(
+ requireContext(),
+ configId,
+ AdSize(width, height),
+ mediationUtils
+)
+
+// 4. Make a bid request
+adUnit?.fetchDemand {
+
+ // 5. Make an ad request to MAX
+ adView?.loadAd()
+}
+```
+
+#### Step 1: Create MaxAdView
+
+This step is totally the same as for original [MAX integration](https://dash.applovin.com/documentation/mediation/android/getting-started/banners#loading-and-showing-banners-programmatically). You don't have to make any modifications here.
+
+
+#### Step 2: Create MaxMediationBannerUtils
+
+The `MaxMediationBannerUtils` is a helper class, wich performs certain utilty work for the `MediationBannerAdUnit`, like passing the targeting keywords to the adapters and checking the visibility of the ad view.
+
+#### Step 3: Create MediationBannerAdUnit
+
+The `MediationBannerAdUnit` is a part of Prebid mediation API. This class is responsible for making bid request and providing the winning bid and targeting keywords to mediating SDKs.
+
+#### Step 4: Make bid request
+
+The `fetchDemand` method makes a bid request to prebid server and provides a result in a completion handler.
+
+#### Step 5: Make an Ad Reuest
+
+Now you should make a regular MAX's ad request. Everything else will be handled by prebid adapters.
+
+## Interstitial API
+
+Integration example:
+
+``` kotlin
+// 1. Create MaxInterstitialAd
+maxInterstitialAd = MaxInterstitialAd(adUnitId, activity)
+maxInterstitialAd?.setListener(createListener())
+
+// 2. Create MaxMediationInterstitialUtils
+val mediationUtils = MaxMediationInterstitialUtils(maxInterstitialAd)
+
+// 3. Create MediationInterstitialAdUnit
+adUnit = MediationInterstitialAdUnit(
+ activity,
+ configId,
+ EnumSet.of(AdUnitFormat.DISPLAY),
+ mediationUtils
+ )
+
+// 4. Make a bid request
+adUnit?.fetchDemand {
+
+ // 5. Make an ad request to MAX
+ maxInterstitialAd?.loadAd()
+}
+
+```
+
+The **default** ad format for interstitial is **DISPLAY**. In order to make a `multiformat bid request`, set the respective values into the `adUnitFormats` parameter.
+
+```
+adUnit = MediationInterstitialAdUnit(
+ activity,
+ configId,
+ EnumSet.of(AdUnitFormat.DISPLAY, AdUnitFormat.VIDEO),
+ mediationUtils
+ )
+```
+
+#### Step 1: Create MaxInterstitialAd
+
+This step is totally the same as for original [MAX integration](https://dash.applovin.com/documentation/mediation/android/getting-started/interstitials). You don't have to make any modifications here.
+
+
+#### Step 2: Create MaxMediationInterstitialUtils
+
+The `MaxMediationInterstitialUtils` is a helper class, wich performs certain utilty work for the `MediationInterstitialAdUnit`, like passing the targeting keywords to the adapters and checking the visibility of the ad view.
+
+#### Step 3: Create MediationInterstitialAdUnit
+
+The `MediationInterstitialAdUnit` is part of the prebid mediation API. This class is responsible for making a bid request and providing a winning bid to the mediating SDKs.
+
+#### Step 4: Make bid request
+
+The `fetchDemand` method makes a bid request to prebid server and provides a result in a completion handler.
+
+#### Step 5: Make an Ad Reuest
+
+Now you should make a regular MAX's ad request. Everything else will be handled by GMA SDK and prebid adapters.
+
+#### Steps 6: Display an ad
+
+Once you receive the ad it will be ready for display. Folow the [MAX instructions](https://dash.applovin.com/documentation/mediation/android/getting-started/interstitials#showing-an-interstitial-ad) about how to do it.
+
+## Rewarded API
+
+Integration example:
+
+``` swift
+// 1. Get an instance of MaxRewardedAd
+maxRewardedAd = MaxRewardedAd.getInstance(adUnitId, activity)
+maxRewardedAd?.setListener(createListener())
+
+// 2. Create MaxMediationRewardedUtils
+val mediationUtils = MaxMediationRewardedUtils(maxRewardedAd)
+
+// 3. Create MediationRewardedVideoAdUnit
+adUnit = MediationRewardedVideoAdUnit(
+ activity,
+ configId,
+ mediationUtils
+ )
+
+// 4. Make a bid request
+adUnit?.fetchDemand {
+
+ // 5. Make an ad request to MAX
+ maxRewardedAd?.loadAd()
+}
+```
+
+The way of displaying the rewarded ad is the same as for the Interstitial Ad.
+
+To be notified when user earns a reward follow the [MAX intructions](https://dash.applovin.com/documentation/mediation/android/getting-started/rewarded-ads#accessing-the-amount-and-currency-for-a-rewarded-ad).
+
+#### Step 1: Get an instance of MaxRewardedAd
+
+This step is totally the same as for original [MAX integration](https://dash.applovin.com/documentation/mediation/android/getting-started/rewarded-ads). You don't have to make any modifications here.
+
+#### Step 2: Create MaxMediationRewardedUtils
+
+The `MaxMediationRewardedUtils` is a helper class, wich performs certain utilty work for the `MediationRewardedVideoAdUnit`, like passing the targeting keywords to the adapters.
+
+#### Step 3: Create MediationRewardedVideoAdUnit
+
+The `MediationRewardeVideoAdUnit` is part of the prebid mediation API. This class is responsible for making a bid request and providing a winning bid and targeting keywords to the adapters.
+
+#### Step 4: Make bid request
+
+The `fetchDemand` method makes a bid request to the prebid server and provides a result in a completion handler.
+
+#### Step 5: Make an Ad Reuest
+
+Now you should make a regular MAX's ad request. Everything else will be handled by GMA SDK and prebid adapters.
+
+#### Steps 6: Display an ad
+
+Once the rewarded ad is recieved you can display it. Folow the [MAX instructions](https://dash.applovin.com/documentation/mediation/android/getting-started/rewarded-ads#showing-a-rewarded-ad) for the details.
+
+## Native Ads
+
+Integration example:
+
+```
+// 1. Create MaxNativeAdLoader
+nativeAdLoader = MaxNativeAdLoader(adUnitId, requireActivity())
+nativeAdLoader.setNativeAdListener(createNativeAdListener(viewContainer))
+nativeAdLoader.setRevenueListener(createRevenueListener())
+
+// 2. Create and configure MediationNativeAdUnit
+nativeAdUnit = NativeAdUnit(configId)
+
+nativeAdUnit.setContextType(NativeAdUnit.CONTEXT_TYPE.SOCIAL_CENTRIC)
+nativeAdUnit.setPlacementType(NativeAdUnit.PLACEMENTTYPE.CONTENT_FEED)
+nativeAdUnit.setContextSubType(NativeAdUnit.CONTEXTSUBTYPE.GENERAL_SOCIAL)
+
+// 3. Set up assets for bid request
+// See the code below
+
+// 4. Set up event tracker for bid request
+// See the code below
+
+// 5. Make a bid request
+nativeAdUnit.fetchDemand(nativeAdLoader) {
+// 6. Make an ad request to MAX
+ self?.nativeAdLoader?.loadAd(into: self?.createNativeAdView())
+}
+```
+
+#### Step 1: Create MaxNativeAdLoader
+
+Prepare the `MaxNativeAdLoader` object before you make a bid request. It will be needed for prebid mediation utils.
+
+#### Step 2: Create and configure NativeAdUnit
+
+The `NativeAdUnit` class is responsible for making a bid request and providing a winning bid and targeting keywords. Fot the better targetting you should provide additional properties like `conteaxtType` and `placemantType`.
+
+#### Step 3: Set up assets for bid request
+
+The bid request for native ads should have the description of expected assets. The full spec for the native template you can find in the [Native Ad Specification from IAB](https://www.iab.com/wp-content/uploads/2018/03/OpenRTB-Native-Ads-Specification-Final-1.2.pdf).
+
+The example of creating the assets array:
+
+```
+val title = NativeTitleAsset()
+title.setLength(90)
+title.isRequired = true
+nativeAdUnit.addAsset(title)
+
+val icon = NativeImageAsset(20, 20, 20, 20)
+icon.imageType = NativeImageAsset.IMAGE_TYPE.ICON
+icon.isRequired = true
+nativeAdUnit.addAsset(icon)
+
+val image = NativeImageAsset(200, 200, 200, 200)
+image.imageType = NativeImageAsset.IMAGE_TYPE.MAIN
+image.isRequired = true
+nativeAdUnit.addAsset(image)
+
+val data = NativeDataAsset()
+data.len = 90
+data.dataType = NativeDataAsset.DATA_TYPE.SPONSORED
+data.isRequired = true
+nativeAdUnit.addAsset(data)
+
+val body = NativeDataAsset()
+body.isRequired = true
+body.dataType = NativeDataAsset.DATA_TYPE.DESC
+nativeAdUnit.addAsset(body)
+
+val cta = NativeDataAsset()
+cta.isRequired = true
+cta.dataType = NativeDataAsset.DATA_TYPE.CTATEXT
+nativeAdUnit.addAsset(cta)
+```
+
+#### Step 4: Set up event tracker for bid request
+
+The bid request for mative ads may have a descrition of expected event trackers. The full spec for the Native template you can find in the [Native Ad Specification from IAB](https://www.iab.com/wp-content/uploads/2018/03/OpenRTB-Native-Ads-Specification-Final-1.2.pdf).
+
+The example of creating the event trackers array:
+
+```
+val methods: ArrayList = ArrayList()
+methods.add(NativeEventTracker.EVENT_TRACKING_METHOD.IMAGE)
+methods.add(NativeEventTracker.EVENT_TRACKING_METHOD.JS)
+try {
+ val tracker = NativeEventTracker(NativeEventTracker.EVENT_TYPE.IMPRESSION, methods)
+ nativeAdUnit.addEventTracker(tracker)
+} catch (e: Exception) {
+ e.printStackTrace()
+}
+```
+
+#### Step 5: Make a bid request
+
+The `fetchDemand` method makes a bid request to prebid server and provides a result in a completion handler.
+
+#### Step 6: Load Native ad
+
+Now just load a native ad from MAX according to the [MAX instructions](https://dash.applovin.com/documentation/mediation/android/getting-started/native-manual#load-the-native-ad).
diff --git a/prebid-mobile/modules/rendering/android-sdk-integration-mopub-native.md b/prebid-mobile/modules/rendering/android-sdk-integration-mopub-native.md
deleted file mode 100644
index dce996304a..0000000000
--- a/prebid-mobile/modules/rendering/android-sdk-integration-mopub-native.md
+++ /dev/null
@@ -1,182 +0,0 @@
----
-
-layout: page_v2
-title: MoPub Integration
-description: Integration the Rendering Module with MoPub on Android
-sidebarType: 2
-
----
-
-# MoPub: Native Ads Integration
-
-## Native Ads
-
-The integration of native ads into MoPub monetization is based on MoPub's Mediation feature (using `PrebidNativeAdapter`).
-Here are the basic steps of integration:
-
-``` kotlin
-fun initAd() {
- // Initialize AdapterHelper and MoPubNative.
- adapterHelper = AdapterHelper()
- mopubNative = MoPubNative(requireContext(), adUnitId, nativeNetworkListener)
-
- // Create viewBinder.
- val viewBinder = ViewBinder.Builder(R.layout.lyt_native_ad)
- // ...
- .build()
-
- // Register ad renderers.
- mopubNative.registerAdRenderer(PrebidNativeAdRenderer(viewBinder))
- mopubNative.registerAdRenderer(MoPubStaticNativeAdRenderer(viewBinder))
-
- // Initialize MoPubNativeAdUnit and provide necessary configuration.
- mopubNativeAdUnit = MoPubNativeAdUnit(requireContext(), configId, getNativeAdConfig())
-
- // Execute ad load.
- loadAd()
-}
-
-fun loadAd() {
- // Initialize MoPub SDK and make ad request.
- MoPub.initializeSdk(requireContext(), SdkConfiguration.Builder(adUnitId).build()) {
- mopubNativeAdUnit.fetchDemand(keywordsContainer, mopubNative) {
- val requestParameters = RequestParameters.Builder()
- .keywords(convertMapToMoPubKeywords(keywordsContainer))
- .build()
- mopubNative.makeRequest(requestParameters)
- }
- }
-}
-```
-
-``` kotlin
-// Add view when receiving a successful NativeAd response from MoPub.
-object : MoPubNative.MoPubNativeNetworkListener {
- override fun onNativeLoad(nativeAd: NativeAd?) {
- val view = adapterHelper.getAdView(null, viewContainer, nativeAd)
- viewContainer.removeAllViews()
- // Add view to viewContainer
- viewContainer.addView(view)
- }
-}
-```
-
-### Step 1: Create Ad View
-
-You have to create and place MoPub's Ad View into the app page.
-
-
-### Step 2: Create Ad Unit
-
-Create the **MoPubBannerAdUnit** object with parameters:
-
-- **configId** - an ID of a [Stored Impression](/prebid-server/features/pbs-storedreqs.html) on the Prebid server.
-- **size** - the size of the ad unit which will be used in the bid request.
-
-
-### Step 3: Create and provide NativeAdConfiguration
-
-NativeAdConfiguration creation example:
-
-``` kotlin
-private fun createNativeAdConfiguration(): NativeAdConfiguration {
- val nativeAdConfiguration = NativeAdConfiguration()
- nativeAdConfiguration.contextType = NativeAdConfiguration.ContextType.SOCIAL_CENTRIC
- nativeAdConfiguration.placementType = NativeAdConfiguration.PlacementType.CONTENT_FEED
- nativeAdConfiguration.contextSubType = NativeAdConfiguration.ContextSubType.GENERAL_SOCIAL
-
- val methods = ArrayList()
- methods.add(NativeEventTracker.EventTrackingMethod.IMAGE)
- methods.add(NativeEventTracker.EventTrackingMethod.JS)
- val eventTracker = NativeEventTracker(NativeEventTracker.EventType.IMPRESSION, methods)
- nativeAdConfiguration.addTracker(eventTracker)
-
- val assetTitle = NativeAssetTitle()
- assetTitle.len = 90
- assetTitle.isRequired = true
- nativeAdConfiguration.addAsset(assetTitle)
-
- val assetIcon = NativeAssetImage()
- assetIcon.type = NativeAssetImage.ImageType.ICON
- assetIcon.wMin = 20
- assetIcon.hMin = 20
- assetIcon.isRequired = true
- nativeAdConfiguration.addAsset(assetIcon)
-
- val assetImage = NativeAssetImage()
- assetImage.hMin = 20
- assetImage.wMin = 200
- assetImage.isRequired = true
- nativeAdConfiguration.addAsset(assetImage)
-
- val assetData = NativeAssetData()
- assetData.len = 90
- assetData.type = NativeAssetData.DataType.SPONSORED
- assetData.isRequired = true
- nativeAdConfiguration.addAsset(assetData)
-
- val assetBody = NativeAssetData()
- assetBody.isRequired = true
- assetBody.type = NativeAssetData.DataType.DESC
- nativeAdConfiguration.addAsset(assetBody)
-
- val assetCta = NativeAssetData()
- assetCta.isRequired = true
- assetCta.type = NativeAssetData.DataType.CTA_TEXT
- nativeAdConfiguration.addAsset(assetCta)
-
- return nativeAdConfiguration
-}
-```
-See more NativeAdConfiguration options [here](../../info-modules/native/in-app-bidding-native-ad-configuration.html).
-
-### Step 4: Fetch Demand
-
-To run an auction on Prebid run the `fetchDemand()` method which performs several actions:
-
-- Makes a bid request to Prebid
-- Sets up the targeting keywords to the MoPub's ad unit
-- Passes the winning bid to the MoPub's ad unit
-- Returns the result of bid request for future processing
-
-### Step 5: Load the Ad
-
-When the bid request has completed, the responsibility of making the Ad Request is passed to the publisher. That is why you have to invoke `loadAd()` on the MoPub's Ad View explicitly in the completion handler of `fetchDemand()`.
-## Native Styles
-
-[See MoPub Integration page](../integration-mopub/android-in-app-bidding-mopub-info.html) for more info about MoPub order setup and Adapter integration.
-
-To display an ad you need to implement these easy steps:
-
-``` kotlin
-private fun initBanner() {
- // 1. Create and initialize MoPubView instance
- bannerView = MoPubView(requireContext())
- bannerView?.setAdUnitId(moPubAdUnit)
- bannerView?.bannerAdListener = this
-
- // 2. initialize MoPubBannerAdUnit
- if (bannerAdUnit == null) {
- bannerAdUnit = MoPubBannerAdUnit(requireContext(), configId, AdSize(width, height))
- }
-
- // 3. Provide NativeAdConfiguration
- val nativeAdConfiguration = createNativeAdConfiguration()
- bannerAdUnit?.setNativeAdConfiguration(nativeAdConfiguration)
-
- // Add moPubView to your viewContainer
- viewContainer?.addView(bannerView)
-
- val builder = SdkConfiguration.Builder(moPubAdUnit)
- MoPub.initializeSdk(requireContext(), builder.build()) {
-
- // 4. Run an Header Bidding auction on Prebid and provide MoPubView as parameter. It is important to execute this method after MoPub SDK initialization.
- bannerAdUnit?.fetchDemand(bannerView!!) {
- // 5. execute MoPubView `loadAd` when receiving a valid demand result
- bannerView?.loadAd()
- }
- }
-}
-```
-
-
diff --git a/prebid-mobile/modules/rendering/android-sdk-integration-mopub.md b/prebid-mobile/modules/rendering/android-sdk-integration-mopub.md
deleted file mode 100644
index c59f599d7b..0000000000
--- a/prebid-mobile/modules/rendering/android-sdk-integration-mopub.md
+++ /dev/null
@@ -1,330 +0,0 @@
----
-
-layout: page_v2
-title: MoPub Integration
-description: Integration the Rendering Module with MoPub on Android
-sidebarType: 2
-
----
-
-# MoPub Integration
-
-The integration of Prebid Rendering API with MoPub assumes that publisher has an account on MoPub and has already integrated the MoPub SDK into the app project.
-
-If you do not have MoPub SDK in the app yet, refer the [MoPub's Documentation](https://github.com/mopub/mopub-android-sdk).
-
-
-## MoPub Integration Overview
-
-The integration of header bidding into MoPub monetization is based on MoPub's Mediation feature.
-
-![Rendering with GAM as the Primary Ad Server](/assets/images/prebid-mobile/modules/rendering/Prebid-In-App-Bidding-Overview-MoPub.png)
-
-**Steps 1-2** Prebid SDK makes a bid request. Prebid server runs an auction and returns the winning bid.
-
-**Step 3** Prebid SDK via MoPub Adapters Framework sets up targeting keywords into the MoPub's ad unit.
-
-**Step 4** MoPub SDK makes an ad request. MoPub returns the mediation chain.
-
-**Step 5** If Prebid's creative wins in the waterfall then the MoPub SDK will instantiate respective Prebid Adapter which will render the winning bid.
-
-**Step 6** The winner is displayed in the App with the respective rendering engine.
-
-Prebid Rendering API provides ability to integrate header bidding for these ad kinds:
-
-- Display Banner
-- Display Interstitial
-- Video Interstitial
-- Rewarded Video
-
-[//]: # (- Native)
-[//]: # (- Native Styles)
-
-They can be integrated using these API categories.
-
-- [**Banner API**](#banner-api) - for **Display Banner**
-- [**Interstitial API**](#interstitial-api) - for **Display** and **Video** Interstitials
-- [**Rewarded API**](#rewarded-api) - for **Rewarded Video**
-
-[//]: # (- [**Native API**](android-sdk-integration-mopub-native.html))
-
-
-## Init Prebid Rendering Module
-
-Set up a Prebid Server host amd provide an **Account Id** of your organization first.
-
-```
-PrebidRenderingSettings.setBidServerHost(HOST)
-PrebidRenderingSettings.setAccountId(YOUR_ACCOUNT_ID)
-```
-
-The best place to do it is the `onCreate()` method of your Application class.
-
-The account ID is an identifier of the **Stored Request**.
-
-### Prebid Adapters
-
-To integrate Prebid Adapters just add the following lines in your build.gradle files:
-
-Root build.gradle
-
-```
-allprojects {
- repositories {
- ...
- mavenCentral()
- ...
- }
-}
-```
-
-App module build.gradle:
-
-```
-implementation('org.prebid:prebid-mobile-sdk-mopub-adapters:x.x.x')
-```
-
-For more details about Adapters read the [MoPub's Documentation](https://developers.mopub.com/networks/integrate/mopub-network-mediation-guidelines/).
-
-
-## Banner API
-
-Integration example:
-
-
-``` kotlin
-private fun initBanner() {
- // 1. Create and initialize MoPubView instance
- bannerView = MoPubView(requireContext())
- bannerView?.setAdUnitId(moPubAdUnit)
- bannerView?.bannerAdListener = this
-
- // Add moPubView to your viewContainer
- viewContainer?.addView(bannerView)
-
- val builder = SdkConfiguration.Builder(moPubAdUnit)
- MoPub.initializeSdk(requireContext(), builder.build()) {
- fetchAdUnit(configId, AdSize(320, 50))
- }
-}
-
-private fun fetchAdUnit(configId: String, size: AdSize) {
- if (bannerAdUnit == null) {
- // 2. initialize MoPubBannerAdUnit
- bannerAdUnit = MediationBannerAdUnit(requireContext(), configId, size, MoPubMediationDelegate() )
- }
- // 3. Run an Header Bidding auction on Prebid and provide MoPubView as parameter. It is important to execute this method after MoPub SDK initialization.
- bannerAdUnit?.fetchDemand(bannerView!!) {
- // 4. execute MoPubView `loadAd` when receiving a valid demand result
- bannerView?.loadAd()
- }
-}
-```
-
-#### Step 1: Create Ad View
-
-Follow the [MoPub Instructions](https://developers.mopub.com/publishers/android/banner/) for Banner integration.
-
-#### Step 2: Create Ad Unit
-
-Create the `MediationBannerAdUnit` object with parameters:
-
-- `configId` - an ID of a [Stored Impression](/prebid-server/features/pbs-storedreqs.html) on the Prebid server
-- `size` - the size of the ad unit which will be used in the bid request.
-- `mediationDelegate` - the object from the MoPubAdapters framework responsible for managing MoPub’s ad objects.
-
-#### Step 3: Fetch Demand
-
-To run an auction on Prebid run the `fetchDemand()` method which performs several actions:
-
-- Makes a bid request to Prebid Server
-- Sets up the targeting keywords to the MoPub's ad unit
-- Passes the winning bid to the MoPub's ad unit
-- Returns the result of bid request for future processing
-
-#### Step 4: Load the Ad
-
-When the bid request is completed, the responsibility of making the Ad Request is passed to the publisher. Call the `loadAd()` method on the MoPub's Ad View explicitly in the completion handler of the `fetchDemand()`.
-
-#### Step 5: Rendering
-
-If the Prebid Line Item is processed in the waterfall the winning bid will be rendered by `PrebidBannerAdapter`. You shouldn't do anything for this. Just make sure that your order has been set up correctly and an adapter has been added to the project.
-
-### Migration from the original API
-
-1. Replace the `BannerAdUnit` with `MediationBannerlAdUnit`.
-5. Follow the instructions to integrate [Banner API](#banner-api).
-6. Setup the [MoPub Order](rendering-mopub-line-item-setup.html) for rendering. You should create a new order with **Network Line Items** instead of the original one.
-
-## Interstitial API
-
-To display an ad you need to implement these easy steps:
-
-``` kotlin
-private fun initInterstitial() {
- // 1. Create and initialize MoPubInterstitial instance
- moPubInterstitial = MoPubInterstitial(requireActivity(), adUnit)
- moPubInterstitial?.interstitialAdListener = this
-
- // 2. Initialize MoPubInterstitialAdUnit
- moPubInterstitialAdUnit = MediationInterstitialAdUnit(requireContext(), configId, minSizePercentage. MoPubMediationAdUnit())
-
- val builder = SdkConfiguration.Builder(adUnit)
- MoPub.initializeSdk(requireContext(), builder.build()) {
- fetchInterstitial()
- }
-}
-
-private fun fetchInterstitial() {
- // 3. Execute `fetchDemand` method and provide MoPubInterstitial as parameter. It is important to execute this method after MoPub SDK initialization.
- moPubInterstitialAdUnit?.fetchDemand(moPubInterstitial!!) {
- // 4. Execute MoPubInterstitial `load` when receiving a valid demand result
- moPubInterstitial?.load()
- }
-}
-
-
-//...
-// After ad is loaded you can execute `show` to trigger ad display
-moPubInterstitial?.show()
-```
-
-The way of displaying **Video Interstitial Ad** is almost the same with two differences:
-
-- Need customize the ad format
-- No need to set up `minSizePercentage`
-
-``` kotlin
-private fun initInterstitial() {
- // 1. Create and initialize MoPubInterstitial instance
- moPubInterstitial = MoPubInterstitial(requireActivity(), adUnit)
- moPubInterstitial?.interstitialAdListener = this
-
- // 2. Initialize MoPubInterstitialAdUnit and provide VIDEO AdUnitFormat
- moPubInterstitialAdUnit = MediationInterstitialAdUnit(requireContext(), configId, AdUnitFormat.VIDEO, MoPubMediationAdUnit())
-
- val builder = SdkConfiguration.Builder(adUnit)
- MoPub.initializeSdk(requireContext(), builder.build()) {
- fetchInterstitial()
- }
-}
-
-private fun fetchInterstitial() {
- // 3. Execute `fetchDemand` method and provide MoPubInterstitial as parameter. It is important to execute this method after MoPub SDK initialization.
- moPubInterstitialAdUnit?.fetchDemand(moPubInterstitial!!) {
- // 4. Execute MoPubInterstitial `load` when receiving a valid demand result
- moPubInterstitial?.load()
- }
-}
-
-//...
-// After ad is loaded you can execute `show` to trigger ad display
-moPubInterstitial?.show()
-```
-
-#### Step 1: Integrate interstitial ad
-
-Follow the [MoPub Instructions](https://developers.mopub.com/publishers/android/interstitial/) and intgrate Interstital ad unit.
-
-
-#### Step 2: Create prebid Ad Unit
-
-Create the `MediationInterstitialAdUnit` object with parameters:
-
-- `configId` - an ID of a [Stored Impression](/prebid-server/features/pbs-storedreqs.html) on the Prebid server
-- `mediationDelegate` - the object from the MoPubAdapters framework responsible for managing MoPub’s ad objects.
-
-#### Step 3: Fetch Demand
-
-To run an auction on Prebid run the`fetchDemand()` method which performs several actions:
-
-- Makes a bid request to Prebid Server
-- Sets up the targeting keywords to the MoPub's ad unit
-- Passes the winning bid to the MoPub's ad unit
-- Returns the result of bid request for future processing
-
-#### Step 4: Load the Ad
-
-Call the `loadAd()` on the MoPub Interstitial Ad explicitly in the completion handler of the `fetchDemand()`.
-
-#### Step 5: Rendering
-
-If the Prebid bid wins on MoPub it will be rendered by `PrebidInterstitialAdapter`. You shouldn't do anything for this. Just make sure that your order has been set up correctly and an adapter has been added to the project.
-
-
-However, due to the expiration, the ad could become invalid with time. So it is always useful to check it with `interstitial?.isReady` before display.
-
-### Migration from the original API
-
-1. Replace the `InterstitialAdUnit` with `MediationInterstitialAdUnit`.
-5. Follow the instructions to integrate [Interstitial API](#interstitial-api).
-6. Setup the [MoPub Order](rendering-mopub-line-item-setup.html) for rendering. You should create a new order with **Network Line Items** instead of the original one.
-
-## Rewarded API
-
-Integration Example:
-
-``` kotlin
-private fun initRewarded() {
- // 1. Create MoPubRewardedVideoAdUnit instance
- rewardedAdUnit = MediationRewardedAdUnit(requireContext(), adUnitId, configId)
-
- // 2. Initialize MoPub SDK and MoPubRewardedVideoManager.
- val builder = SdkConfiguration.Builder(adUnitId)
- MoPubRewardedVideoManager.init(requireActivity())
- MoPubRewardedVideoManager.updateActivity(requireActivity())
- MoPubRewardedVideos.setRewardedVideoListener(this)
- MoPub.initializeSdk(requireContext(), builder.build()) {
- fetchRewarded(adUnitId)
- }
-}
-
-private fun fetchRewarded(adUnitId: String) {
- // 3. Execute `fetchDemand` method and keywords Map as parameter. It is important to execute this method after MoPub SDK initialization.
- rewardedAdUnit?.fetchDemand(keywordsMap) {
- val keywordsString = convertMapToMoPubKeywords(keywordsMap)
- val params = MoPubRewardedVideoManager.RequestParameters(keywordsString)
-
- // 4. After creating RequestParameters from keywordsMap you can execute rewardedVideo loading
- MoPubRewardedVideos.loadRewardedVideo(adUnitId, params, null)
- }
-}
-
-//...
-// After ad is loaded you can execute `show` to trigger ad display
-MoPubRewardedVideos.showRewardedVideo(adUnitId)
-```
-
-#### Step 1: Create an Rewarded Ad Unit
-
-Create the `MediationRewardedVideoAdUnit` object with parameters:
-
-- `configId` - an ID of a [Stored Impression](/prebid-server/features/pbs-storedreqs.html) on the Prebid server
-
-#### Step 2: Fetch Demand
-
-To run an auction on Prebid run the `fetchDemand()` method which does several things:
-
-- Makes a bid request to Prebid Server
-- Sets up the targeting keywords
-- Returns the result of bid request for future processing
-
-#### Step 3: Load the Ad
-
-Call the `loadAd()` of the MoPub's Ad View explicitly in the completion handler of the `fetchDemand()`.
-
-
-#### Step 5: Rendering
-
-If the Prebid bid wins on MoPub it will be rendered by ``. You do not have to do anything for this. Just make sure that your order had been set up correctly and an adapter is added.
-
-If the Prebid Line Item is processed in the waterfall the winning bid will be rendered by `PrebidRewardedVideoAdapter `. You shouldn't do anything for this. Just make sure that your order has been set up correctly and an adapter has been added to the project.
-
-1. Replace the `RewardedVideoAdUnit` with `MediationRewardedAdUnit`.
-5. Follow the instructions to integrate [Rewarded Video API](#rewarded-api).
-6. Setup the [MoPub Order](rendering-mopub-line-item-setup.html) for rendering. You should create a new order with **Network Line Items** instead of the original one.
-
-
-
-
-
diff --git a/prebid-mobile/modules/rendering/android-sdk-integration-pb.md b/prebid-mobile/modules/rendering/android-sdk-integration-pb.md
index 9d8b5e98b7..ad10e372a0 100644
--- a/prebid-mobile/modules/rendering/android-sdk-integration-pb.md
+++ b/prebid-mobile/modules/rendering/android-sdk-integration-pb.md
@@ -1,13 +1,13 @@
---
layout: page_v2
-title: Prebid Mobile Rendering Pure In-App Bidding
+title: Custom or No mediation
description: Integration of Prebid SDK withou primaty Ad Server
sidebarType: 2
---
-# Pure In-App Bidding Integration
+# Custom Integration
## Table of Contents
@@ -42,14 +42,15 @@ The Rendering API ad formats are accessible through the following API classes:
### Init Prebid Rendering Module
-To start running bid requests you have to provide to the SDK a Prebid Server **Account Id** for your organization:
+To start running bid requests you have to set the Prebid Server **Host** and **Account Id** and then initilize the SDK with application context. The best place for this is the `onCreate()` method of your Application class.
```
-PrebidRenderingSettings.setBidServerHost(HOST)
-PrebidRenderingSettings.setAccountId(YOUR_ACCOUNT_ID)
-```
+PrebidMobile.setBidServerHost(HOST)
+PrebidMobile.setAccountId(YOUR_ACCOUNT_ID)
-The best place to to pass the **Account ID** is the `onCreate()` method of your Application class.
+// Init SDK
+PrebidMobile.setApplicationContext(this)
+```
> **NOTE:** The account ID is an identifier of the **Stored Request**.
@@ -109,25 +110,14 @@ interstitialAdUnit?.loadAd()
interstitialAdUnit?.show()
```
-Displaying a **Video Interstitial Ad** is almost the same process as displaying an Interstitial Ad with two differences:
-
-- You need to customize the ad unit format.
-- There is no need to set up `minSizePercentage`.
-
-``` kotlin
-// 1. Create an Interstitial Ad Unit
-interstitialAdUnit = InterstitialAdUnit(requireContext(), configId, AdUnitFormat.VIDEO)
-interstitialAdUnit?.setInterstitialAdUnitListener(this)
-
-// 2. Load Ad
-interstitialAdUnit?.loadAd()
-
-// .....
+The **default** ad format for interstitial is **DISPLAY**. In order to make a `multiformat bid request`, set the respective values into the `adUnitFormats` parameter.
-// 3. Show the ad
-interstitialAdUnit?.show()
```
-
+interstitialAdUnit = InterstitialAdUnit(
+ requireContext(),
+ configId,
+ EnumSet.of(AdUnitFormat.DISPLAY, AdUnitFormat.VIDEO))
+```
#### Step 1: Create an Ad Unit
diff --git a/prebid-mobile/modules/rendering/android-sdk-integration.md b/prebid-mobile/modules/rendering/android-sdk-integration.md
index 6555bfbe12..bc0573ad96 100644
--- a/prebid-mobile/modules/rendering/android-sdk-integration.md
+++ b/prebid-mobile/modules/rendering/android-sdk-integration.md
@@ -12,7 +12,7 @@ sidebarType: 2
## Gradle Integration
-To add the dependency, open your project and update the app module’s build.gradle to have the following repositories and dependencies (note that rendering module is in the beta stage):
+To add the dependency, open your project and update the app module’s build.gradle to have the following repositories and dependencies:
```
allprojects {
@@ -28,7 +28,7 @@ allprojects {
dependencies {
...
- implementation('org.prebid:prebid-mobile-sdk:1.13.0-beta+')
+ implementation('org.prebid:prebid-mobile-sdk:2.0.0')
...
}
```
diff --git a/prebid-mobile/modules/rendering/ios-sdk-Integration.md b/prebid-mobile/modules/rendering/ios-sdk-Integration.md
index 2114faa855..eb7083258d 100644
--- a/prebid-mobile/modules/rendering/ios-sdk-Integration.md
+++ b/prebid-mobile/modules/rendering/ios-sdk-Integration.md
@@ -9,44 +9,27 @@ sidebarType: 2
# Code Integration for iOS
-
-
-## CocoaPods integration (BETA)
-
-The rendering API is introduced as a beta release. In order to integrate it you have to set the beta version explisitly:
-
-```
-pod 'PrebidMobile', '1.13.0-beta2'
-```
+pod 'PrebidMobileGAMEventHandlers'
-If you need to integrate Prebid with GAM or MoPub add these pods respectively
+# + AdMob (optional)
+pod 'PrebidMobileAdMobAdapters'
+# + MAX (optional)
+pod 'PrebidMobileMAXAdapters'
```
-# + Google Ad Manager (optional)
-pod 'PrebidMobileGAMEventHandlers', '1.13.0-beta2'
-
-# + MoPub (optional)
-pod 'PrebidMobileMoPubAdapters', '1.13.0-beta2'
-```
-
## Init Prebid Rendering
@@ -60,8 +43,14 @@ import PrebidMobile
Then set the predefined or costom Prebid Server **host** and provide the **Prebid Account ID**.
```
-PrebidRenderingConfig.shared.accountID = YOUR_ACCOUNT_ID
-PrebidRenderingConfig.shared.prebidServerHost = HOST
+Prebid.shared.prebidServerHost = HOST
+Prebid.shared.prebidServerAccountId = YOUR_ACCOUNT_ID
+```
+
+And initialize the SDK:
+
+```
+Prebid.initializeSDK()
```
diff --git a/prebid-mobile/modules/rendering/ios-sdk-customization-controls.md b/prebid-mobile/modules/rendering/ios-sdk-customization-controls.md
new file mode 100644
index 0000000000..4a3e951d8d
--- /dev/null
+++ b/prebid-mobile/modules/rendering/ios-sdk-customization-controls.md
@@ -0,0 +1,72 @@
+---
+
+layout: page_v2
+title: Ad Experience Controls
+description: Approaches for changing the ad expirience
+sidebarType: 2
+
+---
+
+# Ad Experience Controls
+
+Prebid SDK provides an API way to customize its behaviour.
+
+> NOTE: In the nearest future the Server Side Configuration will be supported as well. Follow this [feature request](https://github.com/prebid/prebid-server/issues/2186) for the details.
+
+
+## Rendering Controls
+
+The following properties allow to customize the rendering of Video Interstitial Ads.
+
+### Max Video Duration
+
+The `videoParameters.maxDuration` indicates the maximum available playback time in seconds.
+If the value in the **Duration** tag is bigger than the given value SDK will fail to load ad, providing a respective error message.
+
+### Application Muted
+
+The `isMuted` property indicates whether the ad should run playback with sound or not.
+Default value - **false**.
+
+### Close Button Area
+
+The `closeButtonArea` property indicates the percent of device screen which the close button should occupy. The possible values are from **0** to **1**.
+
+### Close Button Position
+
+The `closeButtonPosition` property indicates the position of the close button on the screen. The possible values are **TopLeft** and **TopRight**. The default value is **TopRight**.
+
+The example:
+
+![Close Button Position - Top Right](/assets/images/prebid-mobile/modules/rendering/ad-experience-ios-close-button-possition-top-left.png){:width="250px"}
+
+### Skip Button Area
+
+The `skipButtonArea` property indicates the percent of device screen which the skip button should occupy. The possible values are from **0** to **1**.
+
+### Skip Button Position
+
+The `skipButtonPosition` property indicates the position of the close button on the screen. The possible values are **TopLeft** and **TopRight**. The default value is **TopLeft**.
+
+The example:
+
+![Close Button Position - Top Right](/assets/images/prebid-mobile/modules/rendering/ad-experience-ios-skip-button-possition-top-left.png){:width="250px"}
+
+### Skip Delay
+
+The `skipDelay` property indicates the number of seconds which should be passed from the start of playback until the skip or close button should be shown. The default value is **10**.
+
+The code sample:
+
+``` swift
+interstitialController = InterstitialRenderingAdUnit(configID: prebidConfigId,
+ minSizePercentage: CGSize(width: 30, height: 30))
+interstitialController?.delegate = self
+interstitialController?.videoParameters.maxDuration = SingleContainerInt(integerLiteral: 30)
+interstitialController?.closeButtonArea = 0.1
+interstitialController?.skipDelay = 5
+interstitialController?.skipButtonArea = 0.1
+interstitialController?.skipButtonPosition = .topRight
+interstitialController?.closeButtonPosition = .topRight
+```
+
diff --git a/prebid-mobile/modules/rendering/ios-sdk-integration-admob.md b/prebid-mobile/modules/rendering/ios-sdk-integration-admob.md
index 9624bf4e9f..e9b233a256 100644
--- a/prebid-mobile/modules/rendering/ios-sdk-integration-admob.md
+++ b/prebid-mobile/modules/rendering/ios-sdk-integration-admob.md
@@ -94,7 +94,7 @@ prebidAdMobMediaitonAdUnit.fetchDemand { [weak self] result in
#### Step 1: Create GADRequest and GADBannerView
-This step is totally the same as for pure [AdMob integration](https://developers.google.com/admob/ios/banner). You don't have to make any modifications here.
+This step is totally the same as for original [AdMob integration](https://developers.google.com/admob/ios/banner). You don't have to make any modifications here.
#### Step 2: Create AdMobMediationBannerUtils
@@ -174,35 +174,24 @@ admobAdUnit?.fetchDemand(completion: { [weak self]result in
})
```
-The way of displaying **Video Interstitial Ad** is almost the same but you have to customize the ad format.
+The **default** ad format for interstitial is **.display**. In order to make a `multiformat bid request`, set the respective values into the `adFormats` property.
``` swift
-// 1. Create GADRequest
-gadRequest = GADRequest()
-
-// 2. Create AdMobMediationInterstitialUtils
-mediationDelegate = AdMobMediationInterstitialUtils(gadRequest: self.gadRequest)
+// Make bid request for video ad
+adUnit?.adFormats = [.video]
-// 3. Create MediationInterstitialAdUnit
-admobAdUnit = MediationInterstitialAdUnit(configId: configID,
- mediationDelegate: mediationDelegate!)
-
- admobAdUnit.adFormat = .video
+// Make bid request for both video amd disply ads
+adUnit?.adFormats = [.video, .display]
+// Make bid request for disply ad (default behaviour)
+adUnit?.adFormats = [.display]
-// 4. Make a bid request
-admobAdUnit?.fetchDemand(completion: { [weak self]result in
-
- // The same as for display interstitial
- // ...
-
- }
-})
```
+
#### Step 1: Create GADRequest
-This step is totally the same as for pure [AdMob integration](https://developers.google.com/admob/ios/interstitial#swift). You don't have to make any modifications here.
+This step is totally the same as for original [AdMob integration](https://developers.google.com/admob/ios/interstitial#swift). You don't have to make any modifications here.
#### Step 2: Create AdMobMediationInterstitialUtils
@@ -286,7 +275,7 @@ To be notified when user earns a reward follow the [AdMob intructions](https://d
#### Step 1: Create GADRequest
-This step is totally the same as for pure [AdMob integration](https://developers.google.com/admob/ios/rewarded). You don't have to make any modifications here.
+This step is totally the same as for original [AdMob integration](https://developers.google.com/admob/ios/rewarded). You don't have to make any modifications here.
#### Step 2: Create MediationRewardedAdUnit
diff --git a/prebid-mobile/modules/rendering/ios-sdk-integration-gam.md b/prebid-mobile/modules/rendering/ios-sdk-integration-gam.md
index 156ac3dc14..92d3840d45 100644
--- a/prebid-mobile/modules/rendering/ios-sdk-integration-gam.md
+++ b/prebid-mobile/modules/rendering/ios-sdk-integration-gam.md
@@ -112,12 +112,19 @@ And all the rest code will be the same as for integration of Display Banner.
### Migration from the original API
+GAM setup:
+
+1. Leave the original order and ad units as is. They are not relevant for the rendering approach but they will serve ads for released applications.
+2. Create new GAM ad unit.
+3. Setup new [GAM Order](rendering-gam-line-item-setup.html) for rendering approach.
+
+Integration:
+
1. Replace the `GAMBannerView` with `BannerView` in the UI.
-3. Implement the protocol `BannerViewDelegate` in the View Controller.
-4. Remove usage of `GAMBannerView`, `GAMRequest`, and implementation of the `GADBannerViewDelegate`.
-5. Remove original `BannerAdUnit`.
+2. Implement the protocol `BannerViewDelegate` in the View Controller.
+3. Remove usage of `GAMBannerView`, `GAMRequest`, and implementation of the `GADBannerViewDelegate`.
+4. Remove original `BannerAdUnit`.
5. Follow the instructions to integrate [Banner API](#banner-api).
-6. Setup the [GAM Order](rendering-gam-line-item-setup.html) for rendering. You can create a new order or just replace the code of creative in the original one and continue to use it for rendering integration.
## Interstitial API
@@ -146,34 +153,21 @@ if interstitial.isReady {
```
-The way of displaying **Video Interstitial Ad** is almost the same with two differences:
-
-- Need to customize the ad format
-- No need to set up `minSizePercentage`
+The **default** ad format for interstitial is **.display**. In order to make a `multiformat bid request`, set the respective values into the `adFormats` property.
``` swift
- // 1. Create Event Handler
-let eventHandler = GAMInterstitialEventHandler(adUnitID: GAM_AD_UNIT_ID)
-
-// 2. Create Interstitial Ad Unit
-interstitial = InterstitialRenderingAdUnit(configID: CONFIG_ID,
- eventHandler: eventHandler)
-
-interstitial.adFormat = .video
-interstitial.delegate = self
-
-// 3. Load an Ad
-interstitial.loadAd()
+// Make bid request for video ad
+adUnit?.adFormats = [.video]
-/// .......
+// Make bid request for both video amd disply ads
+adUnit?.adFormats = [.video, .display]
-// 4. Show Ad
-if interstitial.isReady {
- interstitial.show(from: self)
-}
+// Make bid request for disply ad (default behaviour)
+adUnit?.adFormats = [.display]
```
+
#### Step 1: Create Event Handler
To create an event handler you should provide a **GAM Ad Unit**.
@@ -208,12 +202,20 @@ func interstitialDidReceiveAd(_ interstitial: InterstitialAdUnit) {
### Migration from the original API
+GAM setup:
+
+1. Leave the original order and ad units as is. They are not relevant for the rendering approach but they will serve ads for released applications.
+2. Create new GAM ad unit.
+3. Setup new [GAM Order](rendering-gam-line-item-setup.html) for rendering approach.
+
+Integration:
+
1. Replace the `GAMInterstitialAd` with `InterstitialRenderingAdUnit` in the View Controller.
-3. Implement the protocol `InterstitialAdUnitDelegate` in the View Controller.
-4. Remove usage of `GAMInterstitialAd`, `GAMRequest`.
-5. Remove original `InterstitialAdUnit`.
+2. Implement the protocol `InterstitialAdUnitDelegate` in the View Controller.
+3. Remove usage of `GAMInterstitialAd`, `GAMRequest`.
+4. Remove original `InterstitialAdUnit`.
5. Follow the instructions to integrate [Interstitial API](#interstitial-api).
-6. Setup the [GAM Order](rendering-gam-line-item-setup.html) for rendering. **Pay Attention** that you can replace the code of creative in the original order **only for display** ads. For video interstitial you have to create a special order and remove the original one.
+
## Rewarded API
@@ -287,9 +289,17 @@ func rewardedAdDidReceiveAd(_ rewardedAd: RewardedAdUnit) {
### Migration from the original API
+GAM setup:
+
+1. Leave the original order and ad units as is. They are not relevant for the rendering approach but they will serve ads for released applications.
+2. Create new GAM ad unit.
+3. Setup new [GAM Order](rendering-gam-line-item-setup.html) for rendering approach.
+
+Integration:
+
1. Replace the `GADRewardedAd` with `RewardedAdUnit` in the View Controller.
-3. Implement the protocol `RewardedAdUnitDelegate` in the View Controller.
-4. Remove usage of `GAMRequest`.
-5. Remove original `RewardedVideoAdUnit`.
+2. Implement the protocol `RewardedAdUnitDelegate` in the View Controller.
+3. Remove usage of `GAMRequest`.
+4. Remove original `RewardedVideoAdUnit`.
5. Follow the instructions to integrate [Rewarded API](#rewarded-api).
-6. Setup the [GAM Order](rendering-gam-line-item-setup.html) for rendering. **Pay Attention** that you have to create a new special order for rewarded video ad and remove the original one.
+ß
\ No newline at end of file
diff --git a/prebid-mobile/modules/rendering/ios-sdk-integration-max.md b/prebid-mobile/modules/rendering/ios-sdk-integration-max.md
new file mode 100644
index 0000000000..f7f7ffe155
--- /dev/null
+++ b/prebid-mobile/modules/rendering/ios-sdk-integration-max.md
@@ -0,0 +1,300 @@
+---
+layout: page_v2
+title: AppLovin MAX Integration
+description: Integration of Prebid Rendering module whith AppLovin MAX
+sidebarType: 2
+---
+
+# AppLovin MAX Integration
+
+The integration of Prebid Mobile with AppLovin MAX assumes that publisher has MAX account and has already integrated the AppLovin MAX SDK into the app.
+
+See the [AppLovin MAX Documentation](https://dash.applovin.com/documentation/mediation/ios/getting-started/integration) for the MAX integration details.
+
+## MAX Integration Overview
+
+![Rendering with AppLovin MAX as the Primary Ad Server](/assets/images/prebid-mobile/modules/rendering/prebid-in-app-bidding-overview-max.png)
+
+**Steps 1-2** Prebid SDK makes a bid request. Prebid server runs an auction and returns the winning bid.
+
+**Step 3** MAX SDK makes an ad request. MAX returns the waterfall with respective placements.
+
+**Step 4** For each prebid's placement, the MAX SDK sequentially instantiates an adapter.
+
+**Step 5** The adapter verifies the targeting keywords of the winning bid and the custom properties of the given placement. If they match the adapter will render the winning bid. Otherwise, adpater will fail with "no ad" immediately and the next placement will instantiate the same adapter but for another custom properties.
+
+Prebid Mobile supports these ad formats:
+
+- Display Banner
+- Display Interstitial
+- Video Interstitial
+- Rewarded Video
+- Native
+
+They can be integrated using these API categories:
+
+- [**Banner API**](#banner-api) - for *Display* Banner
+- [**Interstitial API**](#interstitial-api) - for *Display* and *Video* Interstitials
+- [**Rewarded API**](#rewarded-api) - for *Rewarded Video*
+- [**Native API**](#native-ads) - for *Native Ads*
+
+
+## Banner API
+
+Integration example:
+
+``` swift
+// 1. Create MAAdView
+adBannerView = MAAdView(adUnitIdentifier: maxAdUnitId)
+adBannerView?.delegate = self
+
+// 2. Create MAXMediationBannerUtils
+mediationDelegate = MAXMediationBannerUtils(adView: adBannerView!)
+
+// 3. Create MediationBannerAdUnit
+adUnit = MediationBannerAdUnit(configID: prebidConfigId,
+ size: adUnitSize,
+ mediationDelegate: mediationDelegate!)
+
+// 4. Make a bid request
+adUnit?.fetchDemand { [weak self] result in
+
+ // 5. Make an ad request to MAX
+ self?.adBannerView.loadAd()
+}
+```
+
+#### Step 1: Create MAAdView
+
+This step is totally the same as for original [MAX integration](https://dash.applovin.com/documentation/mediation/ios/getting-started/banners#loading-a-banner). You don't have to make any modifications here.
+
+
+#### Step 2: Create MAXMediationBannerUtils
+
+The `MAXMediationBannerUtils ` is a helper class, wich performs certain utilty work for the `MediationBannerAdUnit`, like passing the targeting keywords to the adapters and checking the visibility of the ad view.
+
+#### Step 3: Create MediationBannerAdUnit
+
+The `MediationBannerAdUnit` is a part of Prebid mediation API. This class is responsible for making bid request and providing the winning bid and targeting keywords to mediating SDKs.
+
+#### Step 4: Make bid request
+
+The `fetchDemand` method makes a bid request to prebid server and provides a result in a completion handler.
+
+#### Step 5: Make an Ad Reuest
+
+Now you should make a regular MAX's ad request. Everything else will be handled by prebid adapters.
+
+## Interstitial API
+
+Integration example:
+
+``` swift
+// 1. Create MAInterstitialAd
+interstitial = MAInterstitialAd(adUnitIdentifier: maxAdUnitId)
+interstitial.delegate = self
+
+// 2. Create MAXMediationInterstitialUtils
+mediationDelegate = MAXMediationInterstitialUtils(interstitialAd: interstitial!)
+
+// 3. Create MediationInterstitialAdUnit
+adUnit = MediationInterstitialAdUnit(configId: prebidConfigId,
+ minSizePercentage: CGSize(width: 30, height: 30),
+ mediationDelegate: mediationDelegate!)
+
+// 4. Make a bid request
+adUnit?.fetchDemand { [weak self] result in
+ guard let self = self else { return }
+
+ guard result == .prebidDemandFetchSuccess else {
+ self.fetchDemandFailedButton.isEnabled = true
+ return
+ }
+
+ // 5. Make an ad request to MAX
+ self.interstitial?.load()
+})
+```
+
+The **default** ad format for interstitial is **.display**. In order to make a `multiformat bid request`, set the respective values into the `adFormats` property.
+
+``` swift
+// Make bid request for video ad
+adUnit?.adFormats = [.video]
+
+// Make bid request for both video amd disply ads
+adUnit?.adFormats = [.video, .display]
+
+// Make bid request for disply ad (default behaviour)
+adUnit?.adFormats = [.display]
+
+```
+
+#### Step 1: Create MAInterstitialAd
+
+This step is totally the same as for original [MAX integration](https://dash.applovin.com/documentation/mediation/ios/getting-started/interstitials). You don't have to make any modifications here.
+
+
+#### Step 2: Create MAXMediationInterstitialUtils
+
+The `MAXMediationInterstitialUtils` is a helper class, wich performs certain utilty work for the `MediationInterstitialAdUnit `, like passing the targeting keywords to the adapters and checking the visibility of the ad view.
+
+#### Step 3: Create MediationInterstitialAdUnit
+
+The `MediationInterstitialAdUnit` is a part of the prebid mediation API. This class is responsible for making a bid request and providing a winning bid to the mediating SDKs.
+
+#### Step 4: Make bid request
+
+The `fetchDemand` method makes a bid request to prebid server and provides a result in a completion handler.
+
+#### Step 5: Make an Ad Reuest
+
+Now you should make a regular MAX's ad request. Everything else will be handled by GMA SDK and prebid adapters.
+
+#### Steps 6: Display an ad
+
+Once you receive the ad it will be ready for display. Folow the [MAX instructions](https://dash.applovin.com/documentation/mediation/ios/getting-started/interstitials#showing-an-interstitial-ad) about how to do it.
+
+## Rewarded API
+
+Integration example:
+
+``` swift
+// 1. Get an instance of MARewardedAd
+rewarded = MARewardedAd.shared(withAdUnitIdentifier: maxAdUnitId)
+rewarded.delegate = self
+
+// 2. Create MAXMediationRewardedUtils
+mediationDelegate = MAXMediationRewardedUtils(rewardedAd: rewarded!)
+
+// 3. Create MediationRewardedAdUnit
+adUnit = MediationRewardedAdUnit(configId: prebidConfigId, mediationDelegate: mediationDelegate!)
+
+// 4. Make a bid request
+adUnit?.fetchDemand { [weak self] result in
+ guard let self = self else { return }
+
+ // 5. Make an ad request to MAX
+ self.rewarded?.load()
+}
+```
+
+The way of displaying the rewarded ad is totally the same as for the Interstitial Ad.
+
+To be notified when user earns a reward follow the [MAX intructions](https://dash.applovin.com/documentation/mediation/ios/getting-started/rewarded-ads#loading-a-rewarded-ad).
+
+#### Step 1: Get an instance of MARewardedAd
+
+This step is totally the same as for original [MAX integration](https://dash.applovin.com/documentation/mediation/ios/getting-started/rewarded-ads). You don't have to make any modifications here.
+
+
+#### Step 2: Create MAXMediationRewardedUtils
+
+The `MAXMediationRewardedUtils` is a helper class, wich performs certain utilty work for the `MediationRewardedAdUnit`, like passing the targeting keywords to the adapters.
+
+#### Step 3: Create MediationRewardedAdUnit
+
+The `MediationRewardedAdUnit` is a part of the prebid mediation API. This class is responsible for making a bid request and providing a winning bid and targeting keywords to the adapters.
+
+#### Step 4: Make bid request
+
+The `fetchDemand` method makes a bid request to the prebid server and provides a result in a completion handler.
+
+#### Step 5: Make an Ad Reuest
+
+Now you should make a regular MAX's ad request. Everything else will be handled by GMA SDK and prebid adapters.
+
+#### Steps 6: Display an ad
+
+Once the rewarded ad is recieved you can display it. Folow the [MAX instructions](https://dash.applovin.com/documentation/mediation/ios/getting-started/rewarded-ads#showing-a-rewarded-ad) for the details.
+
+## Native Ads
+
+Integration example:
+
+``` swift
+// 1. Create MANativeAdLoader
+nativeAdLoader = MANativeAdLoader(adUnitIdentifier: maxAdUnitId)
+nativeAdLoader?.nativeAdDelegate = self
+
+// 2. Create MAXMediationNativeUtils
+mediationDelegate = MAXMediationNativeUtils(nativeAdLoader: nativeAdLoader!)
+
+// 3. Create and configure MediationNativeAdUnit
+nativeAdUnit = MediationNativeAdUnit(configId: prebidConfigId,
+ mediationDelegate: mediationDelegate!)
+
+nativeAdUnit.setContextType(ContextType.Social)
+nativeAdUnit.setPlacementType(PlacementType.FeedContent)
+nativeAdUnit.setContextSubType(ContextSubType.Social)
+
+// 4. Set up assets for bid request
+nativeAdUnit.addNativeAssets(nativeAssets)
+
+// 5. Set up event tracker for bid request
+nativeAdUnit.addEventTracker(eventTrackers)
+
+// 6. Make a bid request
+nativeAdUnit.fetchDemand { [weak self] result in
+
+ // 7. Make an ad request to MAX
+ self?.nativeAdLoader?.loadAd(into: self?.createNativeAdView())
+}
+```
+
+#### Step 1: Create MANativeAdLoader
+
+Prepare the `MANativeAdLoader` object before you make a bid request. It will be needed for prebid mediation utils.
+
+#### Step 2: Create MAXMediationNativeUtils
+
+The `MAXMediationNativeUtils` is a helper class, wich performs certain utilty work for `MediationNativeAdUnit`, like passing the targeting keywords to adapters and checking the visibility of the ad view.
+
+#### Step 3: Create and configure MediationNativeAdUnit
+
+The `MediationNativeAdUnit` is a part of the prebid mediation API. This class is responsible for making a bid request and providing a winning bid and targeting keywords to the adapters. Fot the better targetting you should provide additional properties like `conteaxtType` and `placemantType`.
+
+#### Step 4: Set up assets for bid request
+
+The bid request for native ads should have the description of expected assets. The full spec for the native template you can find in the [Native Ad Specification from IAB](https://www.iab.com/wp-content/uploads/2018/03/OpenRTB-Native-Ads-Specification-Final-1.2.pdf).
+
+The example of creating the assets array:
+
+```
+let image = NativeAssetImage(minimumWidth: 200, minimumHeight: 50, required: true)
+image.type = ImageAsset.Main
+
+let icon = NativeAssetImage(minimumWidth: 20, minimumHeight: 20, required: true)
+icon.type = ImageAsset.Icon
+
+let title = NativeAssetTitle(length: 90, required: true)
+
+let body = NativeAssetData(type: DataAsset.description, required: true)
+
+let cta = NativeAssetData(type: DataAsset.ctatext, required: true)
+
+let sponsored = NativeAssetData(type: DataAsset.sponsored, required: true)
+
+return [icon, title, image, body, cta, sponsored]
+```
+
+#### Step 5: Set up event tracker for bid request
+
+The bid request for mative ads may have a descrition of expected event trackers. The full spec for the Native template you can find in the [Native Ad Specification from IAB](https://www.iab.com/wp-content/uploads/2018/03/OpenRTB-Native-Ads-Specification-Final-1.2.pdf).
+
+The example of creating the event trackers array:
+
+```
+let eventTrackers = [
+ NativeEventTracker(event: EventType.Impression,
+ methods: [EventTracking.Image,EventTracking.js])
+]
+```
+
+#### Step 6: Make a bid request
+
+The `fetchDemand` method makes a bid request to prebid server and provides a result in a completion handler.
+
+#### Step 7: Load Native ad
+
+Now just load a native ad from MAX according to the [MAX instructions](https://dash.applovin.com/documentation/mediation/ios/getting-started/native-manual#load-the-native-ad).
diff --git a/prebid-mobile/modules/rendering/ios-sdk-integration-mopub-native.md b/prebid-mobile/modules/rendering/ios-sdk-integration-mopub-native.md
deleted file mode 100644
index 88f8ca022c..0000000000
--- a/prebid-mobile/modules/rendering/ios-sdk-integration-mopub-native.md
+++ /dev/null
@@ -1,184 +0,0 @@
----
-
-layout: page_v2
-title: Prebid Mobile Rendering Modules
-description: Prebid Mobile Rendering Modules architecture
-sidebarType: 2
-
----
-
-# MoPub: Native Ads Integration
-
-## Native Ads
-
-There are two ways to integrate Native ads with MoPub:
-
- - using custom native ad renderer from MoPub adapters
- - bind the UI components with data from the winning bid manualy in the app
-
-### Antive Ad Renderer
-
-The integration with native ad renere is the same as wi any other adpater. See the [MoPub docs](https://developers.mopub.com/publishers/mediation/integrate-android/#set-up-ad-renderers-for-native-ads) for the details.
-
-### Manual binding
-
-Integration Example:
-
-```swift
-
-func loadAd() {
- guard let nativeAdConfig = nativeAdConfig, let adRenderingViewClass = adRenderingViewClass else {
- return
- }
-
- adUnit = MoPubNativeAdUnit(configID: prebidConfigId, nativeAdConfiguration: nativeAdConfig)
-
- let targeting = MPNativeAdRequestTargeting()
-
- adUnit?.fetchDemand(with: targeting!) { [weak self] result in
- guard let self = self else {
- return
- }
-
- let settings = MPStaticNativeAdRendererSettings();
- settings.renderingViewClass = adRenderingViewClass
- let prebidConfig = PrebidMoPubNativeAdRenderer.rendererConfiguration(with: settings);
- let mopubConfig = MPStaticNativeAdRenderer.rendererConfiguration(with: settings);
-
- PrebidMoPubAdaptersUtils.shared.prepareAdObject(targeting!)
-
- let adRequest = MPNativeAdRequest.init(adUnitIdentifier: self.moPubAdUnitId, rendererConfigurations: [prebidConfig, mopubConfig!])
- adRequest?.targeting = targeting
-
- adRequest?.start { [weak self] request, response , error in
- guard let self = self else {
- return
- }
-
- guard error == nil else {
- return
- }
-
- guard let moPubNativeAd = response else {
- return
- }
-
- let nativeAdDetectionListener = NativeAdDetectionListener { [weak self] nativeAd in
- guard let self = self else {
- return
- }
- self.setupPrebidNativeAd(nativeAd)
- } onPrimaryAdWin: { [weak self] in
- guard let self = self else {
- return
- }
- self.setupMoPubNativeAd(moPubNativeAd)
- } onNativeAdInvalid: { [weak self] error in
- self?.nativeAdInvalidButton.isEnabled = true
- }
-
- PrebidMoPubAdaptersUtils.shared.find(nativeAd: moPubNativeAd,
- nativeAdDetectionListener: nativeAdDetectionListener)
- }
- }
-}
-
-```
-
-## Native Styles
-
-The Native Styles ads are integrated with Baner API.
-
-Integration Example:
-
-``` swift
-// 1. Create a MoPub AdView
-banner = MPAdView(adUnitId: MOPUB_AD_UNIT_ID)
-banner.delegate = self
-
-// 2. Create an Prebid Ad Unit
-adUnit = MoPubBannerAdUnit(configID: CONFIG_ID, size: adSize)
-
-// 3. Provide NativeAdConfiguration
-adUnit.nativeAdConfig = NativeAdConfiguration(testConfigWithAssets: assets)
-
-// 4. Run a Header Bidding auction on Prebid
-adUnit.fetchDemand(with: banner!) { [weak self] result in
-
-// 5. Load an Ad
-self?.banner.loadAd()
-}
-```
-
-#### Step 1: Create Ad View
-
-You have to create and place MoPub's Ad View into the app page.
-
-
-#### Step 2: Create Ad Unit
-
-Create the **MoPubBannerAdUnit** object with parameters:
-
-- **configID** - an ID of Stored Impression on the Prebid server
-- **size** - the size of the ad unit which will be used in the bid request.
-
-#### Step 3: Create and provide Native Assets
-
-To make a proper bid request publishers should provide the needed assets to the NativeAdConfiguration class. Each asset describes the UI element of the ad according to the [OpenRTB standarts](https://www.iab.com/wp-content/uploads/2018/03/OpenRTB-Native-Ads-Specification-Final-1.2.pdf).
-
-``` swift
-let assets = [
- {
- let title = NativeAssetTitle(length: 90)
- title.required = true
- return title
- }(),
- {
- let icon = NativeAssetImage()
- icon.widthMin = 50
- icon.heightMin = 50
- icon.required = true
- icon.imageType = NSNumber(value: PBMImageAssetType.icon.rawValue)
- return icon
- }(),
- {
- let image = NativeAssetImage()
- image.widthMin = 150
- image.heightMin = 50
- image.required = true
- image.imageType = NSNumber(value: PBMImageAssetType.main.rawValue)
- return image
- }(),
- {
- let desc = NativeAssetData(dataType: .desc)
- desc.required = true
- return desc
- }(),
- {
- let cta = NativeAssetData(dataType: .ctaText)
- cta.required = true
- return cta
- }(),
- {
- let sponsored = NativeAssetData(dataType: .sponsored)
- sponsored.required = true
- return sponsored
- }(),
-]
-```
-
-See the full description of NativeAdConfiguration options [here](rendering-native-ad-configuration.md).
-
-### Step 4: Fetch Demand
-
-To run an auction on Prebid run the `fetchDemand()` method which performs several actions:
-
-- Makes a bid request to Prebid
-- Sets up the targeting keywords to the MoPub's ad unit
-- Passes the winning bid to the MoPub's ad unit
-- Returns the result of bid request for future processing
-
-### Step 5: Load the Ad
-
-When the bid request has completed, the responsibility of making the Ad Request is passed to the publisher. That is why you have to invoke `loadAd()` on the MoPub's Ad View explicitly in the completion handler of `fetchDemand()`.
-
diff --git a/prebid-mobile/modules/rendering/ios-sdk-integration-mopub.md b/prebid-mobile/modules/rendering/ios-sdk-integration-mopub.md
deleted file mode 100644
index c35499b22f..0000000000
--- a/prebid-mobile/modules/rendering/ios-sdk-integration-mopub.md
+++ /dev/null
@@ -1,272 +0,0 @@
----
-
-layout: page_v2
-title: Prebid Mobile Rendering Modules
-description: Prebid Mobile Rendering Modules architecture
-sidebarType: 2
-
----
-
-# MoPub Integration
-
-The integration of Prebid Rendering API with MoPub assumes that publisher has an account on MoPub and has already integrated the MoPub SDK into the app.
-
-If you do not have MoPub SDK in the app yet, refer the [MoPub's Documentation](https://github.com/mopub/mopub-ios-sdk).
-
-{% capture warning_note %}
-MoPub Adapters for the Prebid SDK are compatible with **MoPub 5.16** and above. The ads won't be shown with earlier versions of MoPub SDK.
-{% endcapture %}
-{% include /alerts/alert_important.html content=warning_note %}
-
-## MoPub Integration Overview
-
-The integration of Prebid Rendering API into MoPub monetization flow is based on MoPub's Mediation feature.
-
-![Rendering with MoPub as the Primary Ad Server](/assets/images/prebid-mobile/modules/rendering/Prebid-In-App-Bidding-Overview-MoPub.png)
-
-**Steps 1-2** Prebid SDK makes a bid request. Prebid server runs an auction and returns the winning bid to the SDK.
-
-**Step 3** Prebid SDK via MoPubAdapters framework sets up targeting keywords into the MoPub's ad unit.
-
-**Step 4** MoPub SDK makes an ad request. MoPub adds the prebid's line item into the mediation chain.
-
-**Step 5** If Prebid's creative win the waterfall then the MoPub SDK will instantiate respective Prebid Adapter which will render the winning bid. For more details about Mediation and Adapters read the [MoPub's Documentation](https://developers.mopub.com/networks/integrate/mopub-network-mediation-guidelines/).
-
-**Step 6** The winner is displayed in the app with the respective rendering engine.
-
-Prebid **Mediation API** supports these ad kinds:
-
-- Display Banner
-- Display Interstitial
-- Video Interstitial
-- Rewarded Video
-
-[//]: # (- Native)
-[//]: # (- Native Styles)
-
-They can be integrated using these API categories.
-
-- [**Banner API**](#banner-api) - for *Display Banner*
-- [**Interstitial API**](#interstitial-api) - for *Display* and *Video* Interstitials
-- [**Rewarded API**](#rewarded-api) - for *Rewarded Video*
-
-[//]: # (- [**Native API**](ios-sdk-integration-mopub-native.html) - for *Native* and *Native Styles* ads)
-
-## Banner API
-
-Integration example:
-
-``` swift
-// 1. Create an AdView
-banner = MPAdView(adUnitId: MOPUB_AD_UNIT_ID)
-banner.delegate = self
-
-// 2. Create an In-App Bidding Ad Unit
-adUnit = MediationBannerAdUnit( configID: CONFIG_ID,
- size: adSize,
- mediationDelegate: MoPubMediationDelegate())
-
-// 3. Run an Header Bidding auction on Prebid
-adUnit.fetchDemand(with: banner!) { [weak self] result in
-
- // 4. Load an Ad
- self?.banner.loadAd()
-}
-```
-
-#### Step 1: Create Ad View
-
-Follow the [MoPub Instructions](https://developers.mopub.com/publishers/ios/banner/) for Banner integration.
-
-#### Step 2: Create Ad Unit
-
-Create the `MediationBannerAdUnit` object with parameters:
-
-- `configID` - an ID of Stored Impression on the Prebid server
-- `size` - the size of the ad unit which will be used in the bid request
-- `mediationDelegate` - the object from the MoPubAdapters framework responsible for managing MoPub's ad objects.
-
-#### Step 3: Fetch Demand
-
-Call the method `fetchDemand()` which performs several actions:
-
-- Makes a bid request to Prebid Server
-- Sets up the targeting keywords to the MoPub's ad unit using provided `mediationDelegate`
-- Passes the winning bid to the MoPub's ad unit
-- Returns the result of bid request for future processing
-
-#### Step 4: Load the Ad
-
-When the bid request is completed, the responsibility of making the Ad Request is passed to the publisher. You have to invoke `loadAd()` on the MoPub's Ad View explicitly in the completion handler of the `fetchDemand()`.
-
-#### Step 5: Rendering
-
-If the Prebid bid wins on MoPub it will be rendered by `PrebidBannerAdapter`. You shouldn't do anything for this. Just make sure that your order has been set up correctly and Prebid MoPub adapter is added to the project.
-
-### Migration from the original API
-
-1. Replace the `BannerAdUnit` with `MediationBannerAdUnit`.
-5. Follow the instructions to integrate [Banner API](#banner-api).
-6. Setup the [MoPub Order](rendering-mopub-line-item-setup.html) for rendering. You should create a new order with **Network Line Items** instead of the original one.
-
-## Interstitial API
-
-Integration example:
-
-``` swift
-// 1. Create an MoPub's Interstitial Controller
-interstitialController = MPInterstitialAdController.init(forAdUnitId: MOPUB_AD_UNIT_ID)
-interstitialController.delegate = self
-
-// 2. Create an In-App Bidding Interstitial Ad Unit
-interstitialAdUnit = MediationInterstitialAdUnit(configID: CONFIG_ID,
- minSizePercentage: CGSize(width: 30, height: 30),
- mediationDelegte: MoPubMediationDelegate() )
-
-// 3. Run an Header Bidding auction on Prebid
-interstitialAdUnit.fetchDemand(with: interstitialController!) { [weak self] result in
-
- // 4. Load an Ad
- self?.interstitialController.loadAd()
-}
-
-// .....
-
-// 5. Show the ad
-if interstitialController.ready {
- interstitialController.show(from: self)
-}
-```
-
-The way of displaying **Video Interstitial Ad** is almost the same with two differences:
-
-- Need customize the ad unit kind
-- No need to set up `minSizePercentage`
-
-``` swift
-// 1. Create an MoPub's Interstitial Controller
-interstitialController = MPInterstitialAdController.init(forAdUnitId: MOPUB_AD_UNIT_ID)
-interstitialController.delegate = self
-
-// 2. Create an In-App Bidding Interstitial Ad Unit
-interstitialAdUnit = MediationInterstitialAdUnit(configID: CONFIG_ID,
- minSizePercentage: CGSize(width: 30, height: 30),
- mediationDelegate: MoPubMediationDelegate())
-interstitialAdUnit.adFormat = .video
-
-// 3. Run an Header Bidding auction on Prebid
-interstitialAdUnit.fetchDemand(with: interstitialController!) { [weak self] result in
-
- // 4. Load an Ad
- self?.interstitialController.loadAd()
-}
-// .....
-
-// 5. Show the ad
-if interstitialController.ready {
- interstitialController?.show(from: self)
-}
-```
-
-#### Step 1: Create Ad View
-
-Follow the [MoPub Instructions](https://developers.mopub.com/publishers/ios/interstitial/) and intgrate Interstital ad unit.
-
-#### Step 2: Create Ad Unit
-
-Create the `MediationInterstitialAdUnit` object with parameters:
-
-- `configID` - an ID of Stored Impression on the Prebid server
-- `mediationDelegate` - the object from the MoPubAdapters framework responsible for managing MoPub's ad objects.
-
-#### Step 3: Fetch Demand
-
-Run the `fetchDemand()` method which performs several actions:
-
-- Makes a bid request to Prebid
-- Sets up the targeting keywords to the MoPub's ad unit
-- Passes the winning bid to the MoPub's ad unit
-- Returns the result of bid request for future processing
-
-#### Step 4: Load the Ad
-
-When the bid request is completed, the responsibility of making the Ad Request is passed to the publisher. You have to invoke `loadAd()` on the MoPub's Ad View explicitly in the completion handler of the `fetchDemand()`.
-
-#### Step 5: Rendering
-
-If the Prebid bid wins on MoPub it will be rendered by `MoPubInterstitialAdapter`. You shouldn't do anything for this. Just make sure that your order has been set up correctly and an adapter is added to the project
-
-Pay attention that due to the expiration, the ad could become invalid with time. So it is always useful to check the availability with `interstitialController?.isReady` before displaying it.
-
-### Migration from the original API
-
-1. Replace the `InterstitialAdUnit` with `MediationInterstitialAdUnit`.
-5. Follow the instructions to integrate [Interstitial API](#interstitial-api).
-6. Setup the [MoPub Order](rendering-mopub-line-item-setup.html) for rendering. You should create a new order with **Network Line Items** instead of the original one.
-
-## Rewarded API
-
-Integration example:
-
-``` swift
-// 1. Create an In-App Bidding Interstitial Ad Unit
-rewardedAdUnit = MediationRewardedAdUnit(configID: CONFIG_ID)
-
-// 2. Run an Header Bidding auction on Prebid
-let bidInfoWrapper = MediationBidInfoWrapper()
-rewardedAdUnit.fetchDemand(with: bidInfoWrapper) { [weak self] result in
- guard let self = self else {
- return
- }
-
- // 3. Load an Ad
- MPRewardedVideo.setDelegate(self, forAdUnitId: self.MOPUB_AD_UNIT_ID)
- MPRewardedVideo.loadAd(withAdUnitID: self.MOPUB_AD_UNIT_ID,
- keywords: bidInfoWrapper.keywords as String?,
- userDataKeywords: nil,
- customerId: "testCustomerId",
- mediationSettings: [],
- localExtras: bidInfoWrapper.localExtras)
-}
-
-/// .......
-
-// 4. Try to Display an Ad
-if MPRewardedVideo.hasAdAvailable(forAdUnitID: MOPUB_AD_UNIT_ID) {
- let rewards = MPRewardedVideo.availableRewards(forAdUnitID: MOPUB_AD_UNIT_ID)
- guard let reward = rewards?.first as? MPRewardedVideoReward else {
- return
- }
-
- // 5. Present Ad
- MPRewardedVideo.presentAd(forAdUnitID: MOPUB_AD_UNIT_ID, from: self, with: reward, customData: nil)
-}
-```
-
-#### Step 1: Create an Rewarded Ad Unit
-
-Create the `MediationRewardedAdUnit` object with parameter:
-
-- `configID` - an ID of Stored Impression on the Prebid server
-
-#### Step 2: Fetch Demand
-
-Call the `fetchDemand()` method which does several things:
-
-- Makes a bid request to Prebid Server
-- Sets up the targeting keywords to auxiliary class `MediationBidInfoWrapper`
-- Returns the result of bid request for the future processing
-
-#### Step 3: Load the Ad
-
-When the bid request is completed, the responsibility of making the Ad Request is passed to the publisher. You have to invoke `loadAd()` on the MoPub's Ad View explicitly in the completion handler of the `fetchDemand()`.
-
-#### Step 5: Present the Rewarded Ad
-
-If the Prebid bid wins on MoPub it will be rendered by `MoPubRewardedVideoAdapter`. You shouldn't do anything for this. Just make sure that your order has been set up correctly and an adapter is added to the project
-
-### Migration from the original API
-
-1. Replace the `RewardedVideoAdUnit` with `MediationRewardedAdUnit`.
-5. Follow the instructions to integrate [Rewarded Video API](#rewarded-api).
-6. Setup the [MoPub Order](rendering-mopub-line-item-setup.html) for rendering. You should create a new order with **Network Line Items** instead of the original one.
\ No newline at end of file
diff --git a/prebid-mobile/modules/rendering/ios-sdk-integration-pb.md b/prebid-mobile/modules/rendering/ios-sdk-integration-pb.md
index f5cf98148a..dbed9cf9e1 100644
--- a/prebid-mobile/modules/rendering/ios-sdk-integration-pb.md
+++ b/prebid-mobile/modules/rendering/ios-sdk-integration-pb.md
@@ -1,13 +1,13 @@
---
layout: page_v2
-title: Pure In-App Bidding Integrations
+title: Custom or No mediation
description: Integration of Prebid SDK without Primary Ad Server SDK
sidebarType: 2
---
-# Pure In-App Bidding Integration
+# Custom Bidding Integration
## Table of Contents
@@ -18,7 +18,7 @@ sidebarType: 2
## Mobile API
-The Pure In-App Bidding integration is similar to the integration of regular Ad SDK with Prebid in the role of the Ad Server.
+The integration and usage of the Rendering API are similar to any other Ad SDK. It sends the bid requests to the Prebid Server and renders the winning bid.
![In-App Bidding with Prebid](/assets/images/prebid-mobile/modules/rendering/Prebid-In-App-Bidding-Overview-Pure-Prebid.png)
@@ -102,28 +102,17 @@ if interstitial.isReady {
```
-The way of displaying **Video Interstitial** is almost the same with two differences:
-
-- Need to customize the ad format
-- No need to set up `minSizePercentage`
+The **default** ad format for interstitial is **.display**. In order to make a `multiformat bid request`, set the respective values into the `adFormats` property.
``` swift
+// Make bid request for video ad
+adUnit?.adFormats = [.video]
-// 1. Create an Interstitial Ad Unit
-let interstitial = InterstitialRenderingAdUnit(configID: CONFIG_ID)
-
-interstitial.adFormat = .video
-interstitial.delegate = self
-
-// 2. Load an Ad
-interstitial.loadAd()
+// Make bid request for both video amd disply ads
+adUnit?.adFormats = [.video, .display]
-// .....
-
-// 3. Show An Ad
-if interstitial.isReady {
- interstitial.show(from: self)
-}
+// Make bid request for disply ad (default behaviour)
+adUnit?.adFormats = [.display]
```
diff --git a/prebid-mobile/modules/rendering/modules-rendering.md b/prebid-mobile/modules/rendering/modules-rendering.md
index 64be4be51c..c3bab7685a 100644
--- a/prebid-mobile/modules/rendering/modules-rendering.md
+++ b/prebid-mobile/modules/rendering/modules-rendering.md
@@ -7,18 +7,15 @@ sidebarType: 2
---
-# Prebid Mobile Rendering (Open Beta)
+# Prebid Mobile Rendering
Prebid Mobile has added a rendering module (currently in open beta) which provides an API for rendering display and video media types independently of the current core feature set and interfaces. The API enables Prebid Mobile to have full ownership of the Web view selected for rendering and will pass any associated ad markup to the controlled view. This new functionality enables publishers to have improved control of features such as Open Measurement, MRAID, SKAdNetwork. This same functionality is available for rendering video (VAST) creatives through an internal video player.
-{% capture warning_note %}
-This open beta release will contain a temporary API structure and is subject to change when a general audience release is made available.
-{% endcapture %}
-{% include /alerts/alert_important.html content=warning_note %}
+The **rendering API** is available on iOS and Android starting with the `1.13.0-beta1` version.
-The rendering API is available on iOS and Android starting with the `1.13.0-beta1` version.
+Starting with `1.14.0-beta1` Prebid mobile supports integration with **AdMob**.
-Starting with `1.14.0-beta1` Prebid mobile supports integration with AdMob.
+Starting with `2.0.0` Prebid mobile supports integration with **AppLovin MAX**.
## Benefits
@@ -45,12 +42,12 @@ This set of features are not supported in the current release but are designated
Rendering API supports two integration scenarios:
-* **Pure In-App Bidding** With in-app bidding, no Primay Ad Server is used. The module renders the winning bid immediately when it is available.
+* **Custom or No mediation** when no Primay Ad Server is used. The SDK renders the winning bid immediately when it is available.
* **Using a Primary Ad Server** Prebid SDK detects when a Prebid line item wins on the ad server and renders the cached bid in the owned Web view or Video view.
In both scenarios, Prebid SDK leverages Prebid Server for demand. Below are the processes for both In-App and Primary Ad Server modes:
-### Pure In-App Bidding
+### Custom In-App Bidding
![In-App Rendering](/assets/images/prebid-mobile/modules/rendering/Prebid-In-App-Bidding-Overview-Pure-Prebid.png)
@@ -77,7 +74,7 @@ In both scenarios, Prebid SDK leverages Prebid Server for demand. Below are the
Prebid Mobile rendering supports the following ad formats:
* Display Banner
-* Video Banner (for GAM, pure in-app bidding)
+* Video Banner
* Display Interstitial
* Video Interstitial
* Rewarded Video
@@ -91,13 +88,13 @@ Follow these steps to integrate the rendering API:
1. If integrating into an ad server, create line items specific for rendering (line items for rendering API are unique and do not coincide with the standard Prebid SDK line items):
* [GAM](rendering-gam-line-item-setup.html)
* [AdMob](rendering-admob-line-item-setup.html)
- * [MoPub](rendering-mopub-line-item-setup.html)
+ * [MAX](rendering-max-line-item-setup.html)
1. [Integrate Prebid SDK](android-sdk-integration.html) into your project.
1. Add prebid's ad units to your app respectively to the monetization scenario:
- * [Pure in-app Bidding](android-sdk-integration-pb.html) integration without primary ad server.
+ * [Custom in-app bidding](android-sdk-integration-pb.html) integration without primary ad server.
* In-app bidding using [Google Ad Manager (GAM)](android-sdk-integration-gam.html) as a primary ad server
* In-app bidding using [AdMob](android-sdk-integration-admob) as a primary ad server.
- * In-app bidding using [MoPub](android-sdk-integration-mopub.html) as a primary ad server.
+ * In-app bidding using [AppLovin MAX](android-sdk-integration-max.html) as a primary ad server.
1. Actualize the [integration and targeting](android-sdk-parameters.html) properties.
@@ -108,13 +105,13 @@ Follow these steps to integrate the rendering API:
1. If integrating into an ad server, create line items specific for rendering (line items are uniqe for the Rendering Module and do not cooicide with the standard Prebid SDK line items):
* [GAM](rendering-gam-line-item-setup.html)
* [AdMob](rendering-admob-line-item-setup.html)
- * [MoPub](rendering-mopub-line-item-setup.html)
+ * [MAX](rendering-max-line-item-setup.html)
1. [Integrate Prebid SDK](ios-sdk-integration.html).
1. Add prebid's ad units to your app respectively to the monetization scenario:
- * [Pure in-app bidding](ios-sdk-integration-pb.html) integration without a primary ad server.
+ * [Custom in-app bidding](ios-sdk-integration-pb.html) integration without a primary ad server.
* In-app bidding using [Google Ad Manager (GAM)](ios-sdk-integration-gam.html) as a primary ad server.
* In-app bidding using [AdMob](ios-sdk-integration-gam.html) as a primary ad server.
- * In-app bidding using [MoPub](ios-sdk-integration-mopub.html) as a primary ad server.
+ * In-app bidding using [AppLovin MAX](ios-sdk-integration-max.html) as a primary ad server.
1. Actualize the [integration and targeting](ios-sdk-parameters.html) properties.
## Additional refences
diff --git a/prebid-mobile/modules/rendering/rendering-max-line-item-setup.md b/prebid-mobile/modules/rendering/rendering-max-line-item-setup.md
new file mode 100644
index 0000000000..7b9780fa1d
--- /dev/null
+++ b/prebid-mobile/modules/rendering/rendering-max-line-item-setup.md
@@ -0,0 +1,51 @@
+---
+
+layout: page_v2
+title: Prebid Mobile Rendering Modules
+description: Prebid Mobile Rendering Modules architecture
+sidebarType: 2
+
+---
+
+# AppLovin MAX Setup
+
+## Custom Network Setup
+
+In your MAX account go to `Mediation` -> `Manage` -> `Networks` and click `Click here to add a Custom Network`. Then create an **SDK** custom network with the following adapter names:
+
+
+
+
+
+iOS adapter:
+```
+PrebidMAXMediationAdapter
+```
+
+Android Adapter:
+```
+com.applovin.mediation.adapters.PrebidMaxMediationAdapter
+```
+
+
+## Add Placements
+
+
+Now you have to add placements for Prebid Custom Network into the respective ad unit's waterfall.
+
+Create or choose an existing Ad Unit. Go the the `Custom Networks & Deals` section. Chose the Prebid's custom network that you created at the previous step. Change the status to active and add placements following the [price granularity](https://docs.prebid.org/prebid-mobile/adops-price-granularity.html#prebid-mobile-price-granularity) guide to determine how many entries you need.
+
+
+
+
+Make sure that the `Custom Parameters` field contain expecting targetting keywords of the winning bid:
+
+```
+{"hb_pb":"0.10"}
+```
+
+{: .alert.alert-warning :}
+The adapter will render the winning bid only if the bid's targeting keywords contain `all` keywords from the `Custom Parameters` field.
+
+
+
diff --git a/prebid-mobile/modules/rendering/rendering-mopub-line-item-setup.md b/prebid-mobile/modules/rendering/rendering-mopub-line-item-setup.md
deleted file mode 100644
index cc4f376fc8..0000000000
--- a/prebid-mobile/modules/rendering/rendering-mopub-line-item-setup.md
+++ /dev/null
@@ -1,105 +0,0 @@
----
-
-layout: page_v2
-title: Prebid Mobile Rendering Modules
-description: Prebid Mobile Rendering Modules architecture
-sidebarType: 2
-
----
-
-# MoPub Setup
-
-## Order Setup
-
-### Step 1: Create New Order
-
-
-
-### Step 2: Create Line Item
-
-#### Line Item: Display, Video
-
-To integrate Prebid demand you have to create a Custom Ad Network Line Items with a specific Targeting keyword.
-
-- **Line Item Name**: hb_pb 0.10
-- **Type & Priority**: Network Line Item
-- **Network**: Custom SDK network
-- **Custom event class**:
- - For Banner API:
- - iOS: **PrebidBannerAdapter**
- - Android: **com.mopub.mobileads.PrebidBannerAdapter**
- - For Interstitial API:
- - iOS: **PrebidInterstitialAdapter**
- - Android: **com.mopub.mobileads.PrebidInterstitialAdapter**
- - For Rewarded API:
- - iOS: **PrebidRewardedVideoAdapter**
- - Android: **com.mopub.mobileads.PrebidRewardedVideoAdapter**
- - For Native API:
- - iOS: **PrebidNativeAdapter**
- - Android: **com.mopub.nativeads.PrebidNativeAdapter**
-- **Custom event data**: {}
-
-
-
-> Even though a Line Item can be named in any way, we strongly recommend to use the price or targeting keyword in the name. It will help to navigate through hundreds of them.
-
-
-
-#### Ad Unit Targeting
-
-
-
-#### Audience Targeting
-
-The **Keyword targeting** property should contain a special keyword with the price of winning bid.
-
-
-
-
diff --git a/prebid-mobile/prebid-mobile-pbs.md b/prebid-mobile/prebid-mobile-pbs.md
index 9a8fb582e3..c80971c8cf 100644
--- a/prebid-mobile/prebid-mobile-pbs.md
+++ b/prebid-mobile/prebid-mobile-pbs.md
@@ -80,7 +80,6 @@ After you have the SDK installed, register ad units with the Prebid Mobile frame
Ad ops users configure the primary ad server with Prebid Mobile line items targeted to key/values.
- [Set Up Line Items for Google Ad Manager]({{site.github.url}}/prebid-mobile/adops-line-item-setup-dfp.html)
-- [Set Up Line Items for MoPub]({{site.github.url}}/prebid-mobile/adops-line-item-setup-mopub.html)
## Additional Information