Download and import the APS Unity plugin from Amazon Publisher Services.
To install or upgrade the Amazon Publisher Services adapter, select Amazon > Manage SDKs from the Unity menu bar. When the Amazon SDK Manager appears, click Install next to AppLovin MAX.

The Amazon Publisher Services SDK requires that you initialize it outside MAX SDK:
Amazon.Initialize(amazonAppId);
To integrate Amazon banner or MREC ads into MAX, you must load the Amazon ad first.
Before you create the MAX banner or MREC ad, pass the response object into MaxSdk.
You can do this by calling MaxSdk#SetBannerLocalExtraParameter() or MaxSdk#SetMRecLocalExtraParameter()
For auto-refreshing banner ads, load the ad only once.
public class MainMenu : MonoBehaviour
{
⋮
private void loadAd()
{
int width;
int height;
string slotId;
if (MaxSdkUtils.IsTablet())
{
width = 728;
height = 90;
slotId = "«Amazon-leader-slot-ID»";
}
else
{
width = 320;
height = 50;
slotId = "«Amazon-banner-slot-ID»";
}
var apsBanner = new APSBannerAdRequest(width, height, slotId, new AdNetworkInfo(ApsAdNetwork.MAX));
apsBanner.onSuccess += (adResponse) =>
{
MaxSdk.SetBannerLocalExtraParameter(«ad-unit-ID», "amazon_ad_response", adResponse.GetResponse());
CreateMaxBannerAd();
};
apsBanner.onFailedWithError += (adError) =>
{
MaxSdk.SetBannerLocalExtraParameter(«ad-unit-ID», "amazon_ad_error", adError.GetAdError());
CreateMaxBannerAd();
};
apsBanner.LoadAd();
}
private void CreateMaxBannerAd()
{
MaxSdk.CreateBanner(«ad-unit-ID», MaxSdk.BannerPosition.BottomCenter);
MaxSdk.SetBannerPlacement(«ad-unit-ID», "«placement»");
}
}public class MainMenu : MonoBehaviour
{
⋮
private void loadAd()
{
var apsMRec = new APSBannerAdRequest(300, 250, «Amazon-MREC-slot-ID», new AdNetworkInfo(ApsAdNetwork.MAX));
apsMRec.onSuccess += (adResponse) =>
{
MaxSdk.SetMRecLocalExtraParameter(«ad-unit-ID», "amazon_ad_response", adResponse.GetResponse());
CreateMaxMRecAd();
};
apsMRec.onFailedWithError += (adError) =>
{
MaxSdk.SetMRecLocalExtraParameter(«ad-unit-ID», "amazon_ad_error", adError.GetAdError());
CreateMaxMRecAd();
};
apsMRec.LoadAd();
}
private void CreateMaxMRecAd()
{
MaxSdk.CreateMRec(«ad-unit-ID», MaxSdk.AdViewPosition.Centered);
MaxSdk.setMRecPlacement(«ad-unit-ID», "«placement»");
}
}To integrate Amazon interstitial ads into MAX, you must load the Amazon ad first.
Before you create the MAX intersitital ad, pass the response object into MaxSdk.
You can do this by calling MaxSdk#SetInterstitialLocalExtraParameter()
You must load and pass the Amazon response object into MaxSdk as the local extra parameter only once per session.
public class MainMenu : MonoBehaviour
{
private bool IsFirstLoad = true;
private void LoadAd()
{
if (IsFirstLoad)
{
IsFirstLoad = false;
var interstitialAd = new APSInterstitialAdRequest(«Amazon-inter-slot-ID», new AdNetworkInfo(ApsAdNetwork.MAX));
interstitialAd.onSuccess += (adResponse) =>
{
MaxSdk.SetInterstitialLocalExtraParameter(«ad-unit-ID», "amazon_ad_response", adResponse.GetResponse());
MaxSdk.LoadInterstitial(«ad-unit-ID»);
};
interstitialAd.onFailedWithError += (adError) =>
{
MaxSdk.SetInterstitialLocalExtraParameter(«ad-unit-ID», "amazon_ad_error", adError.GetAdError());
MaxSdk.LoadInterstitial(«ad-unit-ID»);
};
interstitialAd.LoadAd();
}
else
{
MaxSdk.LoadInterstitial(«ad-unit-ID»);
}
}
}public class MainMenu : MonoBehaviour
{
private bool IsFirstLoad = true;
private void LoadAd()
{
if (IsFirstLoad)
{
IsFirstLoad = false;
var interstitialVideoAd = new APSVideoAdRequest(320, 480, «Amazon-video-inter-slot-ID», new AdNetworkInfo(ApsAdNetwork.MAX));
interstitialVideoAd.onSuccess += (adResponse) =>
{
MaxSdk.SetInterstitialLocalExtraParameter(«ad-unit-ID», "amazon_ad_response", adResponse.GetResponse());
MaxSdk.LoadInterstitial(«ad-unit-ID»);
};
interstitialVideoAd.onFailedWithError += (adError) =>
{
MaxSdk.SetInterstitialLocalExtraParameter(«ad-unit-ID», "amazon_ad_error", adError.GetAdError());
MaxSdk.LoadInterstitial(«ad-unit-ID»);
};
interstitialVideoAd.LoadAd();
}
else
{
MaxSdk.LoadInterstitial(«ad-unit-ID»);
}
}
}To integrate Amazon rewarded video ads into MAX, you must load the Amazon ad first.
Before you load the MAX ad, pass the response object into MaxSdk.
You can do this by calling MaxSdk#SetRewardedAdLocalExtraParameter()
You must load and pass the Amazon response object into MaxSdk as the local extra parameter only once per session.
public class MainMenu : MonoBehaviour
{
private bool IsFirstLoad = true;
private void LoadAd()
{
if (IsFirstLoad)
{
IsFirstLoad = false;
var rewardedVideoAd = new APSVideoAdRequest(320, 480, «Amazon-video-rewarded-slot-ID», new AdNetworkInfo(ApsAdNetwork.MAX));
rewardedVideoAd.onSuccess += (adResponse) =>
{
MaxSdk.SetRewardedAdLocalExtraParameter(«ad-unit-ID», "amazon_ad_response", adResponse.GetResponse());
MaxSdk.LoadRewardedAd(«ad-unit-ID»);
};
rewardedVideoAd.onFailedWithError += (adError) =>
{
MaxSdk.SetRewardedAdLocalExtraParameter(«ad-unit-ID», "amazon_ad_error", adError.GetAdError());
MaxSdk.LoadRewardedAd(«ad-unit-ID»);
};
rewardedVideoAd.LoadAd();
}
else
{
MaxSdk.LoadRewardedAd(«ad-unit-ID»);
}
}
}
AppLovin recommends that you enable test mode for Amazon’s SDK. When you do, you receive test ads. Enable test mode with the following calls:
Amazon.EnableLogging(true);
Amazon.EnableTesting(true);