Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mobile refactoring: adops focus #5507

Merged
merged 34 commits into from
Oct 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
11d483b
initial control
bretg Jul 16, 2024
073cf47
adops pages, outstream
bretg Jul 22, 2024
37c5f1d
wordsmithing, linting
bretg Jul 23, 2024
2c3e44b
lint
bretg Jul 23, 2024
b5b66a7
lint
bretg Jul 23, 2024
ab269be
prebid-rendered approach
bretg Jul 24, 2024
0e2a448
renamed
bretg Jul 24, 2024
9f30c7c
lint
bretg Jul 24, 2024
3dcf800
renaming
bretg Jul 25, 2024
50a9056
custom integration
bretg Aug 15, 2024
9cf273c
mediation platforms
bretg Aug 21, 2024
09c4e9f
lint
bretg Aug 21, 2024
d37cd4b
lint
bretg Aug 21, 2024
1d064a2
typos, wordsmithing
bretg Aug 27, 2024
b5312c6
wordsmithing
bretg Aug 29, 2024
f2f4eb9
Update _includes/mobile/intro-bidding-only.md
bretg Sep 12, 2024
a3bd653
Update _includes/mobile/intro-bidding-only.md
bretg Sep 12, 2024
a28bedb
review updates
bretg Sep 12, 2024
131222b
review update
bretg Sep 12, 2024
986a522
review update
bretg Sep 12, 2024
759d583
review update
bretg Sep 12, 2024
e56af8a
Update prebid-mobile/modules/rendering/android-sdk-integration-gam.md
bretg Sep 12, 2024
718d6d0
review update
bretg Sep 23, 2024
935469b
review update
bretg Sep 23, 2024
4bc7a3a
review update
bretg Sep 24, 2024
a8feea3
Update step-by-step.md
bretg Sep 25, 2024
c5efb73
typo
bretg Sep 25, 2024
2d419cf
typo
bretg Sep 25, 2024
14f4cc2
Update intro-custom.md
bretg Sep 27, 2024
86aa7d9
Update ios-sdk-integration-admob.md
bretg Sep 27, 2024
5c3ea30
updated diagrams
bretg Sep 28, 2024
6661ab8
refine custom
bretg Sep 28, 2024
debf2a5
Merge branch 'master' into mobile-rendering
bretg Oct 10, 2024
389b36e
tweaks
bretg Oct 10, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 21 additions & 13 deletions _data/sidebar.yml
Original file line number Diff line number Diff line change
Expand Up @@ -727,16 +727,16 @@
subgroup: 2

- sbSecId: 2
title: GAM Original Integration
title: GAM Bidding-Only Integration
link: /prebid-mobile/pbm-api/ios/ios-sdk-integration-gam-original-api.html
isHeader: 0
isSectionHeader: 0
sectionTitle:
subgroup: 2

- sbSecId: 2
title: Custom or No mediation
link: /prebid-mobile/modules/rendering/ios-sdk-integration-pb.html
title: GAM Prebid-Rendered Integration
link: /prebid-mobile/modules/rendering/ios-sdk-integration-gam.html
isHeader: 0
isSectionHeader: 0
sectionTitle:
Expand All @@ -759,8 +759,8 @@
subgroup: 2

- sbSecId: 2
title: GAM Rendering Integration
link: /prebid-mobile/modules/rendering/ios-sdk-integration-gam.html
title: Custom Integration
link: /prebid-mobile/modules/rendering/ios-sdk-integration-pb.html
isHeader: 0
isSectionHeader: 0
sectionTitle:
Expand Down Expand Up @@ -809,23 +809,23 @@

- sbSecId: 2
title: Global Parameters
link: /prebid-mobile/pbm-api/android/pbm-targeting-params-android.html
link: /prebid-mobile/pbm-api/android/pbm-targeting-android.html
isHeader: 0
isSectionHeader: 0
sectionTitle:
subgroup: 3

- sbSecId: 2
title: GAM Original Integration
title: GAM Bidding-Only Integration
link: /prebid-mobile/pbm-api/android/android-sdk-integration-gam-original-api.html
isHeader: 0
isSectionHeader: 0
sectionTitle:
subgroup: 3

