Developers
Keep your mediation setup.
Choose the integration model that fits your app. Orivia can manage the mediation call, or your app can request an Orivia recommendation and make the call itself. Your existing ad-network relationships remain unchanged.
Integration
Two integration models
Both keep your mediation platform and ad-network relationships. They differ in who makes the call to MAX.
- Managed
Orivia makes the mediation call
The SDK optimizes the floor or selects an ad unit, then sends the mediation call.
What changes in your code
- Initialize through OriviaMaxSdk, which also initializes MAX.
- Load and show interstitial and rewarded ads through OriviaMaxSdk. It retries failed loads for you.
- Banners stay on your own MAX code.
Guides: Android Managed guide (opens in a new tab) · iOS Managed guide (opens in a new tab) · Unity Managed guide (opens in a new tab)
- Integration
Your app requests a recommendation
Your app receives the recommendation and makes the mediation call itself.
What changes in your code
- Initialize Orivia after MAX, with your default ad units.
- Forward MAX load, load-failure and revenue callbacks to OriviaMaxHelper.
- Ask OriviaMaxHelper for the ad unit before each load, then call MAX as before.
Guides: Android Integration guide (opens in a new tab) · iOS Integration guide (opens in a new tab) · Unity Integration guide (opens in a new tab)
Compatibility
Platform compatibility
Availability and next steps vary by mediation platform.
| Mediation platform | Status | Details |
|---|---|---|
| AppLovin MAX | Production | Production support documented for Android, iOS and Unity across interstitial, rewarded and banner formats. |
| Google AdMob | Testing partner needed | Publisher testing partner needed before production commitment. |
| Unity LevelPlay | Technical confirmation | Technical confirmation required at the ad-load integration point. |
| Other mediation | Technical review | Technical review required. |
Reviewed October 2026. Orivia provides SDKs for Android, iOS and Unity; production status depends on the mediation platform listed above.
Quick start
Integrate with AppLovin MAX
The managed model in four steps. For the recommendation model, follow the Integration guide for your platform.
Add the SDK
Add the Orivia SDK and its AppLovin MAX module.
Add the Orivia Maven repository and both modules.
repositories { maven { url = uri("https://raw.githubusercontent.com/orivia-ai/orivia-maven/main") } } dependencies { implementation("ai.orivia:monetization:1.18.0") implementation("ai.orivia:mediation-max:1.18.0") }Add the Orivia specs repository and both pods, then run pod install.
source 'https://github.com/orivia-ai/orivia-specs.git' source 'https://cdn.cocoapods.org/' pod 'OriviaMonetization', '1.18.0' pod 'OriviaMonetizationMax', '1.18.0'Import the orivia-sdk-max .unitypackage we provide, then reference the namespace.
using Orivia.Monetization;Initialize
Initialize with your publisher ID and default ad units. Orivia fetches its configuration, then initializes MAX. The default ad units are your fallback: use units with no floor or a $0.01 floor.
private val oriviaMaxSdk: OriviaMaxSdk by lazy { OriviaMaxSdk.getInstance(context) } fun start() { oriviaMaxSdk.onInterstitialLoadedListener = OriviaMaxSdk.OnAdLoadedListener { // Ad is ready to show. isInterstitialReady() == true. } oriviaMaxSdk.onRewardedLoadedListener = OriviaMaxSdk.OnAdLoadedListener { // Ad is ready to show. isRewardedReady() == true. } oriviaMaxSdk.init( sdkKey = MAX_SDK_KEY, publisherId = ORIVIA_PUBLISHER_ID, defaultInterstitialAdUnitId = INTERSTITIAL_AD_UNIT_ID, defaultRewardedAdUnitId = REWARDED_AD_UNIT_ID, initListener = { // Both Orivia SDK and MAX are ready — safe to start loading oriviaMaxSdk.loadInterstitial() oriviaMaxSdk.loadRewarded() } ) }func start() { OriviaMaxSdk.shared.onInterstitialLoaded = { // Ad is ready to show. isInterstitialReady() == true. } OriviaMaxSdk.shared.onRewardedLoaded = { // Ad is ready to show. isRewardedReady() == true. } OriviaMaxSdk.shared.initialize( sdkKey: maxSdkKey, publisherId: oriviaPublisherId, defaultInterstitialAdUnitId: interstitialAdUnitId, defaultRewardedAdUnitId: rewardedAdUnitId ) { // Both Orivia SDK and MAX are ready — safe to start loading OriviaMaxSdk.shared.loadInterstitial() OriviaMaxSdk.shared.loadRewarded() } }void Start() { OriviaMaxSdk.OnInterstitialLoaded += OnInterstitialLoaded; OriviaMaxSdk.OnRewardedLoaded += OnRewardedLoaded; MaxSdk.SetSdkKey(MaxSdkKey); OriviaMaxSdk.Init( publisherId: OriviaPublisherId, defaultInterstitialAdUnitId: InterstitialAdUnitId, defaultRewardedAdUnitId: RewardedAdUnitId, initListener: new InitListener() ); } private class InitListener : OriviaMaxSdk.IInitListener { public void OnInitFinished() { // Both Orivia SDK and MAX are ready — safe to start loading OriviaMaxSdk.LoadInterstitial(); OriviaMaxSdk.LoadRewarded(); } }Make the mediation call
Load and show through Orivia. Placement and custom data pass straight through to MAX.
oriviaMaxSdk.loadInterstitial() if (oriviaMaxSdk.isInterstitialReady()) { oriviaMaxSdk.showInterstitial("level_end") }OriviaMaxSdk.shared.loadInterstitial() if OriviaMaxSdk.shared.isInterstitialReady() { OriviaMaxSdk.shared.showInterstitial(placement: "level_end") }OriviaMaxSdk.LoadInterstitial(); if (OriviaMaxSdk.IsInterstitialReady) OriviaMaxSdk.ShowInterstitial("level_end");Validate
In a debug build, turn on logging and check that initialization completes and ads load and show. Remove it before release. Our team reviews the integration with you before any traffic is allocated.
oriviaMaxSdk.setLoggingEnabled(true)OriviaMaxSdk.shared.setLoggingEnabled(true)OriviaMaxSdk.SetLoggingEnabled(true);
Fallback
Fallback behavior
- Asynchronous optimization keeps ad requests moving. If Orivia times out, the SDK returns your configured default ad unit.
- You choose the default. At initialization, supply a default ad unit with no floor or a $0.01 floor.
- You stay in control. Adjust the test allocation or disable Orivia through dynamic configuration.
Fallback secures an impression opportunity, but it does not recreate custom ad-unit chains or parallel calls.
Data
What Orivia uses
Core inputs are ad requests, impressions and revenue data. Click data is not currently required. Publishers may supply additional behavioral context. Inputs support floor optimization, not ad targeting.
How the SDK reads consent is covered in the Privacy section of each platform guide.
Documentation and support
Platform guides
- Android Managed MAX (opens in a new tab)
- Android Integration (MAX) (opens in a new tab)
- iOS Managed MAX (opens in a new tab)
- iOS Integration (MAX) (opens in a new tab)
- Unity Managed MAX (opens in a new tab)
- Unity Integration (opens in a new tab)
AdMob guides are in the SDK documentation (opens in a new tab).
Want an implementation review?
Tell us about your app and setup. Our team will go through the integration with you.
Find the revenue already inside your traffic.
Start with one app and controlled traffic. Measure the results before expanding.
Start a Test