---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.6
alternate:
  - https://ads.yandex.com/helpcenter/en/dev/android/release/6-0-0-migration.md
  - https://ads.yandex.com/helpcenter/ru/dev/android/release/6-0-0-migration.md
  - https://ads.yandex.com/helpcenter/zh/dev/android/release/6-0-0-migration.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ads.yandex.com/helpcenter/zh/llms.txt


# 版本 6 迁移指南

<a href="dev/platforms"> <!--ссылка, куда ведет кнопка. Если внутренняя ссылка, пишем без .md и .html -->
<span class="button">其他平台</span> <!--текст на кнопке-->
</a>



{% note warning %}

请确保将您使用的 [Yandex 聚合](https://ads.yandex.com/helpcenter/zh/dev/android/list-network.md) 适配器和 [第三方聚合网络适配器](https://ads.yandex.com/helpcenter/zh/dev/android/third-party-mediation.md) 更新到最新版本。旧版本可能会导致适配器集成错误，从而导致您的广告无法投放。

{% endnote %}

## 手动初始化

手动 SDK 初始化流程已更改。现在，您需要在初始化应用时将回调传递给 `MobileAds.initialize()` 方法。

{% list tabs %}

- Kotlin

   ```kotlin
   MobileAds.initialize(this) {
       // 现在您可以使用广告了
   }
   ```

- Java

   ```java
   MobileAds.initialize(this, () -> {
       // 现在您可以使用广告了
   });
   ```
{% endlist %}

## 横幅

将 `AdSize` 类重命名为 `BannerAdSize`。删除了 `fixedSize(int width, int height)`、`flexibleSize(int width, int maxHeight)` 和 `stickySize(int width)` 方法。

根据广告类型使用方法：

使用 `BannerAdSize.stickySize(Context context, int width)` 方法创建自适应粘性横幅。

> 这是一个自动更新的小广告，放置在应用屏幕的顶部或底部。
>
> 广告与主要应用内容不重叠，常用于游戏应用中。
>
> 粘性横幅的高度是自动确定的，可根据设备的屏幕尺寸调整，并且不占用超过屏幕高度的 15%。

{% note warning %}

版本 6.0.0 添加了对自适应粘性横幅的自动刷新支持。

如果您之前已为粘性横幅实施了自动刷新，请禁用它。

{% endnote %}

要创建自适应内联横幅，请使用 `BannerAdSize.inlineSize(Context context, int width, int maxHeight)` 方法。

> 自适应内联横幅是一种灵活的横幅广告格式，通过优化每个设备上的广告尺寸，实现最大效率。
>
> 横幅的高度会自动调整，可能会达到设备屏幕的高度。
>
> 通常，这种格式在基于内容来源的应用或允许主要关注广告的上下文环境中使用。

为了向后兼容，我们添加了 `fixedSize(Context context, int width, int height)` 方法，以替代 `fixedSize(int width, int height)` 方法，但我们不建议使用该方法。请改用 `inlineSize(Context context, int width, int maxHeight)` 或 `stickySize(Context context, int width)`。在 SDK 6.0.0 中，横幅的高度是自动计算的，并且在发送广告请求之前已知。您可以在屏幕布局中使用此高度。

## 激励广告

我们改变了创建和加载广告的方法。我们现在提供 `RewardedAdLoader` 加载器对象，用于加载广告，以及从 `RewardedAdLoadListener` 加载器回调方法检索的 `RewardedAd` 广告对象。

要了解有关新 API 的更多信息，请参阅 [SDK 参考](https://doc-static.yandex.net/src/support/RSYA-RMP/mobile-ads/ru/javadoc/com/yandex/mobile/ads/rewarded/package-summary.html)。

#|
||
广告加载
| **SDK 5**

用于广告加载和呈现的单个对象：

{% list tabs %}

- Kotlin

   ```kotlin
   val rewardedAd = RewardedAd(this@Activity).apply {
       setAdUnitId("your-ad-unit-id")
       setAdEventListener(this)
       loadAd(adRequest)
   }
   ```

- Java

   ```java
   final RewardedAd rewardedAd = new RewardedAd(this);
   rewardedAd.setAdUnitId("your-ad-unit-id");
   rewardedAd.setAdEventListener(this);
   rewardedAd.loadAd(adRequest);
   ```
{% endlist %}

**SDK 6**

用于加载多个广告的 `RewardedAdLoader`：您不需要传递活动上下文来加载广告。

广告加载后（通过调用 `onAdLoaded(rewardedAd: RewardedAd)` 方法），在展示完成之前保存加载的 `RewardedAd` 的链接。

{% list tabs %}

- Kotlin

   ```kotlin
   val loader = RewardedAdLoader(context).apply {
       setAdLoadListener(object : RewardedAdLoadListener {
           override fun onAdLoaded(rewardedAd: RewardedAd) {
               // 将 rewardedAd 保存到本地变量
               // 现在 rewardedAd 已准备好展示
           }

           override fun onAdFailedToLoad(adRequestError: AdRequestError) {}
       })
   }
   loader.loadAd(AdRequestConfiguration.Builder("your-ad-unit-id").build())
   ```

- Java

   ```java
   final RewardedAdLoader loader = new RewardedAdLoader(this);
   loader.setAdLoadListener(new RewardedAdLoadListener() {
       @Override
       public void onAdLoaded(@NonNull RewardedAd rewardedAd) {
           // 将 rewardedAd 保存到本地变量
           // 现在 rewardedAd 已准备好展示
       }

       @Override
       public void onAdFailedToLoad(@NonNull AdRequestError adRequestError) {}
   });
   loader.loadAd(new AdRequestConfiguration.Builder("your-ad-unit-id").build());
   ```
{% endlist %}

||
||
广告呈现
| **SDK 5**

在展示广告之前，请查看广告是否已加载。

{% list tabs %}

- Kotlin

   ```kotlin
   if (rewardedAd.isLoaded()) {
       rewardedAd.show()
   }
   ```

- Java

   ```java
   if (rewardedAd.isLoaded()) {
       rewardedAd.show();
   }
   ```
{% endlist %}

**SDK 6**

您无需检查广告是否已加载。

广告加载器的 `onAdLoaded` 回调方法返回 `RewardedAd` 实例后，广告就准备好呈现了。

要呈现广告，您需要传递活动：

{% list tabs %}

- Kotlin

   ```kotlin
   rewardedAd.show(activity)
   ```

- Java

   ```java
   rewardedAd.show(activity);
   ```
{% endlist %}

||
||
`RewardedAd` 广告对象
| **SDK 5**

结合广告加载和呈现的类。

**SDK 6**

已加载广告的界面。添加了 `getInfo()` 方法来获取有关广告的信息。

{% list tabs %}

- Kotlin

   ```kotlin
   interface RewardedAd {
       fun setAdEventListener(rewardedAdEventListener: RewardedAdEventListener)

       fun show(activity: Activity)

       fun getInfo(): AdInfo
   }
   ```

- Java

   ```java
   interface RewardedAd {
       void setAdEventListener(@Nullable RewardedAdEventListener rewardedAdEventListener);

       void show(@NonNull Activity activity);

       @NonNull
       AdInfo getInfo();
   }
   ```
{% endlist %}

||
||
回调方法
| **SDK 5**

结合事件加载和呈现的单一回调方法接口：

{% list tabs %}

- Kotlin

   ```kotlin
   interface RewardedAdEventListener {

       fun onLoaded()

       fun onRewarded(reward: Reward)

       fun onAdFailedToLoad(adRequestError: AdRequestError)

       fun onAdShown()

       fun onAdDismissed()

       fun onLeftApplication()

       fun onReturnedToApplication()
   }
   ```

- Java

   ```java
   interface RewardedAdEventListener {

       public void onLoaded();

       public void onRewarded(@NonNull Reward reward);

       public void onAdFailedToLoad(@NonNull AdRequestError adRequestError);

       public void onAdShown();

       public void onAdDismissed();

       public void onLeftApplication();

       public void onReturnedToApplication();
   }
   ```
{% endlist %}

**SDK 6**

`RewardedAdEventListener` 接口分为两部分：加载 `RewardedAdLoadListener` 和呈现 `RewardedAdEventListener` 的回调方法。

删除了 `onLeftApplication()` 和 `onReturnedToApplication()` 方法。

添加了 `onAdFailedToShow(AdError)` 方法。

{% list tabs %}

- Kotlin

   ```kotlin
   interface RewardedAdLoadListener {
       fun onAdLoaded(rewardedAd: RewardedAd)

       fun onAdFailedToLoad(adRequestError: AdRequestError)
   }

   interface RewardedAdEventListener {
       fun onAdShown()

       fun onAdFailedToShow(adError: AdError)

       fun onAdDismissed()

       fun onAdClicked()

       fun onAdImpression(impressionData: ImpressionData)

       fun onRewarded(reward: Reward)
   }
   ```

- Java

   ```java
   interface RewardedAdLoadListener {
       void onAdLoaded(@NonNull RewardedAd rewardedAd);

       void onAdFailedToLoad(@NonNull AdRequestError adRequestError);
   }

   interface RewardedAdEventListener {
       void onAdShown();

       void onAdFailedToShow(@NonNull AdError adError);

       void onAdDismissed();

       void onAdClicked();

       void onAdImpression(@Nullable ImpressionData impressionData);

       void onRewarded(@NonNull Reward reward);
   }
   ```
{% endlist %}

||
||
清理 `RewardedAd` 广告对象
| **SDK 5**

调用 `onDestroy()` 方法并停止保留广告对象引用。

**SDK 6**

`onDestroy()` 方法已被移除。

要清理广告对象，请将 `null`传递给为 `rewardedAd.setAdEventListener` 回调方法设置监听器的函数，并停止保留广告对象引用：

{% list tabs %}

- Kotlin

   ```kotlin
   private fun destroyRewardedAd() {
       rewardedAd?.setAdEventListener(null)
       rewardedAd = null
   }
   ```

- Java

   ```java
   private void destroyRewardedAd() {
       if (mRewardedAd != null) {
           mRewardedAd.setAdEventListener(null);
           mRewardedAd = null;
       }
   }
   ```
{% endlist %}

||
|#

## 插屏广告

我们改变了创建和加载广告的方法。我们现在提供 `InterstitialAdLoader` 加载器对象，用于加载广告，以及从 `InterstitialAdLoadListener` 加载器回调方法检索的 `InterstitialAd` 广告对象。

有关新 API 的更多详细信息，请参阅 [SDK 参考](https://doc-static.yandex.net/src/support/RSYA-RMP/mobile-ads/ru/javadoc/com/yandex/mobile/ads/interstitial/package-summary.html)。

#|
||
广告加载
| **SDK 5**

用于广告加载和呈现的单个对象：

{% list tabs %}

- Kotlin

   ```kotlin
   val interstitialAd = InterstitialAd(this@Activity).apply {
   setAdUnitId("your-ad-unit-id")
   setAdEventListener(this)
   loadAd(adRequest)
   }
   ```

- Java

   ```java
   final InterstitialAd interstitialAd = new InterstitialAd(this);
   interstitialAd.setAdUnitId("your-ad-unit-id");
   interstitialAd.setAdEventListener(this);
   interstitialAd.loadAd(adRequest);
   ```
{% endlist %}

**SDK 6**

用于加载多个广告的 `InterstitialAdLoader`。您不需要传递活动上下文来加载广告。

广告加载后（通过调用 `onAdLoaded(interstitialAd: InterstitialAd)`方法），在展示完成之前保存加载的 `InterstitialAd` 的链接。

{% list tabs %}

- Kotlin

   ```kotlin
   val loader = InterstitialAdLoader(context).apply {
       setAdLoadListener(object : InterstitialAdLoadListener {
           override fun onAdLoaded(interstitialAd: InterstitialAd) {
               // 将 interstitialAd 保存到本地变量
               // 现在 interstitialAd 已准备好展示
           }

           override fun onAdFailedToLoad(adRequestError: AdRequestError) {}
       })
   }
   loader.loadAd(AdRequestConfiguration.Builder("your-ad-unit-id").build())
   ```

- Java

   ```java
   final InterstitialAdLoader loader = new InterstitialAdLoader(this);
   loader.setAdLoadListener(new InterstitialAdLoadListener() {
       @Override
       public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
           // 将 interstitialAd 保存到本地变量
           // 现在 interstitialAd 已准备好展示
       }

       @Override
       public void onAdFailedToLoad(@NonNull AdRequestError adRequestError) {}
   });
   loader.loadAd(new AdRequestConfiguration.Builder("your-ad-unit-id").build());
   ```
{% endlist %}

||
||
广告呈现
| **SDK 5**

{% list tabs %}

- Kotlin

   ```kotlin
   if (interstitialAd.isLoaded()) {
       interstitialAd.show()
   }
   ```

- Java

   ```java
   if (interstitialAd.isLoaded()) {
       interstitialAd.show();
   }
   ```
{% endlist %}

**SDK 6**

您无需检查广告是否已加载。

广告加载器的 `onAdLoaded` 回调方法返回 `InterstitialAd` 实例后，广告就准备好呈现了。

要呈现广告，您需要传递活动：

{% list tabs %}

- Kotlin

   ```kotlin
   interstitialAd.show(activity)
   ```

- Java

   ```java
   interstitialAd.show(activity);
   ```
{% endlist %}

||
||
`InterstitialAd` 广告对象
| **SDK 5**

结合了广告加载和呈现的类。

**SDK 6**

已加载广告的界面。添加了 `getInfo()` 方法来获取有关广告的信息。

{% list tabs %}

- Kotlin

   ```kotlin
   interface InterstitialAd {
       fun setAdEventListener(interstitialAdEventListener: InterstitialAdEventListener)

       fun show(activity: Activity)

       fun getInfo(): AdInfo
   }
   ```

- Java

   ```java
   interface InterstitialAd {
       void setAdEventListener(@Nullable InterstitialAdEventListener interstitialAdEventListener);

       void show(@NonNull Activity activity);

       @NonNull
       AdInfo getInfo();
   }
   ```
{% endlist %}

||
||
回调方法
| **SDK 5**

结合事件加载和呈现的单一回调方法接口：

{% list tabs %}

- Kotlin

   ```kotlin
   interface InterstitialAdEventListener {

       fun onLoaded()

       fun onAdFailedToLoad(adRequestError: AdRequestError)

       fun onAdShown()

       fun onAdDismissed()

       fun onLeftApplication()

       fun onReturnedToApplication()
   }
   ```

- Java

   ```java
   interface InterstitialAdEventListener {

       public void onLoaded();

       public void onAdFailedToLoad(@NonNull AdRequestError adRequestError);

       public void onAdShown();

       public void onAdDismissed();

       public void onLeftApplication();

       public void onReturnedToApplication();
   }
   ```
{% endlist %}

**SDK 6**

InterstitialAdEventListener` 接口分为两部分：`InterstitialAdLoadListener` 的加载回调方法和 `InterstitialAdEventListener` 的呈现方法。

删除了 `onLeftApplication()` 和 `onReturnedToApplication()` 方法。

添加了 `onAdFailedToShow(AdError)` 方法。

{% list tabs %}

- Kotlin

   ```kotlin
   interface InterstitialAdLoadListener {
       fun onAdLoaded(interstitialAd: InterstitialAd)

       fun onAdFailedToLoad(adRequestError: AdRequestError)
   }

   interface InterstitialAdEventListener {
       fun onAdShown()

       fun onAdFailedToShow(adError: AdError)

       fun onAdDismissed()

       fun onAdClicked()

       fun onAdImpression(impressionData: ImpressionData)
   }
   ```

- Java

   ```java
   interface InterstitialAdLoadListener {
       void onAdLoaded(@NonNull InterstitialAd interstitialAd);

       void onAdFailedToLoad(@NonNull AdRequestError adRequestError);
   }

   interface InterstitialAdEventListener {
       void onAdShown();

       void onAdFailedToShow(@NonNull AdError adError);

       void onAdDismissed();

       void onAdClicked();

       void onAdImpression(@Nullable ImpressionData impressionData);
   }
   ```
{% endlist %}

||
||
清理 `InterstitialAd` 广告对象
| **SDK 5**

调用 `onDestroy()` 方法并停止保留广告对象引用。

**SDK 6**

`onDestroy()` 方法已被移除。

要清理广告对象，请将 `null` 传递给为 `interstitialAd.setAdEventListener` 回调方法设置监听器的函数，并停止保留广告对象引用：

{% list tabs %}

- Kotlin

   ```kotlin
   private fun destroyInterstitialAd() {
       interstitialAd?.setAdEventListener(null)
       interstitialAd = null
   }
   ```

- Java

   ```java
   private void destroyInterstitialAd() {
       if (mInterstitialAd != null) {
           mInterstitialAd.setAdEventListener(null);
           mInterstitialAd = null;
       }
   }
   ```
{% endlist %}

||
|#

## 开屏广告

添加了新的广告格式：开屏广告。如需了解更多信息，请参阅 [开屏广告](https://ads.yandex.com/helpcenter/zh/dev/android/app-open-ad.md)。

## Yandex 聚合

{% note warning %}

请确保将您使用的 [Yandex 聚合](https://ads.yandex.com/helpcenter/zh/dev/android/list-network.md) 适配器和 [第三方聚合网络适配器](https://ads.yandex.com/helpcenter/zh/dev/android/third-party-mediation.md) 更新到最新版本。旧版本可能会导致适配器集成错误，从而导致您的广告无法投放。

{% endnote %}

### 新适配器版本

**Yandex 聚合适配器的当前版本（截至 SDK 6.0.1 版本起）：**

```
"com.yandex.ads.mediation:mobileads-adcolony": "4.8.0.6",
"com.yandex.ads.mediation:mobileads-applovin": "11.11.2.0",
"com.yandex.ads.mediation:mobileads-chartboost": "9.3.1.0",
"com.yandex.ads.mediation:mobileads-google": "22.2.0.0",
"com.yandex.ads.mediation:mobileads-inmobi": "10.5.5.0",
"com.yandex.ads.mediation:mobileads-ironsource": "7.4.0.0",
"com.yandex.ads.mediation:mobileads-mintegral": "16.4.71.1",
"com.yandex.ads.mediation:mobileads-mytarget": "5.18.0.0",
"com.yandex.ads.mediation:mobileads-pangle": "5.3.0.4.1",
"com.yandex.ads.mediation:mobileads-startapp": "4.11.0.2",
"com.yandex.ads.mediation:mobileads-tapjoy": "13.1.2.0",
"com.yandex.ads.mediation:mobileads-unityads": "4.8.0.0",
"com.yandex.ads.mediation:mobileads-vungle": "6.12.1.3",
```

**适用于第三方广告聚合平台的适配器的当前版本（截至 SDK 6.0.1 版本）：**

```
"com.yandex.ads.adapter:admob-mobileads": "6.0.1.0",
"com.yandex.ads.adapter:ironsource-mobileads": "6.0.1.0"
```

### 重命名 Google AdMob (ex. AdMob) 适配器

将 `com.yandex.ads.mediation:mobileads-admob` 构件重命名为 `com.yandex.ads.mediation:mobileads-google`。

如果您使用标准化的 Yandex 聚合构建，则无需执行任何操作。如果您手动添加适配器，请替换项目中的 gradle 依赖项。

#|
|| **SDK 5**
```gradle
implementation 'com.yandex.ads.mediation:mobileads-admob:<version>'
```
| **SDK 6**
```gradle
implementation 'com.yandex.ads.mediation:mobileads-google:<version>'
```
||
|#

您可以在此处查找完整的集成示例：

* <!-- source: zh/dev/_includes/github-pubdev-links.md -->
  [GitHub](https://github.com/yandexmobile/yandex-ads-sdk-android) 链接。
  <!-- endsource: zh/dev/_includes/github-pubdev-links.md -->