- sbSecId: 2
title: Custom or No mediation
link: /prebid-mobile/modules/rendering/android-sdk-integration-pb.html
title: GAM Prebid-Rendered Integration
link: /prebid-mobile/modules/rendering/android-sdk-integration-gam.html
isHeader: 0
isSectionHeader: 0
sectionTitle:
Expand All @@ -848,8 +848,8 @@
subgroup: 3

- sbSecId: 2
title: GAM Rendering Integration
link: /prebid-mobile/modules/rendering/android-sdk-integration-gam.html
title: Custom Integration
link: /prebid-mobile/modules/rendering/android-sdk-integration-pb.html
isHeader: 0
isSectionHeader: 0
sectionTitle:
Expand Down Expand Up @@ -974,6 +974,14 @@
sectionTitle:
subgroup: 1

- sbSecId: 3
title: 'Prebid Mobile AdOps'
link: /adops/mobile-adops.html
isHeader: 0
isSectionHeader: 0
sectionTitle:
subgroup: 1

- sbSecId: 3
title: "Ad Ops Information"
link:
Expand Down Expand Up @@ -1042,7 +1050,7 @@
subgroup: 2

- sbSecId: 3
title: 'Creative Setup: Banner/Outstream/AMP'
title: 'Creative Setup: Banner/In-Renderer/AMP'
link: /adops/gam-creative-banner-sbs.html
isHeader: 0
isSectionHeader: 0
Expand All @@ -1066,7 +1074,7 @@
subgroup: 2

- sbSecId: 3
title: "Setting up Order for Mobile Rendering API"
title: "Mobile: Setting up GAM for Prebid-Rendered"
link: /adops/mobile-rendering-gam-line-item-setup.html
isHeader: 0
isSectionHeader: 0
Expand Down
35 changes: 35 additions & 0 deletions _includes/mobile/adunit-config-android.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
Each ad unit in the Original API is a subclass of the `AdUnit` class, which provides the following properties and methods for additional configuration.

### Auto Refresh

#### setAutoRefreshPeriodMillis
{:.no_toc}

If set on a given Prebid Mobile ad unit, the `fetchDemand` function will be called every `periodMillis` until `stopAutoRefresh` is called. Each call to `fetchDemand` will invoke the `onComplete` function. This refresh only pertains to Prebid Mobile and not to any ad server refresh processes. It is suggested that the adServers refresh be turned off.

**Parameters**

- `periodMillis`: Integer defining the refresh time in milliseconds.

#### startAutoRefresh
{:.no_toc}

Starts the auto-refresh behavior for a given Prebid Mobile ad unit.

#### stopAutoRefresh
{:.no_toc}

Halts the auto-refresh behavior for a given Prebid Mobile ad unit. If no auto-refresh behavior has been set, `stopAutoRefresh` will be ignored.

### GPID

(requires SDK v2.1.6)

The Global Placement ID (GPID) is a key that uniquely identifies a specific instance of an adunit. Some bidders require this value. An important scenario is "infinite scroll" -- if your app creates instances
of an adunit dynamically as the user scrolls through content, the the GPID must be different for each by appending some kind of sequence or ID. e.g. "/newsfeed#7"

