diff --git a/_data/sidebar.yml b/_data/sidebar.yml index 98a4e60a74..e84c688722 100644 --- a/_data/sidebar.yml +++ b/_data/sidebar.yml @@ -675,6 +675,14 @@ sectionTitle: subgroup: 0 +- sbSecId: 2 + title: Prebid Mobile 3.0 + link: /prebid-mobile/updates-3.0/sdk-key-features.html + isHeader: 0 + isSectionHeader: 0 + sectionTitle: + subgroup: 0 + - sbSecId: 2 title: Prebid AMP link: /dev-docs/show-prebid-ads-on-amp-pages.html @@ -831,6 +839,14 @@ sectionTitle: subgroup: 2 +- sbSecId: 2 + title: Prebid Mobile 3.0 API Changes + link: /prebid-mobile/updates-3.0/ios/api-changes.html + isHeader: 0 + isSectionHeader: 0 + sectionTitle: + subgroup: 2 + - sbSecId: 2 title: API Reference link: /prebid-mobile-ios/index.html @@ -928,6 +944,14 @@ sectionTitle: subgroup: 3 +- sbSecId: 2 + title: Prebid Mobile 3.0 API Changes + link: /prebid-mobile/updates-3.0/android/api-changes.html + isHeader: 0 + isSectionHeader: 0 + sectionTitle: + subgroup: 3 + - sbSecId: 2 title: API Reference link: /prebid-mobile-android/index.html diff --git a/_includes/mobile/adunit-config-android.md b/_includes/mobile/adunit-config-android.md index aedd88e520..f469856135 100644 --- a/_includes/mobile/adunit-config-android.md +++ b/_includes/mobile/adunit-config-android.md @@ -30,12 +30,24 @@ adUnit.setImpOrtbConfig("") #### setAutoRefreshPeriodMillis {:.no_toc} +{: .alert.alert-warning :} +Starting from PrebidMobile `3.0.0` the `setAutoRefreshPeriodMillis` method is removed. Use the `setAutoRefreshInterval` method instead. + 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. +#### setAutoRefreshInterval +{:.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** + +- `seconds`: Integer defining the refresh time in seconds. + #### startAutoRefresh {:.no_toc} diff --git a/_includes/mobile/video-params.md b/_includes/mobile/video-params.md index 6f5b646d3b..d5f20a67aa 100644 --- a/_includes/mobile/video-params.md +++ b/_includes/mobile/video-params.md @@ -17,6 +17,9 @@ The [OpenRTB 2.6](https://iabtechlab.com/wp-content/uploads/2022/04/OpenRTB-2-6_ Notes: - `PrebidAdUnit`, `VideoInterstitialAdUnit` and `RewardedVideoAdUnit` will default to placement=5 if no placement value is supplied. +{: .alert.alert-warning :} +Starting from PrebidMobile `3.0.0` the class `VideoInterstitialAdUnit` is removed. + #### plcmnt {:.no_toc} @@ -30,6 +33,9 @@ The [OpenRTB v2.6-202303](https://github.com/InteractiveAdvertisingBureau/AdCOM/ Notes: - `PrebidAdUnit`, `VideoInterstitialAdUnit` and `RewardedVideoAdUnit` will default to plcmnt=3 if no placement value is supplied. +{: .alert.alert-warning :} +Starting from PrebidMobile `3.0.0` the class `VideoInterstitialAdUnit` is removed. + #### api {:.no_toc} diff --git a/faq/prebid-mobile-faq.md b/faq/prebid-mobile-faq.md index 011d3e288e..208ebbce10 100644 --- a/faq/prebid-mobile-faq.md +++ b/faq/prebid-mobile-faq.md @@ -165,7 +165,8 @@ However, here is the list of items that the app developer can add to the applica - `NSPrivacyTracking` - true. Because Prebid SDK collects IDFA. - `NSPrivacyTrackingDomains` - the tracking domain for the PBS. -Pay attention - if `NSPrivacyTracking` is true, the tracking domain is provided, and the user doesn't allow the app to track him or her, iOS will block the bid requests. Prebid SDK doesn't support tracking and non-tracking endpoints yet. Follow the [issue](https://github.com/prebid/prebid-mobile-ios/issues/954) for the details. +Pay attention - if `NSPrivacyTracking` is true, the tracking domain is provided, and the user doesn't allow the app to track him or her, iOS will block the bid requests. +Prebid SDK supports tracking and non-tracking endpoints. See [SDK initialization](/prebid-mobile/pbm-api/ios/code-integration-ios.html#handling-tracking-domains) for more details details. - `NSPrivacyCollectedDataTypes` array should contain the following `NSPrivacyCollectedDataType` items: `NSPrivacyCollectedDataTypePreciseLocation`, `NSPrivacyCollectedDataTypeCoarseLocation`,`NSPrivacyCollectedDataTypeDeviceID`, `NSPrivacyCollectedDataTypeProductInteraction`, `NSPrivacyCollectedDataTypeAdvertisingData`. diff --git a/prebid-mobile/modules/rendering/android-sdk-integration-admob.md b/prebid-mobile/modules/rendering/android-sdk-integration-admob.md index b5f360f20e..a4e5c75ba4 100644 --- a/prebid-mobile/modules/rendering/android-sdk-integration-admob.md +++ b/prebid-mobile/modules/rendering/android-sdk-integration-admob.md @@ -160,7 +160,7 @@ The `AdMobInterstitialMediationUtils` is a helper class, which performs certain 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. -The **default** ad format for interstitial is **DISPLAY**. In order to make a `multiformat bid request`, set the respective values into the `adUnitFormats` parameter. +In order to make a `multiformat bid request`, set the respective values into the `adUnitFormats` parameter. ```kotlin adUnit = MediationInterstitialAdUnit( @@ -338,17 +338,13 @@ private fun configureNativeAdUnit(nativeAdUnit: NativeAdUnit) { title.isRequired = true nativeAdUnit.addAsset(title) - val icon = NativeImageAsset() + val icon = NativeImageAsset(20, 20, 20, 20) icon.imageType = NativeImageAsset.IMAGE_TYPE.ICON - icon.wMin = 20 - icon.hMin = 20 icon.isRequired = true nativeAdUnit.addAsset(icon) - val image = NativeImageAsset() + val image = NativeImageAsset(200, 200, 200, 200) image.imageType = NativeImageAsset.IMAGE_TYPE.MAIN - image.hMin = 200 - image.wMin = 200 image.isRequired = true nativeAdUnit.addAsset(image) diff --git a/prebid-mobile/modules/rendering/android-sdk-integration-gam.md b/prebid-mobile/modules/rendering/android-sdk-integration-gam.md index 72600a491d..b676bc9725 100644 --- a/prebid-mobile/modules/rendering/android-sdk-integration-gam.md +++ b/prebid-mobile/modules/rendering/android-sdk-integration-gam.md @@ -151,7 +151,7 @@ Pay attention that the `loadAd()` should be called on the main thread. {% endcapture %} {% include /alerts/alert_warning.html content=warning_note %} -The **default** ad format for an interstitial ad is **DISPLAY**. In order to make a `multiformat bid request`, set the respective values into the `adUnitFormats` parameter. +In order to make a `multiformat bid request`, set the respective values into the `adUnitFormats` parameter. ```kotlin interstitialAdUnit = InterstitialAdUnit( diff --git a/prebid-mobile/modules/rendering/android-sdk-integration-max.md b/prebid-mobile/modules/rendering/android-sdk-integration-max.md index a8fa703109..c9336a85b6 100644 --- a/prebid-mobile/modules/rendering/android-sdk-integration-max.md +++ b/prebid-mobile/modules/rendering/android-sdk-integration-max.md @@ -120,7 +120,7 @@ adUnit?.fetchDemand { ``` -The **default** ad format for interstitial is **DISPLAY**. In order to make a `multiformat bid request`, set the respective values into the `adUnitFormats` parameter. +In order to make a `multiformat bid request`, set the respective values into the `adUnitFormats` parameter. ```kotlin adUnit = MediationInterstitialAdUnit( diff --git a/prebid-mobile/modules/rendering/android-sdk-integration-pb.md b/prebid-mobile/modules/rendering/android-sdk-integration-pb.md index 9d4ac0ca65..e5764f6952 100644 --- a/prebid-mobile/modules/rendering/android-sdk-integration-pb.md +++ b/prebid-mobile/modules/rendering/android-sdk-integration-pb.md @@ -28,7 +28,7 @@ While the default ad server for Prebid's Mobile SDK is GAM, it can be expanded t In this mode, the developer is responsible for the following actions: -- Call `fetchDemand()` with extended targetingDict callback +- Call `fetchDemand()` with extended targetingDict callback (The method has been removed in the PrebidMobile `3.0.0`. Use the `fetchDemand()` with extended BidInfo callback instead) - Retrieve targeting keys from the extended fetchDemand function - Convert targeting keys into the format for your ad server - Pass converted keys to your ad server @@ -37,9 +37,9 @@ In this mode, the developer is responsible for the following actions: This approach is available for the following ad formats: - Display Banner via `BannerAdUnit` -- Video Banner and Instream Video via `VideoAdUnit` +- Video Banner and Instream Video via `VideoAdUnit` (The class has been removed in the PrebidMobile `3.0.0`. Use the `InStreamVideoAdUnit` instead) - Display Interstitial via `InterstitialAdUnit` -- Video Interstitial via `VideoInterstitialAdUnit` +- Video Interstitial via `VideoInterstitialAdUnit` (The class has been removed in the PrebidMobile `3.0.0`. Use the `InterstitialAdUnit` with video ad format instead) - Rewarded Video via `RewardedVideoAdUnit` - Native Styles via `NativeRequest` @@ -155,7 +155,7 @@ Pay attention that the `loadAd()` should be called on the main thread. {% endcapture %} {% include /alerts/alert_warning.html content=warning_note %} -The **default** ad format for interstitial is **DISPLAY**. In order to make a `multiformat bid request`, set the respective values into the `adUnitFormats` parameter. +In order to make a `multiformat bid request`, set the respective values into the `adUnitFormats` parameter. ``` kotlin interstitialAdUnit = InterstitialAdUnit( diff --git a/prebid-mobile/modules/rendering/ios-sdk-integration-pb.md b/prebid-mobile/modules/rendering/ios-sdk-integration-pb.md index fb6b7e5e55..84551144a7 100644 --- a/prebid-mobile/modules/rendering/ios-sdk-integration-pb.md +++ b/prebid-mobile/modules/rendering/ios-sdk-integration-pb.md @@ -37,9 +37,9 @@ In this mode, the developer is responsible for the following actions: This approach is available for the following ad formats: - Display Banner via `BannerAdUnit` -- Video Banner and Instream Video via `VideoAdUnit` +- Video Banner and Instream Video via `VideoAdUnit` (The class has been removed in the PrebidMobile `3.0.0`. Use the `InStreamVideoAdUnit` instead) - Display Interstitial via `InterstitialAdUnit` -- Video Interstitial via `VideoInterstitialAdUnit` +- Video Interstitial via `VideoInterstitialAdUnit` (The class has been removed in the PrebidMobile `3.0.0`. Use the `InterstitialAdUnit` with video ad format instead) - Rewarded Video via `RewardedVideoAdUnit` - Native Styles via `NativeRequest` - Multiformat ad unit via `PrebidAdUnit` diff --git a/prebid-mobile/pbm-api/android/code-integration-android.md b/prebid-mobile/pbm-api/android/code-integration-android.md index 4791cf1ac5..d186b90dab 100644 --- a/prebid-mobile/pbm-api/android/code-integration-android.md +++ b/prebid-mobile/pbm-api/android/code-integration-android.md @@ -64,7 +64,7 @@ If you see errors while building the Prebid Mobile SDK or Demo Applications, mak ## Add the Prebid SDK -### Point to a Prebid Server +### Prebid Server Account ID {% capture warning_note %} All integration examples for Android are written in `Kotlin`. @@ -74,14 +74,24 @@ The corresponding Java code can be found in the [Demo Java](https://github.com/p {% endcapture %} {% include /alerts/alert_warning.html content=warning_note %} -Once you have a [Prebid Server](/prebid-mobile/prebid-mobile-getting-started.html), you will add the 'account' info to Prebid Mobile. For example, if you're using the AppNexus Prebid Server: +Once you have a [Prebid Server](/prebid-mobile/prebid-mobile-getting-started.html), you will add the 'account' info to Prebid Mobile. ```kotlin PrebidMobile.setPrebidServerAccountId(YOUR_ACCOUNT_ID) +``` + +### Point to a Prebid Server + +{: .alert.alert-warning :} +Starting from PrebidMobile `3.0.0` the setPrebidServerHost() method and the `Host.APPNEXUS` and `Host.RUBICON` enums have been removed. Please check the server URL in [API changes](/prebid-mobile/updates-3.0/android/api-changes#host) and use `PrebidMobile.initializeSdk` (below) to set the Prebid Server URL. + +In SDK 2.5 and before, if you're using the AppNexus Prebid Server you would do this: + +```kotlin PrebidMobile.setPrebidServerHost(Host.APPNEXUS) ``` -If you have opted to host your own Prebid Server solution you will need to store the url to the server in your app. Make sure that your URL points to the [/openrtb2/auction](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html) endpoint. +In SDK 2.5 and before, if you have opted to host your own Prebid Server solution you will need to store the url to the server in your app. Make sure that your URL points to the [/openrtb2/auction](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html) endpoint. ```kotlin PrebidMobile.setPrebidServerHost(Host.createCustomHost("https://prebidserver.example.com/openrtb2/auction")) @@ -96,15 +106,19 @@ If you want to define a different Account Settings ID as determined in conjuncti your Prebid Server team, use the [arbitrary OpenRTB](/prebid-mobile/pbm-api/android/pbm-targeting-android.html#arbitrary-openrtb) method like this: ```kotlin -adUnitConfiguration?.ortbConfig = "{\"ext\":{\"prebid\":{\"storedrequest\": {\"id\":\"account-settings-id\"}}}}" +TargetingParams.setGlobalOrtbConfig("{\"ext\":{\"prebid\":{\"storedrequest\": {\"id\":\"account-settings-id\"}}}})" ``` ### Initialize SDK -Once you set the account ID and the Prebid Server host, you should initialize the Prebid SDK. Use the following initialization for Prebid SDK: +Once you set the account ID, you should initialize the Prebid SDK. + +In SDK 3.0 and later, you need to enter a URL to your Prebid Server's auction endpoint in your app. Get this URL from your Prebid Server provider. e.g. `https://prebid-server.example.com/openrtb2/auction`. + +Use the following initialization for Prebid SDK: ```kotlin -PrebidMobile.initializeSdk(applicationContext) { status -> +PrebidMobile.initializeSdk(applicationContext, PREBID_SERVER_URL) { status -> if (status == InitializationStatus.SUCCEEDED) { Log.d(TAG, "SDK initialized successfully!") } else if (status == InitializationStatus.SERVER_STATUS_WARNING) { @@ -121,7 +135,7 @@ Pay attention that SDK should be initialized on the main thread. {% endcapture %} {% include /alerts/alert_warning.html content=warning_note %} -During the initialization, SDK creates internal classes and performs the health check request to the [/status](https://docs.prebid.org/prebid-server/endpoints/pbs-endpoint-status.html) endpoint. If you use a custom PBS host you should provide a custom status endpoint as well: +During the initialization, SDK creates internal classes and performs the health check request to the [/status](/prebid-server/endpoints/pbs-endpoint-status.html) endpoint. If your Prebid Server provider has a non-standard path (anything other than `/status`), you should provide a the alternate status endpoint: ```kotlin PrebidMobile.setCustomStatusEndpoint(PREBID_SERVER_STATUS_ENDPOINT) @@ -223,6 +237,9 @@ var pbsAccountId = PrebidMobile.getPrebidServerAccountId() ### Host {:.no_toc} +{: .alert.alert-warning :} +Starting from PrebidMobile `3.0.0` the `Host` class is removed. Use the `PrebidMobile.initializeSdk` method to provide the your Prebid Server host instead. + Object containing configuration for your Prebid Server host with which the Prebid SDK will communicate. Choose from the system-defined Prebid Server hosts or define your own custom Prebid Server host. ```kotlin diff --git a/prebid-mobile/pbm-api/android/pbm-targeting-android.md b/prebid-mobile/pbm-api/android/pbm-targeting-android.md index 5d1a3e05bc..0a07eb9c02 100755 --- a/prebid-mobile/pbm-api/android/pbm-targeting-android.md +++ b/prebid-mobile/pbm-api/android/pbm-targeting-android.md @@ -35,6 +35,9 @@ The `Prebid` class is a singleton that enables you to apply certain global setti ### Prebid Class Global Properties +{: .alert.alert-warning :} +The global properties exist only for PrebidMobile `2.5.0`. Starting from PrebidMobile `3.0.0` the global properties below are removed. + All of these properties of the Prebid class can be set on the `shared` object like this: ```kotlin @@ -44,9 +47,9 @@ Prebid.shared.sendMraidSupportParams=true {: .table .table-bordered .table-striped } | Parameter | Scope | Type | Purpose | Description | Example | | --- | --- | --- | --- | --- | -| isCoppaEnabled | optional | boolean | ORTB | Set this to true if this app is aimed at children. It sets the ORTB `regs.coppa` flag. Default is false. | `true` | -| useExternalBrowser | optional | boolean | behavior | If true, clicking on the ad will open your default browser instead of showing within the app's webview. Defaults to `false`. | `true` | -| sendMraidSupportParams | optional | boolean | ORTB | If `true`, the SDK sends imp[].banner.api=[3,5], indicating support for MRAID. Defaults to `true`. | `false` | +| isCoppaEnabled | optional | boolean | ORTB | Starting from PrebidMobile `3.0.0` the property is removed. Can be replaces with `TargetingParams.setSubjectToCOPPA()`Set this to true if this app is aimed at children. It sets the ORTB `regs.coppa` flag. Default is false. | `true` | +| useExternalBrowser | optional | boolean | behavior | Starting from PrebidMobile `3.0.0` the property is removedIf true, clicking on the ad will open your default browser instead of showing within the app's webview. Defaults to `false`. | `true` | +| sendMraidSupportParams | optional | boolean | ORTB | Starting from PrebidMobile `3.0.0` the property is removedIf `true`, the SDK sends imp[].banner.api=[3,5], indicating support for MRAID. Defaults to `true`. | `false` | ### Prebid Class Global Methods @@ -58,6 +61,9 @@ Your Prebid Server team will tell you whether this is required or not and if so, This is where the Prebid SDK will send the auction information. +{: .alert.alert-warning :} +Starting from PrebidMobile `3.0.0` the `setPrebidServerHost` method is removed. Use the `initializeSdk` method instead. + Signature: ```kotlin @@ -74,8 +80,6 @@ Parameters: Examples: ```kotlin -PrebidMobile.setPrebidServerHost(Host.APPNEXUS) -PrebidMobile.setPrebidServerHost(Host.RUBICON) PrebidMobile.setPrebidServerHost(Host.createCustomHost("https://prebidserver.example.com/openrtb2/auction")) ``` @@ -470,36 +474,27 @@ Prebid SDK provides a number of properties in the [Targeting class](/prebid-mobi methods) for setting user-oriented First Party Data. ```kotlin -void addUserData(String key, String value) - -void updateUserData( String key, Set value) +void addUserKeyword(String keyword) -void removeUserData(String key) +void addUserKeywords(Set keywords) -void clearUserData() +void removeUserKeyword(String keyword) -Map> getUserDataDictionary() { +void clearUserKeywords() -void addUserKeywords(Set keywords) { +String getUserKeywords() -void removeUserKeyword(String keyword) { - -void clearUserKeywords() { - -String getUserKeywords() { - -Set getUserKeywordsSet() { +Set getUserKeywordsSet() ``` Example: ```kotlin -TargetingParams.addUserData("globalUserDataKey1", "globalUserDataValue1") +TargetingParams.addUserKeyword("globalUserKeyword") ``` {: .alert.alert-info :} -Note: The 'UserData' functions end up putting data into the OpenRTB user.ext.data object while the 'UserKeywords' functions -put data into user.keywords. +Note: The 'UserKeywords' functions put data into user.keywords. ### Inventory FPD @@ -513,16 +508,6 @@ void updateExtData(String key, Set value) void removeExtData(String key) Map> getExtDataDictionary() - -void addExtKeyword(String keyword) - -void addExtKeywords(Set keywords) - -void removeExtKeyword(String keyword) - -void clearExtKeywords() - -Set getExtKeywordsSet() ``` Example: @@ -807,18 +792,6 @@ Pay attention that there are certain protected fields such as `regs`, `device`, - App and User first party data should use the [functions defined for those purposes](/prebid-mobile/pbm-api/ios/pbm-targeting-ios.html#first-party-data) - See the [Prebid Server auction endpoint](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#prebid-server-ortb2-extension-summary) reference for more information about how it will process incoming fields. -### Deprecated -{:.no_toc} - -The Prebid Mobile SDK v2.2.1 contains the deprecated method to set the impression level RTB config: - -``` swift -//ad unit / impression-level -adUnit.setOrtbConfig("{\"ext\":{\"gpid\":\"abc123"}}\") -``` - -This method has implementation issues and was deprecated in v2.4.0. If you use this method, we strongly recommend migrating to the new `setImpORTBConfig()` method since this one will be removed entirely in SDK version 3.0. - ## Further Reading - [Prebid Mobile Overview](/prebid-mobile/prebid-mobile.html) diff --git a/prebid-mobile/pbm-api/ios/code-integration-ios.md b/prebid-mobile/pbm-api/ios/code-integration-ios.md index c0a7f1c192..f73597f3e4 100644 --- a/prebid-mobile/pbm-api/ios/code-integration-ios.md +++ b/prebid-mobile/pbm-api/ios/code-integration-ios.md @@ -90,16 +90,26 @@ This will output the PrebidMobile.framework. ## Add the Prebid SDK -### Point to a Prebid Server +### Prebid Server Account ID -Once you have a [Prebid Server](/prebid-mobile/prebid-mobile-getting-started.html), you will add 'account' info to the Prebid Mobile. For example, if you're using the AppNexus Prebid Server: +Once you have a [Prebid Server](/prebid-mobile/prebid-mobile-getting-started.html), you will add 'account' info to the Prebid Mobile. ```swift Prebid.shared.prebidServerAccountId = YOUR_ACCOUNT_ID +``` + +### Point to a Prebid Server + +{: .alert.alert-warning :} +Starting from PrebidMobile `3.0.0` the setCustomPrebidServer() method and the `Host.Appnexus` and `Host.Rubicon` enums have been removed. Please check the server URL in [API changes](/prebid-mobile/updates-3.0/ios/api-changes#host) and use `PrebidMobile.initializeSdk` (below) to set the Prebid Server URL. + +In SDK 2.5 and before, if you're using the AppNexus Prebid Server, you would do this: + +```swift Prebid.shared.prebidServerHost = .Appnexus ``` -If you have opted to host your own Prebid Server solution, you will need to store the URL to the server in your app. Make sure that your URL points to the [/openrtb2/auction](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html) endpoint. +In SDK 2.5 and before, if you have opted to host your own Prebid Server solution, you will need to store the URL to the server in your app. Make sure that your URL points to the [/openrtb2/auction](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html) endpoint. ```swift try! Prebid.shared.setCustomPrebidServer(url: "https://prebidserver.example.com/openrtb2/auction") @@ -113,19 +123,21 @@ Each mobile app may have its own "account settings ID". This is used to look up By default the Account Settings ID is set to be the same as the Account ID. i.e. the Prebid.shared.prebidServerAccountId property will set both values. If you want to define a different Account Settings ID as determined in conjunction with -your Prebid Server team, use the [arbitrary OpenRTB](/prebid-mobile/pbm-api/android/pbm-targeting-android.html#arbitrary-openrtb) method like this: +your Prebid Server team, use the [arbitrary OpenRTB](/prebid-mobile/pbm-api/ios/pbm-targeting-ios.html#arbitrary-openrtb) method like this: ```swift -adUnitConfig.setOrtbConfig = "{\"ext\":{\"prebid\":{\"storedrequest\": {\"id\":\"account-settings-id\"}}}}" +Targeting.shared.setGlobalORTBConfig("{\"ext\":{\"prebid\":{\"storedrequest\": {\"id\":\"account-settings-id\"}}}}") ``` ### Initialize SDK -Once you set the account ID and the Prebid Server host, you should initialize the Prebid SDK. There are several options for how to do it. +Once you set the account ID, you should initialize the Prebid SDK. + +In SDK 3.0 and later, you need to enter a URL to your Prebid Server's auction endpoint in your app. Get this URL from your Prebid Server provider. e.g. `https://prebid-server.example.com/openrtb2/auction`. If you integrate Prebid Mobile with GMA SDK with version equal or higher than 10.7.0, use the following initializer, which checks the compatibility of Prebid SDK with GMA SDK used in the app: -{% capture gma12 %}Prebid.initializeSDK(gadMobileAdsVersion: string(for: MobileAds.shared.versionNumber)) { status, error in +{% capture gma12 %}Prebid.initializeSDK(PREBID_SERVER_URL, gadMobileAdsVersion: string(for: MobileAds.shared.versionNumber)) { status, error in switch status { case .succeeded: print("Prebid SDK successfully initialized") @@ -140,9 +152,9 @@ If you integrate Prebid Mobile with GMA SDK with version equal or higher than 10 default: break } -} +} {% endcapture %} -{% capture gma11 %}Prebid.initializeSDK(gadMobileAdsVersion: GADGetStringFromVersionNumber(GADMobileAds.sharedInstance().versionNumber) { status, error in +{% capture gma11 %}Prebid.initializeSDK(PREBID_SERVER_URL, gadMobileAdsVersion: GADGetStringFromVersionNumber(GADMobileAds.sharedInstance().versionNumber) { status, error in switch status { case .succeeded: print("Prebid SDK successfully initialized") @@ -157,7 +169,7 @@ If you integrate Prebid Mobile with GMA SDK with version equal or higher than 10 default: break } -} +} {% endcapture %} {% include code/gma-versions-tabs.html id="pbm-init" gma11=gma11 gma12=gma12 %} @@ -165,7 +177,7 @@ If you integrate Prebid Mobile with GMA SDK with version equal or higher than 10 If you integrate Prebid Mobile with GMA SDK with version lower than 10.7.0, use the following initializer: ```swift -Prebid.initializeSDK(GADMobileAds.sharedInstance()) { status, error in +Prebid.initializeSDK(PREBID_SERVER_URL, GADMobileAds.sharedInstance()) { status, error in switch status { case .succeeded: print("Prebid SDK successfully initialized") @@ -188,12 +200,14 @@ Check the log messages of the app. If the provided GMA SDK version is not verifi For the No Ad Server scenario, use the following initialization: ```swift -Prebid.initializeSDK { status, error in +Prebid.initializeSDK(PREBID_SERVER_URL) { status, error in // .... } ``` -During the initialization, SDK creates internal classes and performs the health check request to the [/status](https://docs.prebid.org/prebid-server/endpoints/pbs-endpoint-status.html) endpoint. If you use a custom PBS host you should provide a custom status endpoint as well: +All initialization methods may throw an exception if the provided server URL is invalid. + +During the initialization, SDK creates internal classes and performs the health check request to the [/status](/prebid-server/endpoints/pbs-endpoint-status.html) endpoint. If your Prebid Server provider has a non-standard path (anything other than `/status`), you should provide a the alternate status endpoint: ```swift Prebid.shared.customStatusEndpoint = PREBID_SERVER_STATUS_ENDPOINT @@ -201,6 +215,28 @@ Prebid.shared.customStatusEndpoint = PREBID_SERVER_STATUS_ENDPOINT If something goes wrong with the request, the status of the initialization callback will be `.serverStatusWarning`. It doesn't affect an SDK flow and just informs you about the health check result. +#### Handling Tracking Domains + +As part of Apple's evolving privacy policies, SDKs that access user data in a way that could be used for tracking may be required to register tracking domains in the `PrivacyInfo.xcprivacy` file. + +Currently, the Prebid Mobile SDK is not classified as one of these SDKs. But future changes from Apple or internal app review policies may prompt publishers to proactively register the Prebid Server (PBS) endpoint in the privacy manifest. To support this, the Prebid SDK is designed to accommodate both tracking and non-tracking PBS domains. Here are the Prebid recommendations: + +- Include the relevant `NSPrivacyCollectedDataTypes` and define your primary Prebid Server domain in the `NSPrivacyTrackingDomains` array in your the `PrivacyInfo.xcprivacy` file to cover a potential "worst case" scenario. Read more about the `PrivacyInfo.xcprivacy` data [here](https://docs.prebid.org/faq/prebid-mobile-faq.html#privacysecurity). +- You may choose to provide a secondary, privacy-mode PBS URL to the SDK. This secondary domain can be used when tracking is disallowed. Get this additional hostname from your Prebid Server host provider. Every initialization method contains optional parameter to define this privacy-safe PBS domain. Since these requests will have the `limit ad tracking` flag defined, Prebid Server will anonymize the requests. + +You’re not required to use a secondary PBS domain -- you can simply allow iOS to block PBS requests when the user opts out of tracking. + +```swift +let trackingURL = "https://prebidserver.example.com/openrtb2/auction" +let nonTrackingURL = "https://prebidserver.example.nontracking.com/openrtb2/auction" +Prebid.initializeSDK(trackingURL, nonTrackingURL) { status, error in + // .... +} +``` + +{: .alert.alert-warning :} +Depending on Apple’s domain monitoring mechanisms, even the privacy-mode domain could potentially be blocked. In such cases, the PBS provider may need to engage with Apple for resolution. + ## Set Global Parameters There are several types of parameters app developers should consider providing to Prebid SDK: @@ -323,12 +359,17 @@ All values received in the `passthrough` of the bid response will be applied to ### Examples {:.no_toc} +{: .alert.alert-warning :} +Starting from PrebidMobile `3.0.0` the `prebidServerHost` property and the `setCustomPrebidServer` method are removed. Use `Prebid.initializeSDK` instead. If you used `Host.Appnexus` or `Host.Rubicon` to set your host, you should check the server URL in [API changes](/prebid-mobile/updates-3.0/ios/api-changes#host). + ```swift -// Host + +// Host (Removed in 3.0.0. Use `Prebid.initializeSDK` instead.) Prebid.shared.prebidServerHost = .Rubicon -// or set a custom host +// or set a custom host (Removed in 3.0.0. Use `Prebid.initializeSDK` instead.) Prebid.shared.prebidServerHost = PrebidHost.Custom do { + // Removed in 3.0.0. Use `Prebid.initializeSDK` instead. try Prebid.shared.setCustomPrebidServer(url: "https://prebid-server.customhost.com") } catch { print(error) diff --git a/prebid-mobile/pbm-api/ios/pbm-targeting-ios.md b/prebid-mobile/pbm-api/ios/pbm-targeting-ios.md index b3da208e65..147ec5fabb 100644 --- a/prebid-mobile/pbm-api/ios/pbm-targeting-ios.md +++ b/prebid-mobile/pbm-api/ios/pbm-targeting-ios.md @@ -46,7 +46,7 @@ Prebid.shared.customStatusEndpoint="https://pbs.example.com/v2/status" | Parameter | Scope | Type | Purpose | Description | Example | | --- | --- | --- | --- | --- | --- | | prebidServerAccountId | either | string | init | Your Prebid Server team will tell you whether this is required or not and if so, the value. | "abc123" | -| prebidServerHost | optional | enum | init | This can take the values "Appnexus", "Rubicon", or "Custom". If "Custom", you need to use the setCustomPrebidServerUrl() method to set a URL. This is where the Prebid SDK will send the auction information. Your Prebid Server team will tell you which value to use. The default is "Custom". | "Custom" | +| prebidServerHost | optional | enum | init | Starting from PrebidMobile `3.0.0` the property is removedThis can take the values "Appnexus", "Rubicon", or "Custom". If "Custom", you need to use the setCustomPrebidServerUrl() method to set a URL. This is where the Prebid SDK will send the auction information. Your Prebid Server team will tell you which value to use. The default is "Custom". | "Custom" | | customStatusEndpoint | optional | string | init | Use this URL to check the status of Prebid Server. The default status endpoint is the PBS URL appended with '/status'. | `https://prebidserver``.example``.com/custom``/status` | | shareGeoLocation | optional | boolean | ORTB | If this flag is true AND the app collects the user’s geographical location data, Prebid Mobile will send the user’s lat/long geographical location data to the Prebid Server. The default is false. | `true` | | locationUpdatesEnabled | optional | boolean | ORTB | If true, the SDK will periodically try to listen for location updates. Default is `false`. | `true` | @@ -59,8 +59,8 @@ Prebid.shared.customStatusEndpoint="https://pbs.example.com/v2/status" | pbsDebug | optional | boolean | ORTB | Adds the debug flag (`test`:1) on the outbound http call to the Prebid Server. The `test` flag signals to the Prebid Server to emit the full resolved request and the full Bid Request and Bid Response to and from each bidder. | true | | shouldAssignNativeAssetID | optional | boolean | ORTB | Whether to automatically assign an assetID for a Native ad. Default is `false`. | true | | useCacheForReportingWithRenderingAPI | optional | boolean | ORTB | Indicates whether PBS should cache the bid on the server side. If the value is `true` the Prebid SDK will make the cache request to retrieve the cached asset. Default is `false`. | true | -| useExternalClickthroughBrowser | optional | boolean | SDK control | Controls whether to use PrebidMobile's in-app browser or the Safari App for displaying ad clickthrough content. Default is false. | true | -| impClickbrowserType | optional | enum | ORTB | Indicates the type of browser opened upon clicking the creative in an app. This corresponds to the OpenRTB imp.clickbrowser field. Values are "embedded" and "native". Default is "native". | "native". | +| useExternalClickthroughBrowser | optional | boolean | SDK control | Starting from PrebidMobile `3.0.0` the property is removedControls whether to use PrebidMobile's in-app browser or the Safari App for displaying ad clickthrough content. Default is false. | true | +| impClickbrowserType | optional | enum | ORTB | Starting from PrebidMobile `3.0.0` the property is removedIndicates the type of browser opened upon clicking the creative in an app. This corresponds to the OpenRTB imp.clickbrowser field. Values are "embedded" and "native". Default is "native". | "native". | | includeWinners | optional | boolean | ORTB | If `true`, Prebid sdk will add `includewinners` flag inside the targeting object described in [PBS Documentation](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#targeting) . Default is `false`. | `true` | | includeBidderKeys | optional | boolean | ORTB | If `true`, Prebid sdk will add `includebidderkeys` flag inside the targeting object described in [PBS Documentation](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#targeting) . Default is `false`. | `true` | | eventDelegate | optional | PrebidEventDelegate | init | Sets an event delegate to handle all auction requests and responses. It allows to collect some statistical data. Note that the SDK stores this callback as a weak reference so you need to store a reference to it. | `class PrebidEventDelegateTestsMockDelegate: PrebidEventDelegate { func prebidBidRequestDidFinish(requestData: Data?, responseData: Data?) { ... } }` | @@ -69,6 +69,9 @@ Prebid.shared.customStatusEndpoint="https://pbs.example.com/v2/status" #### setCustomPrebidServerUrl() +{: .alert.alert-warning :} +Starting from PrebidMobile `3.0.0` the method is removed. Use `Prebid.initializeSDK` instead. + Defines which Prebid Server to connect to. See the initialization page for [iOS](/prebid-mobile/pbm-api/ios/code-integration-ios.html). #### addStoredBidResponse() @@ -369,14 +372,6 @@ Prebid SDK provides a number of properties in the [Targeting class](/prebid-mobi ```swift func setLatitude(latitude: Double, longitude: Double) -func addUserData(key: String, value: String) - -func updateUserData(key: String, value: Set) - -func removeUserData(forKey: String) - -func clearUserData() - func addUserKeyword(_ newElement: String) func addUserKeywords(_ newElements: Set) @@ -391,14 +386,11 @@ func getUserKeywords() Example: ```swift -Targeting.shared.addUserData(key: "globalUserDataKey1", value: "globalUserDataValue1") +Targeting.shared.addUserKeyword(key: "globalUserKeyword") ``` {: .alert.alert-info :} -Note: The 'UserData' functions end up putting data into the OpenRTB user.ext.data object while the 'UserKeywords' functions -put data into user.keywords. - -Related functions: setYearOfBirth(), getYearOfBirth() and clearYearOfBirth(). +Note: The 'UserKeywords' functions put data into user.keywords. ### Inventory FPD @@ -447,7 +439,7 @@ func clearAccessControlList() Example: ```swift -Targeting.shared.addBidderToAccessControlList(Prebid.bidderNameRubiconProject) +Targeting.shared.addBidderToAccessControlList("bidderA") ``` --- @@ -515,9 +507,6 @@ Certain identity vendors require an external dependency to generate user identit UID2 provides a [native library](https://unifiedid.com/docs/guides/integration-mobile-client-side#optional-uid2-prebid-mobile-sdk-integration) for automatically updating latest UID2 token stored inside [UID2 SDK for iOS](https://unifiedid.com/docs/sdks/sdk-ref-ios) into Prebid's external user's ID list. -App developers are not required to manually call ```Prebid.shared.externalUserIdArray = latestExternalUserIdArray``` -as the native library will do so automatically - Note: - [Github repo](https://github.com/IABTechLab/uid2-ios-sdk) @@ -594,18 +583,6 @@ Pay attention that there are certain protected fields such as `regs`, `device`, - App and User first party data should use the [functions defined for those purposes](/prebid-mobile/pbm-api/ios/pbm-targeting-ios.html#first-party-data) - See the [Prebid Server auction endpoint](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#prebid-server-ortb2-extension-summary) reference for more information about how it will process incoming fields. -### Deprecated -{:.no_toc} - -The Prebid Mobile SDK v2.2.1 contains the deprecated method to set the impression level RTB config: - -``` swift -//ad unit / impression-level -adUnit.setOrtbConfig("{\"ext\":{\"gpid\":\"abc123"}}\") -``` - -This method has implementation issues and was deprecated in v2.4.0. If you use this method, we strongly recommend migrating to the new `setImpORTBConfig()` method since this one will be removed entirely in SDK version 3.0. - ## Further Reading - [Prebid Mobile Overview](/prebid-mobile/prebid-mobile.html) diff --git a/prebid-mobile/prebid-mobile.md b/prebid-mobile/prebid-mobile.md index 646ae9c939..c35bf8152e 100644 --- a/prebid-mobile/prebid-mobile.md +++ b/prebid-mobile/prebid-mobile.md @@ -8,13 +8,21 @@ sidebarType: 2 # Prebid Mobile Overview {:.no_toc} -Prebid Mobile is an open-source library fir iOS and Android that provides an end-to-end header bidding solution for mobile app publishers. +Prebid Mobile is an open-source library for iOS and Android that provides an end-to-end header bidding solution for mobile app publishers. + +---- {: .alert.alert-info :} -The Prebid Mobile team is pleased to announce that we're getting ready -to start building the next major version. Please see the -[plan for Prebid Mobile 3.0](/prebid-mobile/docs/Prebid_Mobile_3_0_0.pdf) -and provide feedback to . +The Prebid Mobile team is pleased to inform you that `Prebid Mobile 3.0` is live. + +Here is what you need to know first about the new version: + +- [3.0 Updates Overview](updates-3.0/sdk-key-features.html). +- API Changes: [iOS](updates-3.0/ios/api-changes.html), [Android](updates-3.0/android/api-changes.html). + +Provide feedback to . + +---- - TOC {:toc} diff --git a/prebid-mobile/recipes/subrecipes/android/gam-bidding-only-html-banner.md b/prebid-mobile/recipes/subrecipes/android/gam-bidding-only-html-banner.md index 900eadb2a5..95c5a55721 100644 --- a/prebid-mobile/recipes/subrecipes/android/gam-bidding-only-html-banner.md +++ b/prebid-mobile/recipes/subrecipes/android/gam-bidding-only-html-banner.md @@ -20,9 +20,14 @@ private fun createAd() { adUnit?.setAutoRefreshInterval(refreshTimeSeconds) // 2. Configure banner parameters - val parameters = BannerBaseAdUnit.Parameters() + val parameters = BannerParameters() parameters.api = listOf(Signals.Api.MRAID_3, Signals.Api.OMID_1) - adUnit?.parameters = parameters + adUnit?.bannerParameters = parameters + + // 2. Configure banner parameters for PrebidMobile 2.5 + // val parameters = BannerBaseAdUnit.Parameters() + // parameters.api = listOf(Signals.Api.MRAID_3, Signals.Api.OMID_1) + // adUnit?.parameters = parameters // For multi-size request adUnit?.addAdditionalSize(728, 90) @@ -46,6 +51,9 @@ private fun createAd() { } ``` +{: .alert.alert-warning :} +Starting from PrebidMobile `3.0.0` the `BannerBaseAdUnit.Parameters` class is removed. Use `BannerParameters` class instead. + It may be necessary to implement AdListener to adjust banner view size according to the creative size, for the case where there are several ad sizes supported. This logic is not needed for a single size banner: Prebid SDK can be thought of an OpenRTB request synthesizer. OpenRTB does not have a notion of adaptive banners, but it has a notion of several banner sizes / formats in one request. So an adaptive banner may be represented as a request containing several banner sizes, e.g. a fixed width that equals the size of the screen and several different heights. The examples here deal with a single ad size, but more can be added via BannerParameters.adSizes array. diff --git a/prebid-mobile/recipes/subrecipes/android/gam-bidding-only-interstitial-video.md b/prebid-mobile/recipes/subrecipes/android/gam-bidding-only-interstitial-video.md index e268bc0583..15c6d464cd 100644 --- a/prebid-mobile/recipes/subrecipes/android/gam-bidding-only-interstitial-video.md +++ b/prebid-mobile/recipes/subrecipes/android/gam-bidding-only-interstitial-video.md @@ -38,7 +38,7 @@ private fun createAd() { ``` {: .alert.alert-warning :} -Starting from PrebidMobile `2.1.0` the `VideoInterstitialAdUnit` class is deprecated. Use `InterstitialAdUnit` class with video ad format instead. +Starting from PrebidMobile `2.1.0` the `VideoInterstitialAdUnit` class is deprecated and from PrebidMobile `3.0.0` - removed. Use `InterstitialAdUnit` class with video ad format instead. Configuration function: diff --git a/prebid-mobile/recipes/subrecipes/android/gam-bidding-only-video-instream.md b/prebid-mobile/recipes/subrecipes/android/gam-bidding-only-video-instream.md index d049cc315d..45c6d4282e 100644 --- a/prebid-mobile/recipes/subrecipes/android/gam-bidding-only-video-instream.md +++ b/prebid-mobile/recipes/subrecipes/android/gam-bidding-only-video-instream.md @@ -15,7 +15,7 @@ Integration example: ```kotlin private fun createAd() { - // 1. Create VideoAdUnit + // 1. Create InStreamVideoAdUnit adUnit = InStreamVideoAdUnit(CONFIG_ID, WIDTH, HEIGHT) // 2. Configure video parameters @@ -47,7 +47,7 @@ private fun createAd() { ``` {: .alert.alert-warning :} -Starting from PrebidMobile `2.1.0` the `VideoAdUnit` class is deprecated. Use `InStreamVideoAdUnit` instead. +Starting from PrebidMobile `2.1.0` the `VideoAdUnit` class is deprecated and from PrebidMobile `3.0.0` - removed. Use `InStreamVideoAdUnit` class with video ad format instead. Configure the video ad: diff --git a/prebid-mobile/recipes/subrecipes/android/gam-bidding-only-video-outstream.md b/prebid-mobile/recipes/subrecipes/android/gam-bidding-only-video-outstream.md index 279253d0a9..e9a038f044 100644 --- a/prebid-mobile/recipes/subrecipes/android/gam-bidding-only-video-outstream.md +++ b/prebid-mobile/recipes/subrecipes/android/gam-bidding-only-video-outstream.md @@ -16,7 +16,7 @@ Integration example: ```kotlin private fun createAd() { - // 1. Create VideoAdUnit + // 1. Create BannerAdUnit adUnit = BannerAdUnit(CONFIG_ID, WIDTH, HEIGHT, EnumSet.of(AdUnitFormat.VIDEO)) // 2. Configure video ad unit @@ -39,7 +39,7 @@ private fun createAd() { ``` {: .alert.alert-warning :} -Starting from PrebidMobile `2.1.0` the `VideoAdUnit` class is deprecated. Use `BannerAdUnit` class with video ad format instead. +Starting from PrebidMobile `2.1.0` the `VideoAdUnit` class is deprecated and from PrebidMobile `3.0.0` - removed. Use `BannerAdUnit` class with video ad format instead. Configure Video parameters: diff --git a/prebid-mobile/recipes/subrecipes/ios/gam-bidding-only-html-banner.md b/prebid-mobile/recipes/subrecipes/ios/gam-bidding-only-html-banner.md index b205ea09a7..7131ef68cc 100644 --- a/prebid-mobile/recipes/subrecipes/ios/gam-bidding-only-html-banner.md +++ b/prebid-mobile/recipes/subrecipes/ios/gam-bidding-only-html-banner.md @@ -22,7 +22,7 @@ To integrate HTML banner ads into the app you should use the `BannerAdUnit` clas // 2. Configure banner parameters using Prebid Mobile SDK let parameters = BannerParameters() parameters.api = [Signals.Api.MRAID_2, Signals.Api.OMID_1] - adUnit.parameters = parameters + adUnit.bannerParameters = parameters // 3. Create an AdManagerBannerView using Google Mobile Ads SDK gamBanner = AdManagerBannerView(adSize: adSizeFor(cgSize: AD_SIZE)) @@ -52,7 +52,7 @@ To integrate HTML banner ads into the app you should use the `BannerAdUnit` clas // 2. Configure banner parameters using Prebid Mobile SDK let parameters = BannerParameters() parameters.api = [Signals.Api.MRAID_2, Signals.Api.OMID_1] - adUnit.parameters = parameters + adUnit.bannerParameters = parameters // 3. Create a GAMBannerView using Google Mobile Ads SDK gamBanner = GAMBannerView(adSize: GADAdSizeFromCGSize(AD_SIZE)) diff --git a/prebid-mobile/recipes/subrecipes/ios/gam-bidding-only-interstitial-video.md b/prebid-mobile/recipes/subrecipes/ios/gam-bidding-only-interstitial-video.md index f01db9baf7..a89bdc70b2 100644 --- a/prebid-mobile/recipes/subrecipes/ios/gam-bidding-only-interstitial-video.md +++ b/prebid-mobile/recipes/subrecipes/ios/gam-bidding-only-interstitial-video.md @@ -60,7 +60,7 @@ To integrate Video Interstitial ads into the app you should use the Prebid SDK ` parameters.mimes = ["video/mp4"] parameters.protocols = [Signals.Protocols.VAST_2_0] parameters.playbackMethod = [Signals.PlaybackMethod.AutoPlaySoundOn] - adUnit.parameters = parameters + adUnit.bannerParameters = parameters // 4. Make a bid request to Prebid Server using Prebid Mobile SDK let gamRequest = GAMRequest() diff --git a/prebid-mobile/recipes/subrecipes/ios/gam-bidding-only-rewarded-video.md b/prebid-mobile/recipes/subrecipes/ios/gam-bidding-only-rewarded-video.md index 8174d0503b..7e72127857 100644 --- a/prebid-mobile/recipes/subrecipes/ios/gam-bidding-only-rewarded-video.md +++ b/prebid-mobile/recipes/subrecipes/ios/gam-bidding-only-rewarded-video.md @@ -52,7 +52,7 @@ To integrate Rewarded Video ads into the app you should use the Prebid SDK `Rewa parameters.mimes = ["video/mp4"] parameters.protocols = [Signals.Protocols.VAST_2_0] parameters.playbackMethod = [Signals.PlaybackMethod.AutoPlaySoundOn] - adUnit.parameters = parameters + adUnit.videoParameters = parameters // 3. Make a bid request to Prebid Server using Prebid Mobile SDK let gamRequest = GAMRequest() diff --git a/prebid-mobile/recipes/subrecipes/ios/gam-bidding-only-video-instream.md b/prebid-mobile/recipes/subrecipes/ios/gam-bidding-only-video-instream.md index 635408ee0b..0f177b5b01 100644 --- a/prebid-mobile/recipes/subrecipes/ios/gam-bidding-only-video-instream.md +++ b/prebid-mobile/recipes/subrecipes/ios/gam-bidding-only-video-instream.md @@ -94,7 +94,7 @@ func adsManagerDidRequestContentResume(_ adsManager: IMAAdsManager) { ``` {: .alert.alert-warning :} -Starting from PrebidMobile `2.1.0` the `VideoAdUnit` class is deprecated. Use `InstreamVideoAdUnit` class instead. +Starting from PrebidMobile `2.1.0` the `VideoAdUnit` class is deprecated and from PrebidMobile `3.0.0` - removed. Use `InstreamVideoAdUnit` class with video ad format instead. ## Step 1: Create an InstreamVideoAdUnit {:.no_toc} diff --git a/prebid-mobile/recipes/subrecipes/ios/gam-bidding-only-video-outstream.md b/prebid-mobile/recipes/subrecipes/ios/gam-bidding-only-video-outstream.md index 7694451547..3aff90dea8 100644 --- a/prebid-mobile/recipes/subrecipes/ios/gam-bidding-only-video-outstream.md +++ b/prebid-mobile/recipes/subrecipes/ios/gam-bidding-only-video-outstream.md @@ -80,7 +80,7 @@ adUnit.fetchDemand(adObject: gamRequest) { [weak self] resultCode in {% include code/gma-versions-tabs.html id="non-instream-video" gma11=gma11 gma12=gma12 %} {: .alert.alert-warning :} -Starting from PrebidMobile `2.1.0` the `VideoAdUnit` class is deprecated. Use `BannerAdUnit` class with video ad format instead. +Starting from PrebidMobile `2.1.0` the `VideoAdUnit` class is deprecated and from PrebidMobile `3.0.0` - removed. Use `BannerAdUnit` class with video ad format instead. ## Step 1: Create a BannerAdUnit {:.no_toc} diff --git a/prebid-mobile/updates-3.0/android/api-changes.md b/prebid-mobile/updates-3.0/android/api-changes.md new file mode 100644 index 0000000000..c9bdaf089b --- /dev/null +++ b/prebid-mobile/updates-3.0/android/api-changes.md @@ -0,0 +1,206 @@ +--- +layout: page_v2 +title: Prebid Mobile 3.0 API Changes +description: Prebid Mobile 3.0 API Changes +pid: 1 +top_nav_section: prebid-mobile +nav_section: prebid-mobile-android +sidebarType: 2 +--- + + + +# Prebid Mobile 3.0 API Changes + +{:.no_toc} + +This page provides a detailed list of removed APIs in PrebidMobile SDK 3.0, along with their corresponding recommended +replacements. + +## Elimination of Deprecated Functionality + +PrebidMobile 3.0 introduces significant changes and removes several deprecated features. Below is a detailed breakdown +of these removals, and how publishers should migrate to the new alternatives. + +### PrebidMobile + +{: .table .table-bordered .table-striped } + +| Removed | Alternative | +|----------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| isCoppaEnabled | [setSubjectToCOPPA()](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/TargetingParams.html#setSubjectToCOPPA(java.lang.Boolean)) | +| useExternalBrowser | None, removed. | +| sendMraidSupportParams | None, by default true. | +| logLevel | [setLogLevel()](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/LogUtil.html#setLogLevel(int)) | +| setPrebidServerHost() | [initializeSdk()](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/PrebidMobile.html#initializeSdk(android.content.Context,java.lang.String,SdkInitializationListener)) with host parameter | +| setExternalUserIds() | [TargetingParams.setExternalUserIds()](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/TargetingParams.html#setExternalUserIds(java.util.List)) | +| initializeSdk(context, listener) | [initializeSdk()](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/PrebidMobile.html#initializeSdk(android.content.Context,java.lang.String,SdkInitializationListener)) with host parameter | +| getApplicationContext() | PrebidContextHolder.getContext() | + +--- + +### Ad units + +All classes with ad unit data: AdUnit, BannerView, InterstitialAdUnit, RewardedAdUnit, MediationBannerAdUnit, +MediationBaseInterstitialAdUnit, MediationNativeAdUnit, PrebidRequest, TargetingParams. + +{: .table .table-bordered .table-striped } + +| Removed | Alternative | +|----------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| addContextData() | None, removed. Can be replaced with [OpenRTB config](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/AdUnit.html#setImpOrtbConfig(java.lang.String)). | +| updateContextData() | None, removed. Can be replaced with [OpenRTB config](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/AdUnit.html#setImpOrtbConfig(java.lang.String)). | +| removeContextData() | None, removed. Can be replaced with [OpenRTB config](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/AdUnit.html#setImpOrtbConfig(java.lang.String)). | +| clearContextData() | None, removed. Can be replaced with [OpenRTB config](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/AdUnit.html#setImpOrtbConfig(java.lang.String)). | +| getContextDataDictionary() | None, removed. Can be replaced with [OpenRTB config](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/AdUnit.html#setImpOrtbConfig(java.lang.String)). | +| addContextKeyword() | None, removed. Can be replaced with [OpenRTB config](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/AdUnit.html#setImpOrtbConfig(java.lang.String)). | +| addContextKeywords() | None, removed. Can be replaced with [OpenRTB config](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/AdUnit.html#setImpOrtbConfig(java.lang.String)). | +| removeContextKeyword() | None, removed. Can be replaced with [OpenRTB config](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/AdUnit.html#setImpOrtbConfig(java.lang.String)). | +| clearContextKeywords() | None, removed. Can be replaced with [OpenRTB config](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/AdUnit.html#setImpOrtbConfig(java.lang.String)). | +| getContextKeywordsSet() | None, removed. Can be replaced with [OpenRTB config](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/AdUnit.html#setImpOrtbConfig(java.lang.String)). | +| addExtKeyword() | None, removed. Can be replaced with [OpenRTB config](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/AdUnit.html#setImpOrtbConfig(java.lang.String)). | +| addExtKeywords() | None, removed. Can be replaced with [OpenRTB config](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/AdUnit.html#setImpOrtbConfig(java.lang.String)). | +| removeExtKeyword() | None, removed. Can be replaced with [OpenRTB config](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/AdUnit.html#setImpOrtbConfig(java.lang.String)). | +| clearExtKeywords() | None, removed. Can be replaced with [OpenRTB config](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/AdUnit.html#setImpOrtbConfig(java.lang.String)). | +| getExtKeywordsSet() | None, removed. Can be replaced with [OpenRTB config](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/AdUnit.html#setImpOrtbConfig(java.lang.String)). | +| addExtData() | None, removed. Can be replaced with [OpenRTB config](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/AdUnit.html#setImpOrtbConfig(java.lang.String)). | +| updateExtData() | None, removed. Can be replaced with [OpenRTB config](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/AdUnit.html#setImpOrtbConfig(java.lang.String)). | +| removeExtData(String key) | None, removed. Can be replaced with [OpenRTB config](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/AdUnit.html#setImpOrtbConfig(java.lang.String)). | +| clearExtData() | None, removed. Can be replaced with [OpenRTB config](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/AdUnit.html#setImpOrtbConfig(java.lang.String)). | +| getExtDataDictionary() | None, removed. Can be replaced with [OpenRTB config](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/AdUnit.html#setImpOrtbConfig(java.lang.String)). | +| setAppContent() | None, removed. Can be replaced with [OpenRTB config](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/AdUnit.html#setImpOrtbConfig(java.lang.String)). | +| getAppContent() | None, removed. Can be replaced with [OpenRTB config](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/AdUnit.html#setImpOrtbConfig(java.lang.String)). | +| addUserData() | None, removed. Can be replaced with [OpenRTB config](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/AdUnit.html#setImpOrtbConfig(java.lang.String)). | +| getUserData() | None, removed. Can be replaced with [OpenRTB config](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/AdUnit.html#setImpOrtbConfig(java.lang.String)). | +| clearUserData() | None, removed. Can be replaced with [OpenRTB config](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/AdUnit.html#setImpOrtbConfig(java.lang.String)). | +| setOrtbConfig() | [setImpOrtbConfig()](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/AdUnit.html#setImpOrtbConfig(java.lang.String)) or [TargetingParams.setGlobalOrtbConfig()](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/TargetingParams.html#setGlobalOrtbConfig(java.lang.String)) | + +### AdUnit + +{: .table .table-bordered .table-striped } + +| Removed | Alternative | +|----------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| setAutoRefreshPeriodMillis() | [setAutoRefreshInterval()](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/AdUnit.html#setAutoRefreshInterval(int)) | +| fetchDemand(OnCompleteListener2) | [fetchDemand(OnFetchDemandResult)](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/AdUnit.html#fetchDemand(org.prebid.mobile.api.original.OnFetchDemandResult)) | + +### BannerAdUnit + +{: .table .table-bordered .table-striped } + +| Removed | Alternative | +|---------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| setParameters() | [setBannerParameters()](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/BannerBaseAdUnit.html#setBannerParameters(org.prebid.mobile.BannerParameters)) | +| getParameters() | [getBannerParameters()](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/BannerBaseAdUnit.html#getBannerParameters()) | +| Internal Parameters class | [BannerParameters](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/BannerParameters.html) | + +--- + +### InterstitialAdUnit + +{: .table .table-bordered .table-striped } + +| Removed | Alternative | +|---------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| setParameters() | [setBannerParameters()](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/BannerBaseAdUnit.html#setBannerParameters(org.prebid.mobile.BannerParameters)) | +| getParameters() | [getBannerParameters()](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/BannerBaseAdUnit.html#getBannerParameters()) | +| Internal Parameters class | [VideoParameters](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/VideoParameters.html) | + +--- + +### VideoAdUnit + +The class was removed. +Alternative - [BannerAdUnit](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/BannerAdUnit.html) with +video ad format. + +### VideoInterstitialAdUnit + +The class was removed. +Alternative - [InterstitialAdUnit](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/InterstitialAdUnit.html) +with video ad format. + +### Support Classes - TargetingParams + +{: .table .table-bordered .table-striped } + +| Removed | Alternative | +|------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| setUserAge() | Deprecated in OpenRTB, removed. Can be replaced with [OpenRTB config](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/AdUnit.html#setImpOrtbConfig(java.lang.String)) | +| getUserAge() | None, removed. | +| getYearOfBirth() | Deprecated in OpenRTB. Removed. | +| setYearOfBirth() | Deprecated in OpenRTB, removed. Can be replaced with [OpenRTB config](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/AdUnit.html#setImpOrtbConfig(java.lang.String)) | +| GENDER | Deprecated in OpenRTB. Removed. | +| getGender() | Deprecated in OpenRTB. Removed. | +| setGender() | Deprecated in OpenRTB, removed. Can be replaced with [OpenRTB config](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/AdUnit.html#setImpOrtbConfig(java.lang.String)) | +| setUserId() | None, removed. Can be replaced with [TargetingParams.setGlobalOrtbConfig()](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/TargetingParams.html#setGlobalOrtbConfig(java.lang.String)) | +| getUserId() | None, removed. | +| setBuyerId() | None, removed. Can be replaced with [TargetingParams.setGlobalOrtbConfig()](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/TargetingParams.html#setGlobalOrtbConfig(java.lang.String)) | +| getBuyerId() | None, removed. | +| getUserCustomData() | None, removed. | +| setUserCustomData() | None, removed. Can be replaced with [TargetingParams.setGlobalOrtbConfig()](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/TargetingParams.html#setGlobalOrtbConfig(java.lang.String)) | +| storeExternalUserId() | [setExternalUserIds()](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/TargetingParams.html#setExternalUserIds(java.util.List)) and [getExternalUserIds()](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/TargetingParams.html#getExternalUserIds()) | +| fetchStoredExternalUserId() | [setExternalUserIds()](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/TargetingParams.html#setExternalUserIds(java.util.List)) and [getExternalUserIds()](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/TargetingParams.html#getExternalUserIds()) | +| fetchStoredExternalUserIds() | [setExternalUserIds()](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/TargetingParams.html#setExternalUserIds(java.util.List)) and [getExternalUserIds()](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/TargetingParams.html#getExternalUserIds()) | +| removeStoredExternalUserId() | [setExternalUserIds()](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/TargetingParams.html#setExternalUserIds(java.util.List)) and [getExternalUserIds()](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/TargetingParams.html#getExternalUserIds()) | +| clearStoredExternalUserIds() | [setExternalUserIds()](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/TargetingParams.html#setExternalUserIds(java.util.List)) and [getExternalUserIds()](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/TargetingParams.html#getExternalUserIds()) | + +### ExternalUserId + +{: .table .table-bordered .table-striped } + +| Removed | Alternative | +|------------------------------------------------|------------------------------| +| ExternalUserId(source, identifier, atype, ext) | [ExternalUserId(source, uids)](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/ExternalUserId.html#%3Cinit%3E(java.lang.String,java.util.List)) | +| getAtype() | Use [UniqueId](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/ExternalUserId.UniqueId.html) class. | +| setAtype() | Use [UniqueId](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/ExternalUserId.UniqueId.html) class. | +| getIdentifier() | Use [UniqueId](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/ExternalUserId.UniqueId.html) class. | +| setIdentifier() | Use [UniqueId](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/ExternalUserId.UniqueId.html) class. | + +### PrebidNativeAd + +{: .table .table-bordered .table-striped } + +| Removed | Alternative | +|-------------------------------------------------|------------------------------------| +| registerView(view, listener) | [registerView(view, list, listener)](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/PrebidNativeAd.html#registerView(android.view.View,java.util.List,org.prebid.mobile.PrebidNativeAdEventListener)) | +| registerViewList(container, viewList, listener) | [registerView(view, list, listener)](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/PrebidNativeAd.html#registerView(android.view.View,java.util.List,org.prebid.mobile.PrebidNativeAdEventListener)) | + +### AdFormat + +{: .table .table-bordered .table-striped } + +| Removed | Alternative | +|---------|-------------| +| DISPLAY | [BANNER](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/api/data/AdUnitFormat.html#BANNER) | + +### Host + +{: .table .table-bordered .table-striped } + +| Removed | Alternative | +|----------|---------------------------------------------------------------| +| APPNEXUS | "" | +| RUBICON | "" | + +### NativeImageAsset + +{: .table .table-bordered .table-striped } + +| Removed | Alternative | +|--------------------|------------------------------------| +| NativeImageAsset() | [NativeImageAsset(w, h, minw, minh)](https://docs.prebid.org/prebid-mobile-android/org/prebid/mobile/NativeImageAsset.html#%3Cinit%3E(int,int,int,int)) | + +### Other Changes + +- Removed deprecated `InitError` class. +- Removed deprecated `SdkInitListener` interface. +- Removed deprecated `OnCompleteListener` interface. +- Introduced `SdkInitialization` listener without deprecated callbacks. diff --git a/prebid-mobile/updates-3.0/ios/api-changes.md b/prebid-mobile/updates-3.0/ios/api-changes.md new file mode 100644 index 0000000000..a71c43f751 --- /dev/null +++ b/prebid-mobile/updates-3.0/ios/api-changes.md @@ -0,0 +1,243 @@ +--- +layout: page_v2 +title: Prebid Mobile 3.0 API Changes +description: Prebid Mobile 3.0 API Changes +pid: 1 +top_nav_section: prebid-mobile +nav_section: prebid-mobile-ios +sidebarType: 2 +--- + + + +# Prebid Mobile 3.0 API Changes +{:.no_toc} + +This page provides a detailed list of removed APIs in PrebidMobile SDK 3.0, along with their corresponding recommended replacements. + +- TOC +{:toc} + +## Elimination of Deprecated Functionality + +PrebidMobile 3.0 introduces significant changes and removes several deprecated features. Below is a detailed breakdown of these removals, and how publishers should migrate to the new alternatives. + +### Targeting + +{: .table .table-bordered .table-striped } + +| Removed | Alternative | +| -------------------------------------- | --------------------------------- | +| buyerUID | [setGlobalORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/Targeting.html#/c:@M@PrebidMobile@objc(cs)Targeting(im)setGlobalORTBConfig:) | +| userCustomData | [setGlobalORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/Targeting.html#/c:@M@PrebidMobile@objc(cs)Targeting(im)setGlobalORTBConfig:) | +| locationPrecision | None, removed | +| setLocationPrecision(\_:) | None, removed | +| getLocationPrecision() | None, removed | +| setCustomParams(\_:) | [setGlobalORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/Targeting.html#/c:@M@PrebidMobile@objc(cs)Targeting(im)setGlobalORTBConfig:) | +| addCustomParam(\_:withName:) | None, removed | +| addUserData(key:value:) | [userExt](https://docs.prebid.org/prebid-mobile-ios/Classes/Targeting.html#/c:@M@PrebidMobile@objc(cs)Targeting(py)userExt), [setGlobalORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/Targeting.html#/c:@M@PrebidMobile@objc(cs)Targeting(im)setGlobalORTBConfig:) | +| updateUserData(key:value:) | None, removed | +| removeUserData(for:) | None, removed | +| clearUserData() | None, removed | +| getUserData() | None, removed | +| userDataDictionary | None, removed | +| userKeywords | [getUserKeywords()](https://docs.prebid.org/prebid-mobile-ios/Classes/Targeting.html#/c:@M@PrebidMobile@objc(cs)Targeting(im)getUserKeywords) | +| addContextData(key:value:) | [addAppExtData(key:value:)](https://docs.prebid.org/prebid-mobile-ios/Classes/Targeting.html#/c:@M@PrebidMobile@objc(cs)Targeting(im)addAppExtDataWithKey:value:) | +| updateContextData(key:value:) | [updateAppExtData(key:value:)](https://docs.prebid.org/prebid-mobile-ios/Classes/Targeting.html#/c:@M@PrebidMobile@objc(cs)Targeting(im)updateAppExtDataWithKey:value:) | +| removeContextData(for:) | [removeAppExtData(for:)](https://docs.prebid.org/prebid-mobile-ios/Classes/Targeting.html#/c:@M@PrebidMobile@objc(cs)Targeting(im)removeAppExtDataFor:) | +| clearContextData() | [clearAppExtData()](https://docs.prebid.org/prebid-mobile-ios/Classes/Targeting.html#/c:@M@PrebidMobile@objc(cs)Targeting(im)clearAppExtData) | +| getContextData() | [getAppExtData()](https://docs.prebid.org/prebid-mobile-ios/Classes/Targeting.html#/c:@M@PrebidMobile@objc(cs)Targeting(im)getAppExtData) | +| contextDataDictionary | [getAppExtData()](https://docs.prebid.org/prebid-mobile-ios/Classes/Targeting.html#/c:@M@PrebidMobile@objc(cs)Targeting(im)getAppExtData) | +| addContextKeyword(\_:) | [addAppKeyword(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/Targeting.html#/c:@M@PrebidMobile@objc(cs)Targeting(im)addAppKeyword:) | +| addContextKeywords(\_:) | [addAppKeywords(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/Targeting.html#/c:@M@PrebidMobile@objc(cs)Targeting(im)addAppKeywords:) | +| removeContextKeyword(\_:) | [removeAppKeyword(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/Targeting.html#/c:@M@PrebidMobile@objc(cs)Targeting(im)removeAppKeyword:) | +| clearContextKeywords() | [clearAppKeywords()](https://docs.prebid.org/prebid-mobile-ios/Classes/Targeting.html#/c:@M@PrebidMobile@objc(cs)Targeting(im)clearAppKeywords) | +| getContextKeywords() | [getAppKeywords()](https://docs.prebid.org/prebid-mobile-ios/Classes/Targeting.html#/c:@M@PrebidMobile@objc(cs)Targeting(im)getAppKeywords) | +| contextKeywords | [getAppKeywords()](https://docs.prebid.org/prebid-mobile-ios/Classes/Targeting.html#/c:@M@PrebidMobile@objc(cs)Targeting(im)getAppKeywords) | +| yearOfBirth | None, deprecated by ORTB. | +| setYearOfBirth(yob:) | [setGlobalORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/Targeting.html#/c:@M@PrebidMobile@objc(cs)Targeting(im)setGlobalORTBConfig:) | +| getYearOfBirth() | None, deprecated by ORTB. | +| clearYearOfBirth() | None, deprecated by ORTB. | +| userGender | [setGlobalORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/Targeting.html#/c:@M@PrebidMobile@objc(cs)Targeting(im)setGlobalORTBConfig:) | +| userGenderDescription() | None, deprecated by ORTB. | +| userID | [setGlobalORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/Targeting.html#/c:@M@PrebidMobile@objc(cs)Targeting(im)setGlobalORTBConfig:) | +| eids | [Targeting.shared.setExternalUserIds(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/Targeting.html#/c:@M@PrebidMobile@objc(cs)Targeting(im)setExternalUserIds:) | +| storeExternalUserId(\_:) | None, removed | +| fetchStoredExternalUserIds() | None, removed | +| fetchStoredExternalUserId(\_ source:) | None, removed | +| removeStoredExternalUserId(\_ source:) | None, removed | +| removeStoredExternalUserIds() | None, removed | + +### Prebid + +{: .table .table-bordered .table-striped } + +| Removed | Alternative | +| -------------------------------------- | ------------------------------------------------ | +| bidderNameAppNexus | None, removed | +| bidderNameRubiconProject | None, removed | +| externalUserIdArray | [Targeting.shared.setExternalUserIds(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/Targeting.html#/c:@M@PrebidMobile@objc(cs)Targeting(im)setExternalUserIds:) | +| prebidServerHost | [initializeSDK(serverURL:)](https://docs.prebid.org/prebid-mobile-ios/Classes/Prebid.html#/c:@M@PrebidMobile@objc(cs)Prebid(cm)initializeSDKWithServerURL:error::) | +| useExternalClickthroughBrowser | None, removed | +| impClickbrowserType | None, removed | +| setCustomPrebidServer(url:) | [initializeSDK(serverURL:)](https://docs.prebid.org/prebid-mobile-ios/Classes/Prebid.html#/c:@M@PrebidMobile@objc(cs)Prebid(cm)initializeSDKWithServerURL:error::) | +| initializeSDK(_:_:) | [initializeSDK(serverURL:_:_)](https://docs.prebid.org/prebid-mobile-ios/Classes/Prebid.html#/c:@M@PrebidMobile@objc(cs)Prebid(cm)initializeSDKWithServerURL::error::) | +| initializeSDK(gadMobileAdsVersion:\_:) | [initializeSDK(serverURL:gadMobileAdsVersion:\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/Prebid.html#/c:@M@PrebidMobile@objc(cs)Prebid(cm)initializeSDKWithServerURL:gadMobileAdsVersion:error::) | +| initializeSDK(\_:) | [initializeSDK(serverURL:\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/Prebid.html#/c:@M@PrebidMobile@objc(cs)Prebid(cm)initializeSDK::) | + +### AdUnit + +{: .table .table-bordered .table-striped } + +| Removed | Alternative | +| ----------------------------- | ------------------------------- | +| addContextData(key:value:) | [setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/AdUnit.html#/c:@M@PrebidMobile@objc(cs)AdUnit(im)setImpORTBConfig:) | +| updateContextData(key:value:) | None, removed | +| removeContextData(forKey:) | None, removed | +| clearContextData() | None, removed | +| addContextKeyword(\_:) | [setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/AdUnit.html#/c:@M@PrebidMobile@objc(cs)AdUnit(im)setImpORTBConfig:) | +| addContextKeywords(\_:) | [setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/AdUnit.html#/c:@M@PrebidMobile@objc(cs)AdUnit(im)setImpORTBConfig:) | +| removeContextKeyword(\_:) | None, removed | +| clearContextKeywords() | None, removed | +| addExtKeyword(\_:) | [setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/AdUnit.html#/c:@M@PrebidMobile@objc(cs)AdUnit(im)setImpORTBConfig:) | +| addExtKeywords(\_:) | [setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/AdUnit.html#/c:@M@PrebidMobile@objc(cs)AdUnit(im)setImpORTBConfig:) | +| removeExtKeyword(\_:) | None, removed | +| clearExtKeywords() | None, removed | +| addExtData(key:value:) | [setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/AdUnit.html#/c:@M@PrebidMobile@objc(cs)AdUnit(im)setImpORTBConfig:) | +| updateExtData(key:value:) | None, removed | +| removeExtData(forKey:) | None, removed | +| clearExtData() | None, removed | +| setAppContent(\_:) | [Targeting.shared.setGlobalORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/Targeting.html#/c:@M@PrebidMobile@objc(cs)Targeting(im)setGlobalORTBConfig:) | +| getAppContent() | None, removed | +| clearAppContent() | None, removed | +| addAppContentData(\_:) | [Targeting.shared.setGlobalORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/Targeting.html#/c:@M@PrebidMobile@objc(cs)Targeting(im)setGlobalORTBConfig:) | +| removeAppContentData(\_:) | None, removed | +| clearAppContentData() | None, removed | +| getUserData() | None, removed | +| addUserData(\_:) | [Targeting.shared.setGlobalORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/Targeting.html#/c:@M@PrebidMobile@objc(cs)Targeting(im)setGlobalORTBConfig:) | +| removeUserData(\_:) | None, removed | +| clearUserData() | None, removed | +| setOrtbConfig(\_:) | [setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/AdUnit.html#/c:@M@PrebidMobile@objc(cs)AdUnit(im)setImpORTBConfig:) | +| getOrtbConfig() | [getImpORTBConfig()](https://docs.prebid.org/prebid-mobile-ios/Classes/AdUnit.html#/c:@M@PrebidMobile@objc(cs)AdUnit(im)getImpORTBConfig) | +| fetchDemand(completion:, \_:) | [fetchDemand(completionBidInfo:)](https://docs.prebid.org/prebid-mobile-ios/Classes/AdUnit.html#/c:@M@PrebidMobile@objc(cs)AdUnit(im)fetchDemandWithCompletionBidInfo:) | + +### PrebidRequest + +{: .table .table-bordered .table-striped } + +| Removed | Alternative | +| ------------------------------- | ------------------ | +| addExtData(key:value:) | [setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/PrebidRequest.html#/c:@M@PrebidMobile@objc(cs)PrebidRequest(im)setImpORTBConfig:) | +| updateExtData(key:value:) | None, removed | +| removeExtData(forKey:) | None, removed | +| clearExtData() | None, removed | +| addExtKeyword(\_:) | [setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/PrebidRequest.html#/c:@M@PrebidMobile@objc(cs)PrebidRequest(im)setImpORTBConfig:) | +| addExtKeywords(\_:) | [setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/PrebidRequest.html#/c:@M@PrebidMobile@objc(cs)PrebidRequest(im)setImpORTBConfig:) | +| removeExtKeyword(\_:) | None, removed | +| clearExtKeywords() | None, removed | +| setAppContent(\_:) | [setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/PrebidRequest.html#/c:@M@PrebidMobile@objc(cs)PrebidRequest(im)setImpORTBConfig:) | +| clearAppContent() | None, removed | +| addAppContentData(\_:) | [setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/PrebidRequest.html#/c:@M@PrebidMobile@objc(cs)PrebidRequest(im)setImpORTBConfig:) | +| removeAppContentDataObject(\_:) | None, removed | +| clearAppContentDataObjects() | None, removed | +| addUserData(\_:) | [setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/PrebidRequest.html#/c:@M@PrebidMobile@objc(cs)PrebidRequest(im)setImpORTBConfig:) | +| removeUserData(\_:) | None, removed | +| clearUserData() | None, removed | + +### ExternalUserId + +{: .table .table-bordered .table-striped } + +| Removed | Alternative | +| ---------------------------------- | ---------------------- | +| identifier | [uids[].id](https://docs.prebid.org/prebid-mobile-ios/Classes/ExternalUserId.html#/c:@M@PrebidMobile@objc(cs)ExternalUserId(py)uids) | +| atype | [uids[].atype](https://docs.prebid.org/prebid-mobile-ios/Classes/ExternalUserId.html#/c:@M@PrebidMobile@objc(cs)ExternalUserId(py)uids) | +| init(source:identifier:atype:ext:) | [init(source:uids:ext:)](https://docs.prebid.org/prebid-mobile-ios/Classes/ExternalUserId.html#/c:@M@PrebidMobile@objc(cs)ExternalUserId(im)initWithSource:uids:ext:) | + +### BannerAdUnit, InterstitialAdUnit + +{: .table .table-bordered .table-striped } + +| Removed | Alternative | +| ---------- | ---------------- | +| parameters | [BannerAdUnit.bannerParamters](https://docs.prebid.org/prebid-mobile-ios/Classes/BannerAdUnit.html#/c:@M@PrebidMobile@objc(cs)BannerAdUnit(py)bannerParameters), [InterstitialAdUnit.bannerParamters](https://docs.prebid.org/prebid-mobile-ios/Classes/InterstitialAdUnit.html#/c:@M@PrebidMobile@objc(cs)InterstitialAdUnit(py)bannerParameters) | + +### RewardedVideoAdUnit + +{: .table .table-bordered .table-striped } + +| Removed | Alternative | +| ---------- | --------------- | +| parameters | [videoParameters](https://docs.prebid.org/prebid-mobile-ios/Classes/RewardedVideoAdUnit.html#/c:@M@PrebidMobile@objc(cs)RewardedVideoAdUnit(py)videoParameters) | + +### BannerView, InterstitialRenderingAdUnit, RewardedAdUnit, MediationBannerAdUnit, MediationBaseInterstitialAdUnit, MediationNativeAdUnit + +{: .table .table-bordered .table-striped } + +| Removed | Alternative | +| ------------------------------- | ------------------------- | +| ortbConfig | [BannerView.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/BannerView.html#/c:@M@PrebidMobile@objc(cs)BannerView(im)setImpORTBConfig:), [InterstitialRenderingAdUnit.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/InterstitialRenderingAdUnit.html#/c:@M@PrebidMobile@objc(cs)InterstitialRenderingAdUnit(im)setImpORTBConfig:), [RewardedAdUnit.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/RewardedAdUnit.html#/c:@M@PrebidMobile@objc(cs)RewardedAdUnit(im)setImpORTBConfig:), [MediationBannerAdUnit.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/MediationBannerAdUnit.html#/c:@M@PrebidMobile@objc(cs)MediationBannerAdUnit(im)setImpORTBConfig:), [MediationBaseInterstitialAdUnit.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/MediationBaseInterstitialAdUnit.html#/c:@M@PrebidMobile@objc(cs)MediationBaseInterstitialAdUnit(im)setImpORTBConfig:), [MediationNativeAdUnit.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/MediationNativeAdUnit.html#/c:@M@PrebidMobile@objc(cs)MediationNativeAdUnit(im)setImpORTBConfig:) | +| addExtKeyword(\_:) | [BannerView.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/BannerView.html#/c:@M@PrebidMobile@objc(cs)BannerView(im)setImpORTBConfig:), [InterstitialRenderingAdUnit.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/InterstitialRenderingAdUnit.html#/c:@M@PrebidMobile@objc(cs)InterstitialRenderingAdUnit(im)setImpORTBConfig:), [RewardedAdUnit.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/RewardedAdUnit.html#/c:@M@PrebidMobile@objc(cs)RewardedAdUnit(im)setImpORTBConfig:), [MediationBannerAdUnit.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/MediationBannerAdUnit.html#/c:@M@PrebidMobile@objc(cs)MediationBannerAdUnit(im)setImpORTBConfig:), [MediationBaseInterstitialAdUnit.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/MediationBaseInterstitialAdUnit.html#/c:@M@PrebidMobile@objc(cs)MediationBaseInterstitialAdUnit(im)setImpORTBConfig:), [MediationNativeAdUnit.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/MediationNativeAdUnit.html#/c:@M@PrebidMobile@objc(cs)MediationNativeAdUnit(im)setImpORTBConfig:) | +| addExtKeywords(\_:) | [BannerView.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/BannerView.html#/c:@M@PrebidMobile@objc(cs)BannerView(im)setImpORTBConfig:), [InterstitialRenderingAdUnit.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/InterstitialRenderingAdUnit.html#/c:@M@PrebidMobile@objc(cs)InterstitialRenderingAdUnit(im)setImpORTBConfig:), [RewardedAdUnit.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/RewardedAdUnit.html#/c:@M@PrebidMobile@objc(cs)RewardedAdUnit(im)setImpORTBConfig:), [MediationBannerAdUnit.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/MediationBannerAdUnit.html#/c:@M@PrebidMobile@objc(cs)MediationBannerAdUnit(im)setImpORTBConfig:), [MediationBaseInterstitialAdUnit.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/MediationBaseInterstitialAdUnit.html#/c:@M@PrebidMobile@objc(cs)MediationBaseInterstitialAdUnit(im)setImpORTBConfig:), [MediationNativeAdUnit.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/MediationNativeAdUnit.html#/c:@M@PrebidMobile@objc(cs)MediationNativeAdUnit(im)setImpORTBConfig:) | +| removeExtKeyword(\_:) | None, removed | +| clearExtKeywords() | None, removed | +| addContextData(\_:forKey:) | [BannerView.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/BannerView.html#/c:@M@PrebidMobile@objc(cs)BannerView(im)setImpORTBConfig:), [InterstitialRenderingAdUnit.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/InterstitialRenderingAdUnit.html#/c:@M@PrebidMobile@objc(cs)InterstitialRenderingAdUnit(im)setImpORTBConfig:), [RewardedAdUnit.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/RewardedAdUnit.html#/c:@M@PrebidMobile@objc(cs)RewardedAdUnit(im)setImpORTBConfig:), [MediationBannerAdUnit.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/MediationBannerAdUnit.html#/c:@M@PrebidMobile@objc(cs)MediationBannerAdUnit(im)setImpORTBConfig:), [MediationBaseInterstitialAdUnit.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/MediationBaseInterstitialAdUnit.html#/c:@M@PrebidMobile@objc(cs)MediationBaseInterstitialAdUnit(im)setImpORTBConfig:), [MediationNativeAdUnit.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/MediationNativeAdUnit.html#/c:@M@PrebidMobile@objc(cs)MediationNativeAdUnit(im)setImpORTBConfig:) | +| updateContextData(\_:forKey:) | None, removed | +| removeContextDate(forKey:) | None, removed | +| clearContextData() | None, removed | +| addContextKeyword(\_:) | [BannerView.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/BannerView.html#/c:@M@PrebidMobile@objc(cs)BannerView(im)setImpORTBConfig:), [InterstitialRenderingAdUnit.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/InterstitialRenderingAdUnit.html#/c:@M@PrebidMobile@objc(cs)InterstitialRenderingAdUnit(im)setImpORTBConfig:), [RewardedAdUnit.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/RewardedAdUnit.html#/c:@M@PrebidMobile@objc(cs)RewardedAdUnit(im)setImpORTBConfig:), [MediationBannerAdUnit.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/MediationBannerAdUnit.html#/c:@M@PrebidMobile@objc(cs)MediationBannerAdUnit(im)setImpORTBConfig:), [MediationBaseInterstitialAdUnit.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/MediationBaseInterstitialAdUnit.html#/c:@M@PrebidMobile@objc(cs)MediationBaseInterstitialAdUnit(im)setImpORTBConfig:), [MediationNativeAdUnit.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/MediationNativeAdUnit.html#/c:@M@PrebidMobile@objc(cs)MediationNativeAdUnit(im)setImpORTBConfig:) | +| addContextKeywords(\_:) | [BannerView.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/BannerView.html#/c:@M@PrebidMobile@objc(cs)BannerView(im)setImpORTBConfig:), [InterstitialRenderingAdUnit.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/InterstitialRenderingAdUnit.html#/c:@M@PrebidMobile@objc(cs)InterstitialRenderingAdUnit(im)setImpORTBConfig:), [RewardedAdUnit.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/RewardedAdUnit.html#/c:@M@PrebidMobile@objc(cs)RewardedAdUnit(im)setImpORTBConfig:), [MediationBannerAdUnit.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/MediationBannerAdUnit.html#/c:@M@PrebidMobile@objc(cs)MediationBannerAdUnit(im)setImpORTBConfig:), [MediationBaseInterstitialAdUnit.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/MediationBaseInterstitialAdUnit.html#/c:@M@PrebidMobile@objc(cs)MediationBaseInterstitialAdUnit(im)setImpORTBConfig:), [MediationNativeAdUnit.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/MediationNativeAdUnit.html#/c:@M@PrebidMobile@objc(cs)MediationNativeAdUnit(im)setImpORTBConfig:) | +| removeContextKeyword(\_:) | None, removed | +| clearContextKeywords() | None, removed | +| addExtData(key:value:) | [BannerView.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/BannerView.html#/c:@M@PrebidMobile@objc(cs)BannerView(im)setImpORTBConfig:), [InterstitialRenderingAdUnit.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/InterstitialRenderingAdUnit.html#/c:@M@PrebidMobile@objc(cs)InterstitialRenderingAdUnit(im)setImpORTBConfig:), [RewardedAdUnit.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/RewardedAdUnit.html#/c:@M@PrebidMobile@objc(cs)RewardedAdUnit(im)setImpORTBConfig:), [MediationBannerAdUnit.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/MediationBannerAdUnit.html#/c:@M@PrebidMobile@objc(cs)MediationBannerAdUnit(im)setImpORTBConfig:), [MediationBaseInterstitialAdUnit.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/MediationBaseInterstitialAdUnit.html#/c:@M@PrebidMobile@objc(cs)MediationBaseInterstitialAdUnit(im)setImpORTBConfig:), [MediationNativeAdUnit.setImpORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/MediationNativeAdUnit.html#/c:@M@PrebidMobile@objc(cs)MediationNativeAdUnit(im)setImpORTBConfig:), | +| updateExtData(key:value:) | None, removed | +| removeExtData(forKey:) | None, removed | +| clearExtData() | None, removed | +| setAppContent(\_:) | [Targeting.shared.setGlobalORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/Targeting.html#/c:@M@PrebidMobile@objc(cs)Targeting(im)setGlobalORTBConfig:) | +| clearAppContent() | None, removed | +| addAppContentData(\_:) | [Targeting.shared.setGlobalORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/Targeting.html#/c:@M@PrebidMobile@objc(cs)Targeting(im)setGlobalORTBConfig:) | +| removeAppContentDataObject(\_:) | None, removed | +| clearAppContentDataObjects() | None, removed | +| addUserData(\_:) | [Targeting.shared.setGlobalORTBConfig(\_:)](https://docs.prebid.org/prebid-mobile-ios/Classes/Targeting.html#/c:@M@PrebidMobile@objc(cs)Targeting(im)setGlobalORTBConfig:) | +| removeUserData(\_:) | None, removed | +| clearUserData() | None, removed | + +### AdFormat + +{: .table .table-bordered .table-striped } + +| Removed | Alternative | +| ------- | ----------- | +| display | [banner](https://docs.prebid.org/prebid-mobile-ios/Classes/AdFormat.html#/c:@M@PrebidMobile@objc(cs)AdFormat(cpy)banner) | + +### Utils + +{: .table .table-bordered .table-striped } + +| Removed | Alternative | +| --------------------------------- | -------------- | +| convertDictToMoPubKeywords(dict:) | None, removed | + +### Host + +{: .table .table-bordered .table-striped } + +| Removed | Alternative | +| --------------------- | ------------------------------------ | +| setCustomHostURL(\_:) | [setHostURL(\_:nonTrackingURLString:)](https://docs.prebid.org/prebid-mobile-ios/Classes/Host.html#/c:@M@PrebidMobile@objc(cs)Host(im)setHostURL:nonTrackingURLString:error:) | +| getHostURL(host:) | [getHostURL()](https://docs.prebid.org/prebid-mobile-ios/Classes/Host.html#/c:@M@PrebidMobile@objc(cs)Host(im)getHostURLAndReturnError:) | + +### Other SDK Changes + +- `imp[].ext.data.adslot` is no longer sent in the request; +- Removed `VideoAdUnit`, alternative - [BannerAdUnit](https://docs.prebid.org/prebid-mobile-ios/Classes/BannerAdUnit.html) with video ad format; +- Removed `VideoInterstitialAdUnit`, alternative - [InterstitialAdUnit](https://docs.prebid.org/prebid-mobile-ios/Classes/InterstitialAdUnit.html) with video ad format; +- Removed `PrebidHost` without replacement; +- Removed `PrebidAdMobRewardedVideoAdapter`, alternative - `PrebidAdMobRewardedAdapter`. diff --git a/prebid-mobile/updates-3.0/sdk-key-features.md b/prebid-mobile/updates-3.0/sdk-key-features.md new file mode 100644 index 0000000000..032f33f2c6 --- /dev/null +++ b/prebid-mobile/updates-3.0/sdk-key-features.md @@ -0,0 +1,101 @@ +--- +layout: page_v2 +title: Prebid Mobile 3.0 Key Features +description: Prebid Mobile 3.0 Key Features +pid: 1 +top_nav_section: prebid-mobile +nav_section: prebid-mobile-ios +sidebarType: 2 +--- + +# Prebid Mobile 3.0 +{:.no_toc} + +Prebid Mobile 3.0 accumulates the results of about 500 closed PRs for both platforms, aiming to extend supported inventory and enhance bidding transparency for In-App publishers and advertisers. + +The current doc summarizes the key product features for the 3.0 milestone. + +- TOC +{:toc} + +## Rendering Delegation + +Documentation: [iOS](/prebid-mobile/pbm-api/ios/pbm-plugin-renderer.html), [Android](/prebid-mobile/pbm-api/android/pbm-plugin-renderer.html). + +Prebid Mobile introduces a standardized protocol for SDK developers to implement custom ad rendering solutions within In-App Prebid integration. This flexibility allows demand partners to move beyond default options like Prebid Universal Creative, Google Ad Manager (GAM), or other built-in rendering solutions, giving them full control over the ad rendering process with their preferred technology. + +For publishers, rendering delegation enhances ad quality and ensures a premium ad experience from trusted partners. + +## Rewarded Ad Unit + +Documentation: [iOS](/prebid-mobile/modules/rendering/ios-sdk-integration-pb.html#rewarded), [Android](/prebid-mobile/modules/rendering/android-sdk-integration-pb.html#rewarded). + +Prebid Mobile introduces an enhanced and more publisher-oriented `RewardedAdUnit`, allowing for greater customization, flexibility, and control over the rewarded ad experience, tailored to the specific needs of the publisher. The `RewardedAdUnit` implements special In-App behavior that should be configurable by the platform or publisher according to the application or ad experience guides. + +## Shared ID + +Documentation: [iOS](/prebid-mobile/pbm-api/ios/pbm-targeting-ios.html#shared-id), [Android](/prebid-mobile/pbm-api/android/pbm-targeting-android.html#shared-id). + +Prebid Mobile introduces a way for publishers to add a convenient [Prebid-owned first-party identifier](https://docs.prebid.org/identity/sharedid.html) to the bid requests. SharedID is a randomly generated first-party identifier that remains the same throughout the app sessions until reset. However, Shared ID values do not remain consistent across different apps on the same device. + +## Arbitrary OpenRTB + +Documentation: + +- [iOS Global Arbitrary OpenRTB](/prebid-mobile/pbm-api/ios/pbm-targeting-ios.html#arbitrary-openrtb) +- [iOS Impression-level Arbitrary OpenRTB](/prebid-mobile/pbm-api/ios/ios-sdk-integration-gam-original-api.md#arbitrary-openrtb) +- [Android Global Arbitrary OpenRTB](/prebid-mobile/pbm-api/android/pbm-targeting-android.html#arbitrary-openrtb) +- [Android Impression-level Arbitrary OpenRTB](/prebid-mobile/pbm-api/android/android-sdk-integration-gam-original-api.html#arbitrary-openrtb) + +Prebid Mobile introduces an API that enables publishers to customize the bid request according to their specific requirements. This customization can be done at two levels: global and impression level. + +## Multiformat Ad Unit in Bidding-only Scenario + +Documentation: [iOS](/prebid-mobile/recipes/subrecipes/ios/gam-bidding-only-multiformat.html), [Android](/prebid-mobile/recipes/subrecipes/android/gam-bidding-only-multiformat.html) + +Prebid Mobile introduces a way to make multiformat bid requests for a single ad unit, specifically within a bidding-only setup. By leveraging this functionality, publishers can request bids that support any combination of ad formats, including banner, video, and native ads, within a single unified request. The SDK's API was extended with the `PrebidAdUnit` and `PrebidRequest` classes responsible for managing multiformat bid requests. + +## Impression Tracking Enhancements + +Documentation: [iOS](/prebid-mobile/pbm-api/ios/ios-sdk-integration-gam-original-api.html#native-impression-tracking), [Android](/prebid-mobile/pbm-api/android/android-sdk-integration-gam-original-api.html#native-impression-tracking) + +Prebid Mobile introduces a native impression-tracking method that analyzes the application's view hierarchy at runtime and tracks billing URL(s) only when the ad view is present on the screen. Using this approach, publishers can report more accurate figures for the impression count. + +## Documentation Updates + +SDK API: [iOS](https://docs.prebid.org/prebid-mobile-ios/index.html), [Android](https://docs.prebid.org/prebid-mobile-android/index.html) + +Prebid completely reworked the documentation for Mobile in two ways: + +- Focusing on recipes that help publishers integrate header bidding demand in their app. What is available, and how does it work under the hood? This allows publishers to make informed decisions about which integration to use, considering all the pros and cons. +- Introducing auto-generated SDK API documentation, so publishers can always see the current and full description of the SDKs' classes, methods, and properties. + +## Support for Apple's ATT Framework + +Documentation: [iOS](/prebid-mobile/pbm-api/ios/code-integration-ios.html#handling-tracking-domains) + +Prebid Mobile introduces support for tracking domains in the initialization method of the SDK. Now, publishers can follow Apple's ATT requirements and specify both tracking and non-tracking URLs for the Prebid Server. + +## Support for SKAdNetwork + +Documentation: [iOS](/prebid-mobile/pbm-api/ios/ios-sdk-integration-gam-original-api.html#skadnetwork) + +Prebid Mobile introduces support for SKAdNetwork across all integration APIs, including Bidding-only and Rendering APIs. SKAdNetwork is a privacy-focused solution that allows ad networks to track app installs while protecting user data. These methods include view-through and StoreKit-rendered ads. + +## SKOverlay + +Documentation: [iOS](/prebid-mobile/pbm-api/ios/ios-sdk-integration-gam-original-api.html#skoverlay) + +Prebid Mobile introduces support for SKOverlay for interstitials. SKOverlay enables developers to present additional content or calls to action as an overlay on top of interstitial ads without interrupting the overall flow of the ad experience. + +## Video UX + +Documentation: [Ad Experience Controls](/prebid-mobile/modules/rendering/combined-ad-experience-controls.html#ad-experience-controls) + +Prebid Mobile introduces enhanced support and configuration of video ads, including interstitial, outstream, and rewarded ads. The configuration values can either be initialized based on the bid response or explicitly defined by the publisher, providing flexibility in managing the user experience. + +## API Cleanup + +Documentation: [iOS](/prebid-mobile/updates-3.0/ios/updates-3.0.html), [Android](/prebid-mobile/updates-3.0/android/updates-3.0.html) + +In the 3.0 release, the Prebid Mobile SDK gets rid of all previously deprecated methods in order to keep the API clean and minimalistic. Instead of using Ad Unit and configuration properties, the Prebid SDK encourages publishers to use methods to set [Arbitrary OpenRTB](#arbitrary-openrtb) parameters.