选择要集成的广告平台

在将第三方 SDK 集成到自己的移动端资产中时,您需要为此类集成承担全部责任。 您和第三方 SDK 提供商必须确保数据处理过程符合规定并且妥善处理任何基于用户或设备的隐私选择或标记。

您可以通过两种方式下载 MAX 聚合适配器并将其集成到应用中:

Gradle
AppLovin 建议采用这种方式集成适配器。 AppLovin 的适配器 POM 文件会自动集成被聚合平台的 SDK 及其依赖。
开源适配器
如果需要更高的集成灵活性,则可以集成 AppLovin 的开源适配器。 此时,您将负责集成被聚合 SDK 及其依赖。 您可以在 AppLovn-MAX-SDK-Android GitHub 库中找到这些适配器。

请勿更改适配器的名称或包名。 否则,MAX SDK 将无法识别适配器,广告也无法加载。

Gradle

勾选下方复选框,选择要通过 MAX 聚合接入的广告平台。 勾选这些复选框后,本页面会显示这些平台的具体说明。

本页面还会为您定制一个 Gradle 脚本。 将下方的自定义 Gradle 脚本复制到您的应用层级 build.gradle

  • Amazon
  • BidMachine
  • BIGO Ads
  • Chartboost
  • DT Exchange
  • Google Ad Manager
  • Google Bidding and Google AdMob
  • HyprMX
  • InMobi
  • ironSource
  • Liftoff Monetize
  • LINE
  • Maio
  • Meta Audience Network
  • Mintegral
  • MobileFuse
  • Moloco
  • Ogury
  • Pangle
  • PubMatic
  • Smaato
  • Unity Ads
  • Verve
  • VK Ad Network
  • Yandex
  • YSO Network
  • // build.gradle
    repositories {
        google()
        mavenCentral()
        maven { url "https://artifactory.bidmachine.io/bidmachine" }
        maven { url "https://cboost.jfrog.io/artifactory/chartboost-ads/" }
        maven { url "https://imobile-maio.github.io/maven" }
        maven { url "https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea" }
        maven { url "https://maven.ogury.co" }
        maven { url "https://artifact.bytedance.com/repository/pangle" }
        maven { url "https://repo.pubmatic.com/artifactory/public-repos" }
        maven { url "https://s3.amazonaws.com/smaato-sdk-releases/" }
        maven { url "https://verve.jfrog.io/artifactory/verve-gradle-release" }
        maven { url "https://ysonetwork.s3.eu-west-3.amazonaws.com/sdk/android" }
    
    }
    
    dependencies {
        implementation 'com.applovin:applovin-sdk:+'
        implementation 'com.applovin.mediation:amazon-tam-adapter:+'
        implementation 'com.amazon.android:aps-sdk:+'
        implementation 'com.applovin.mediation:bidmachine-adapter:+'
        implementation 'com.applovin.mediation:bigoads-adapter:+'
        implementation 'com.applovin.mediation:chartboost-adapter:+'
        implementation 'com.google.android.gms:play-services-base:16.1.0'
        implementation 'com.applovin.mediation:fyber-adapter:+'
        implementation 'com.applovin.mediation:google-ad-manager-adapter:+'
        implementation 'com.applovin.mediation:google-adapter:+'
        implementation 'com.applovin.mediation:hyprmx-adapter:+'
        implementation 'com.applovin.mediation:inmobi-adapter:+'
        implementation 'com.squareup.picasso:picasso:2.8'
        implementation 'androidx.recyclerview:recyclerview:1.1.0'
        implementation 'com.applovin.mediation:ironsource-adapter:+'
        implementation 'com.applovin.mediation:vungle-adapter:+'
        implementation 'com.applovin.mediation:line-adapter:+'
        implementation 'com.applovin.mediation:maio-adapter:+'
        implementation 'com.applovin.mediation:facebook-adapter:+'
        implementation 'com.applovin.mediation:mintegral-adapter:+'
        implementation 'com.applovin.mediation:mobilefuse-adapter:+'
        implementation 'com.applovin.mediation:moloco-adapter:+'
        implementation 'com.applovin.mediation:ogury-presage-adapter:+'
        implementation 'com.applovin.mediation:bytedance-adapter:+'
        implementation 'com.applovin.mediation:pubmatic-adapter:+'
        implementation 'com.applovin.mediation:smaato-adapter:+'
        implementation 'com.applovin.mediation:unityads-adapter:+'
        implementation 'com.applovin.mediation:verve-adapter:+'
        implementation 'com.applovin.mediation:mytarget-adapter:+'
        implementation 'com.applovin.mediation:yandex-adapter:+'
        implementation 'com.applovin.mediation:yso-network-adapter:+'
    
    }

    迁移至 AndroidX

    将 AndroidX 库集成到您的项目中。 参阅 Migrate to AndroidX 指南,了解有关如何迁移项目的更多信息。

    使用 Google AdSense、AdManager 或 AdMob 的开发者和发行商必须使用经过 Google 认证的许可管理平台 (CMP)。 要向欧洲经济区 (EEA) 或英国的用户投放广告,您的 CMP 必须集成 IAB 的透明度和许可框架。 请参阅 Privacy: “TCF v2 Consent” 了解更多信息。

    添加您的 Google 竞价和 Google AdMob / Google Ad Manager 应用 ID

    在应用的 AndroidManifest.xml 中,在 <application> 标签内添加一个 <meta-data> 标签。 以下示例展示了此标签的正确属性。 请用您的 Google 竞价和 Google AdMob / Google Ad Manager 应用 ID 替换 «your-admob-app-id»

    <?xml version="1.0" encoding="utf-8"?>
    <manifest … >
      <application … >
        <meta-data
          android:name="com.google.android.gms.ads.APPLICATION_ID"
          android:value="«your-admob-app-id»"/>
        ⋮
      </application>
    </manifest>

    Gradle 错误

    Google AdMob 需要Android Gradle 插件 4.2.0 或更高版本,Gradle 6.7.1 或更高版本。 如果看到以下错误信息,请更新 Android Gradle 插件和 Gradle 版本:

    AAPT: error: unexpected element <property> found in <manifest><application>.
    

    compileSdkVersion

    Google 移动广告 SDK 23.1.0 及更新版本要求 compileSdkVersion 为 34 或更高。

    在应用的 build.gradle 中将 compileSdkVersion 设置为 34 或更高。

    请参阅 Google 移动广告 SDK 发行说明,了解最新的 compileSdkVersion 要求。

    初始化 Amazon SDK

    Amazon Publisher Services SDK 需要在 MAX SDK 之外进行初始化:

    // Amazon requires an 'Activity' instance
    AdRegistration.getInstance( "AMAZON_APP_ID", this );
    AdRegistration.setMRAIDSupportedVersions( new String[] { "1.0", "2.0", "3.0" } );
    AdRegistration.setMRAIDPolicy( MRAIDPolicy.CUSTOM );

    从 Amazon SDK 加载横幅或 MREC 广告

    要在 MAX 中集成 Amazon 广告,则必须先加载 Amazon 广告。 在加载 MAX 广告之前,将 DTBAdResponseAdError 传递至 MaxAdView 实例。 您可以通过调用 MaxAdView#setLocalExtraParameter() 来完成此操作。

    对于自动刷新横幅广告,只需加载广告一次。

    class ExampleActivity
            extends Activity
    {
      ⋮
    
      private void loadAd()
      {
        String amazonAdSlotId;
        MaxAdFormat adFormat;
    
        if ( AppLovinSdkUtils.isTablet( getApplicationContext() ) )
        {
          amazonAdSlotId = "«Amazon-leader-slot-ID»";
          adFormat = MaxAdFormat.LEADER;
        }
        else
        {
          amazonAdSlotId = "«Amazon-banner-slot-ID»";
          adFormat = MaxAdFormat.BANNER;
        }
    
        // Raw size will be 320x50 for BANNERs on phones, and 728x90 for LEADERs on tablets
        AppLovinSdkUtils.Size rawSize = adFormat.getSize();
        DTBAdSize size = new DTBAdSize( rawSize.getWidth(), rawSize.getHeight(), amazonAdSlotId );
    
        DTBAdRequest adLoader = new DTBAdRequest( getApplicationContext(), new DTBAdNetworkInfo( ApsAdNetwork.MAX ) );
        adLoader.setSizes( size );
        adLoader.loadAd( new DTBAdCallback()
        {
          @Override
          public void onSuccess(@NonNull final DTBAdResponse dtbAdResponse)
          {
            // 'adView' is your instance of MaxAdView
            adView.setLocalExtraParameter( "amazon_ad_response", dtbAdResponse );
            adView.loadAd();
          }
    
          @Override
          public void onFailure(@NonNull final AdError adError)
          {
            // 'adView' is your instance of MaxAdView
            adView.setLocalExtraParameter( "amazon_ad_error", adError );
            adView.loadAd();
          }
        } );
      }
    }

    从 Amazon SDK 加载插屏广告

    要集成 Amazon 插屏广告到 MAX,您必须先加载 Amazon 广告。 在加载 MAX 广告之前,将 DTBAdResponseAdError 传递至 MaxInterstitialAd 实例。您可以通过调用 MaxInterstitialAd#setLocalExtraParameter() 来完成此操作。

    在每个会话中,您只能加载一次 Amazon DTBAdResponseDTBAdErrorInfo 并将其发送到 MaxInterstitialAd 实例。

    class ExampleActivity
           extends Activity
    {
      private static MaxInterstitialAd interstitialAd; // static to ensure only one instance exists
      private static boolean           isFirstLoad = true;
    
      private void loadAd()
      {
        if ( isFirstLoad )
        {
          isFirstLoad = false;
    
          if ( interstitialAd == null )
          {
            interstitialAd = new MaxInterstitialAd( "«MAX-inter-ad-unit-ID»" );
          }
    
          DTBAdRequest adLoader = new DTBAdRequest( getApplicationContext(), new DTBAdNetworkInfo( ApsAdNetwork.MAX ) );
          adLoader.setSizes( new DTBAdSize.DTBInterstitialAdSize( "«Amazon-inter-slot-ID»" ) );
          adLoader.loadAd( new DTBAdCallback()
          {
            @Override
            public void onSuccess(@NonNull final DTBAdResponse dtbAdResponse)
            {
              // 'interstitialAd' is your instance of MaxInterstitialAd
              interstitialAd.setLocalExtraParameter( "amazon_ad_response", dtbAdResponse );
              interstitialAd.loadAd();
            }
    
            @Override
            public void onFailure(@NonNull final AdError adError)
            {
              // 'interstitialAd' is your instance of MaxInterstitialAd
              interstitialAd.setLocalExtraParameter( "amazon_ad_error", adError );
              interstitialAd.loadAd();
            }
          } );
        }
        else
        {
          interstitialAd.loadAd();
        }
      }
    }

    从 Amazon SDK 加载视频插屏广告

    要集成 Amazon 视频插屏广告到 MAX,您必须先加载 Amazon 广告。 在加载 MAX 广告之前,将 DTBAdResponseAdError 传递至 MaxInterstitialAd 实例。 您可以通过调用 MaxInterstitialAd#setLocalExtraParameter() 来完成此操作。

    在每个会话中,您只能加载一次 DTBAdResponseDTBAdErrorInfo 并将其发送到 MaxInterstitialAd 实例。

    class ExampleActivity
           extends Activity
    {
      private static MaxInterstitialAd interstitialAd; // static to ensure only one instance exists
      private static boolean           isFirstLoad = true;
    
      private void loadAd()
      {
        if ( isFirstLoad )
        {
          isFirstLoad = false;
    
          if ( interstitialAd == null )
          {
            interstitialAd = new MaxInterstitialAd( "«MAX-inter-ad-unit-ID»" );
          }
    
          DTBAdRequest adLoader = new DTBAdRequest( getApplicationContext(), new DTBAdNetworkInfo( ApsAdNetwork.MAX ) );
    
          // Switch video player width and height values(320, 480) depending on device orientation
          adLoader.setSizes( new DTBAdSize.DTBVideo(320, 480, "«Amazon-video-inter-slot-ID»") );
          adLoader.loadAd( new DTBAdCallback()
          {
            @Override
            public void onSuccess(@NonNull final DTBAdResponse dtbAdResponse)
            {
              // 'interstitialAd' is your instance of MaxInterstitialAd
              interstitialAd.setLocalExtraParameter( "amazon_ad_response", dtbAdResponse );
              interstitialAd.loadAd();
            }
    
            @Override
            public void onFailure(@NonNull final AdError adError)
            {
              // 'interstitialAd' is your instance of MaxInterstitialAd
              interstitialAd.setLocalExtraParameter( "amazon_ad_error", adError );
              interstitialAd.loadAd();
            }
          } );
        }
        else
        {
          interstitialAd.loadAd();
        }
      }
    }

    从 Amazon SDK 加载激励视频广告

    要在 MAX 中集成 Amazon 激励视频,请先加载 Amazon 广告。 在加载 MAX 广告之前,将 DTBAdResponseAdError 传递至 MaxRewardedAd 实例。您可以通过调用 MaxRewardedAd#setLocalExtraParameter() 来完成此操作。

    在每个会话中,您只能加载一次 DTBAdResponseAdError 并将其发送到 MaxRewardedAd 实例。

    class ExampleActivity
            extends Activity
    {
      private static MaxRewardedAd rewardedAd; // static to ensure only one instance exists
      private static boolean       isFirstLoad = true;
    
      private void loadAd()
      {
        if ( isFirstLoad )
        {
          isFirstLoad = false;
    
          if ( rewardedAd == null )
          {
            rewardedAd = MaxRewardedAd.getInstance( "«MAX-rewarded-ad-unit-ID»" );
          }
    
          DTBAdRequest adLoader = new DTBAdRequest( getApplicationContext(), new DTBAdNetworkInfo( ApsAdNetwork.MAX ) );
    
          // Switch video player width and height values(320, 480) depending on device orientation
          adLoader.setSizes( new DTBAdSize.DTBVideo( 320, 480, "«Amazon-video-rewarded-slot-ID»" ) );
          adLoader.loadAd( new DTBAdCallback()
          {
            @Override
            public void onSuccess(@NonNull final DTBAdResponse dtbAdResponse)
            {
              // 'rewardedAd' is your instance of MaxRewardedAd
              rewardedAd.setLocalExtraParameter( "amazon_ad_response", dtbAdResponse );
              rewardedAd.loadAd();
            }
    
            @Override
            public void onFailure(@NonNull final AdError adError)
            {
              // 'rewardedAd' is your instance of MaxRewardedAd
              rewardedAd.setLocalExtraParameter( "amazon_ad_error", adError );
              rewardedAd.loadAd();
            }
          } );
        }
        else
        {
          rewardedAd.loadAd();
        }
      }
    }

    测试 Amazon Publisher Services

    AppLovin 建议您为 Amazon SDK 启用测试模式, 以便接收测试广告。 通过进行以下调用来启用测试模式:

    AdRegistration.enableTesting( true );
    AdRegistration.enableLogging( true );

    您可以过滤瀑布流,使其只包含 Amazon 广告。 为此,请在Mediation Debugger中选择Select Live Network,然后选择 Amazon 平台。

    Meta Audience Network 数据处理选项

    如果您不想启用限制数据使用 (LDU) 模式,请向 SetDataProcessingOptions() 传递一个空字符串数组:

    import com.facebook.ads.AdSettings;
    ⋮
    AdSettings.setDataProcessingOptions( new String[] {} );
    ⋮
    // Initialize MAX SDK

    要为用户启用 LDU 并指定用户地理位置,请以如下形式调用 SetDataProcessingOptions()

    import com.facebook.ads.AdSettings;
    ⋮
    AdSettings.setDataProcessingOptions( new String[] {"LDU"}, «country», «state» );
    ⋮
    // Initialize MAX SDK

    使用 Google UMP

    如果您使用 Google UMP 作为 CMP,则可以判断用户是否已向 Meta 授予许可。 为此,请使用如下代码:

    Boolean hasMetaConsent = AppLovinPrivacySettings.getAdditionalConsentStatus( 89 );
    if ( hasMetaConsent != null )
    {
      // Set Meta Data Processing Options accordingly.
    }
    else
    {
      // AC String is not available on disk. Please check for consent status after the user completes the CMP flow.
    }

    Meta Audience Network 加利福尼亚州用户的数据处理选项

    要了解如何在加利福尼亚州启用 Meta Audience Network 的 “Limited Data Use” (限制数据使用) 标记,请访问 Meta 开发者文档

    混淆

    如果您使用代码混淆或资源缩减,请遵循 Pangle 的混淆指南

    Android Manifest 合并错误

    一些平台 SDK 会在其打包的 Android Manifest 文件中使用 <queries> 元素。 如果使用的 Android Gradle 插件版本不兼容,则会导致以下编译错误之一:

    com.android.builder.internal.aapt.v2.Aapt2Exception: Android resource linking failed
    error: unexpected element <queries> found in <manifest>.
    

    要修复此错误,请升级至以下 Android Gradle 插件版本之一。 这些版本支持 <queries> 元素:

    请升级 Android Gradle 插件,而非 Gradle Build Tools。

    当前 Android Gradle 插件版本支持 <queries> 元素的版本
    4.1.*全部
    4.0.*4.0.1+
    3.6.*3.6.4+
    3.5.*3.5.4+
    3.4.*3.4.3+
    3.3.*3.3.3+

    适配器平台信息

    加载中……


    这篇文章有帮助吗?
    这篇文章有帮助吗?
    search