Using the following method, you can set the impression-level [GPID](https://docs.prebid.org/features/pbAdSlot.html#the-gpid) value to the bid request:

``` kotlin
adUnit?.gpid = "/36117602/hnp-sfgate.com/Homepage/AP300"
```
31 changes: 31 additions & 0 deletions _includes/mobile/adunit-config-ios.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
Each ad unit in the original integration method is a subclass of the `AdUnit` class, which provides the following properties and methods for the additional configuration.

### Autorefresh

#### setAutoRefreshMillis
{:.no_toc}

If set on a given banner adunit, the `fetchDemand` function will be called every `periodMillis` until `stopAutoRefresh` is called. Each call to `fetchDemand` will invoke the `onComplete` function. This refresh only pertains to Prebid Mobile and not to any ad server refresh processes. It is suggested that the adServes refresh be turned off.

#### stopAutoRefresh
{:.no_toc}

Halts the auto-refresh behavior for a given Prebid Mobile ad unit. If no auto-refresh behavior has been set, `stopAutoRefresh` will be ignored.

#### resumeAutoRefresh
{:.no_toc}

Resumes a stopped autorefresh for the ad unit with the previously-defined autorefresh value.

### GPID

(requires SDK v2.1.6)

The Global Placement ID (GPID) is a key that uniquely identifies a specific instance of an adunit. Some bidders require this value. An important scenario is "infinite scroll" -- if your app creates instances
of an adunit dynamically as the user scrolls through content, the the GPID must be different for each by appending some kind of sequence or ID. e.g. "/newsfeed#7"

Using the following method, you can set the impression-level [GPID](https://docs.prebid.org/features/pbAdSlot.html#the-gpid) value to the bid request:

``` swift
adUnit.setGPID("/36117602/hnp-sfgate.com/Homepage/AP300")
```
23 changes: 23 additions & 0 deletions _includes/mobile/banner-params.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
Using the `BannerParameters` object you can customize the bid request for banner ads.

{: .alert.alert-warning :}
Starting from PrebidMobile `2.1.0` the `BannerBaseAdUnit.Parameters` class is deprecated. Use `BannerParameters` instead.

#### adSizes

Defines the OpenRTB banner.formats array.

#### interstitialMinWidthPerc and interstitialMinHeightPerc
{:.no_toc}

For interstitials only, these define which sizes Prebid Server will choose to send to bidders. See [Prebid Server interstitial support](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#interstitial-support). If this option is used, you'll need to set the size to 1x1.

#### api
{:.no_toc}

The `api` property is dedicated to adding values for API Frameworks to bid response according to the [OpenRTB 2.6](https://iabtechlab.com/wp-content/uploads/2022/04/OpenRTB-2-6_FINAL.pdf) spec. The supported values for GMA SDK integration are:

- `3` or `Signals.Api.MRAID_1` : MRAID-1 support signal
- `5` or `Signals.Api.MRAID_2` : MRAID-2 support signal
- `6` or `Signals.Api.MRAID_3` : MRAID-3 support signal
- `7` or `Signals.Api.OMID_1` : signals OMSDK support
60 changes: 60 additions & 0 deletions _includes/mobile/intro-admob.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
## Overview

Here's how to integrate the Prebid SDK with [Google AdMob](https://admob.google.com/home/).

### Prerequisites

These are the required components:

- **AdMob Account** - This account allows you to manage and serve ads within your mobile app. Within this account you'll need to configure your inventory for serving ads within your app.
- **GMA SDK** - This SDK integration is necessary to communicate with the AdMob service.
- **Prebid SDK** - You will need the latest version of the Prebid Mobile SDK for either [Android](/prebid-mobile/pbm-api/android/code-integration-android.html) or [iOS](/prebid-mobile/pbm-api/ios/code-integration-ios.html).
- **Prebid Server** - You will need a cluster of servers running [Prebid Server](/prebid-server/use-cases/pbs-sdk.html). You can set up your own Prebid Server or work with a [Prebid Server managed service](https://prebid.org/managed-services/). Prebid Server provides you with the following:
- Configuration storage - rather than hardcoding all the details of your current business arrangements in the app, Prebid Server stores which bidders you're currently working with, their inventory details, and other settings that can be changed without updating your app.
- Server-side auction - the server will make the connections to multiple auction bidding partners so the app doesn't have to.
- Privacy regulation tools - the server can help your legal team meet different regulatory needs in different jurisdictions by configuring various protocols and anonyimization activities.

## How it Works

Here's how the ad bidding-auction-rendering process works in this integration scenario.

![Rendering with AdMob](/assets/images/prebid-mobile/modules/rendering/prebid-in-app-bidding-overview-admob.png)

**Steps 1-2** Prebid SDK makes a bid request. Prebid Server runs an auction and returns the winning bid.

**Step 3** GMA SDK makes an ad request. AdMob returns the mediation chain with respective ad sources.

**Step 4** For each Prebid ad source, the GMA SDK sequentially instantiates a Prebid adapter function.

**Step 5** The adapter function verifies the targeting keywords of the winning bid and the server properties of the given ad source. If they match the adapter will render the winning bid. Otherwise, it will immediately fail with a "no ad" error and the next ad source will instantiate the same adapter but for another set of server params.

## Major Integration Steps

Assuming your app is already integrated with the [GMA SDK](https://developers.google.com/admob/android/quick-start), the technical implementation of Prebid mobile into your app will involve these major steps:

1. [Initialize the Prebid SDK](/prebid-mobile/pbm-api/{{include.platform}}/code-integration-{{include.platform}}.html) - create a connection to your Prebid Server.
2. [Set Global Parameters](/prebid-mobile/pbm-api/{{include.platform}}/pbm-targeting-{{include.platform}}.html) - let bidders know important data about the page, privacy consent, and other settings.
3. Work with your Prebid Server team to create the adunit configIds that will be used in the app.
4. Set up AdMob Mediation Groups and Custom Events. See [AdOps guidance](#ad-operations-guidance)
5. Link Prebid SDK AdUnit code to your app's AdUnits for the adunits that your business team wants to connect to Prebid with the configIds generated in Step 3. See the [adunit-specific instructions](#adunit-specific-instructions) below.

## Ad Operations Guidance

The Ad Operations team will need to create a [Mediation Group in AdMob](/adops/mobile-rendering-admob-line-item-setup.html).

### Rendering and Tracking

This information may be useful when comparing data across various reporting systems:

{: .table .table-bordered .table-striped }
| Scenario | Tracked? |
| --- | --- |
| Fires Prebid win event | yes |
| Fires Prebid imp event | no |
| Fires OpenRTB burl | no (1) |
| Fires OpenRTB nurl | no (1) |
| Fires OpenMeasurement events | yes |

Notes:

1. OpenRTB burl and nurl will be utilized in a future release.
60 changes: 60 additions & 0 deletions _includes/mobile/intro-applovin.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
## Overview

Here's how to integrate the Prebid SDK with [AppLovin MAX](https://developers.applovin.com/en).

### Prerequisites

These are the required components:

- **AppLovin Account** - This account allows you to manage and serve ads within your mobile app. Within this account you'll need to configure your inventory for serving ads within your app.
- **AppLovin MAX SDK** - This SDK integration is necessary to communicate with the AppLovin service.
- **Prebid SDK** - You will need the latest version of the Prebid Mobile SDK for either [Android](/prebid-mobile/pbm-api/android/code-integration-android.html) or [iOS](/prebid-mobile/pbm-api/ios/code-integration-ios.html).
- **Prebid Server** - You will need a cluster of servers running [Prebid Server](/prebid-server/use-cases/pbs-sdk.html). You can set up your own Prebid Server or work with a [Prebid Server managed service](https://prebid.org/managed-services/). Prebid Server provides you with the following:
- Configuration storage - rather than hardcoding all the details of your current business arrangements in the app, Prebid Server stores which bidders you're currently working with, their inventory details, and other settings that can be changed without updating your app.
- Server-side auction - the server will make the connections to multiple auction bidding partners so the app doesn't have to.
- Privacy regulation tools - the server can help your legal team meet different regulatory needs in different jurisdictions by configuring various protocols and anonyimization activities.

## How it Works

Here's how the ad bidding-auction-rendering process works in this integration scenario.

![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 placement, the MAX SDK sequentially instantiates one of Prebid's adapter functions.

**Step 5** The adapter function 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.

## Major Integration Steps

Assuming your app is already integrated with the [AppLovin MAX SDK](https://dash.applovin.com/documentation/mediation/android/getting-started/integration), the technical implementation of Prebid mobile into your app will involve these major steps:

1. [Initialize the Prebid SDK](/prebid-mobile/pbm-api/{{include.platform}}/code-integration-{{include.platform}}.html) - create a connection to your Prebid Server.
2. [Set Global Parameters](/prebid-mobile/pbm-api/{{include.platform}}/pbm-targeting-{{include.platform}}.html) - let bidders know important data about the page, privacy consent, and other settings.
3. Work with your Prebid Server team to create the adunit configIds that will be used in the app.
4. Set up ovin custom network and placements. See [AdOps guidance](#ad-operations-guidance)
5. Link Prebid SDK AdUnit code to your app's AdUnits for the adunits that your business team wants to connect to Prebid with the configIds generated in Step 3. See the [adunit-specific instructions](#adunit-specific-instructions) below.

## Ad Operations Guidance

The Ad Operations team will need to create a [Custom Network in AppLovin](/adops/mobile-rendering-max-line-item-setup.html).

### Rendering and Tracking

This information may be useful when comparing data across various reporting systems:

{: .table .table-bordered .table-striped }
| Scenario | Tracked? |
| --- | --- |
| Fires Prebid win event | yes |
| Fires Prebid imp event | no |
| Fires OpenRTB burl | no (1) |
| Fires OpenRTB nurl | no (1) |
| Fires OpenMeasurement events | yes |

Notes:

1. OpenRTB burl and nurl will be utilized in a future release.
Loading