Eseguire la migrazione degli annunci nativi

Questa pagina fornisce un confronto tra le implementazioni degli annunci nativi nell'SDK Google Mobile Ads (beta) e in quello attuale.

Caricare un annuncio

La seguente tabella confronta l'implementazione chiave durante il caricamento di un annuncio nativo:

Obiettivo di implementazione Attuale SDK Google Mobile Ads (beta)
Specifica i tipi di annunci nativi Tramite metodi unici su AdLoader. All'interno della richiesta di annuncio.
Gestire il callback di caricamento riuscito degli annunci Ogni tipo di annuncio nativo ha un callback separato. Un'unica interfaccia NativeAdLoaderCallback gestisce il caricamento degli annunci per tutti i tipi di annunci nativi.
Gestire il callback relativo all'errore di caricamento degli annunci In un listener separato. Entro NativeAdLoaderCallback.

Caricare un annuncio nativo

I seguenti esempi caricano un annuncio nativo:

Attuale

Kotlin

val adLoader =
  AdLoader.Builder(this, AD_UNIT_ID)
    .forNativeAd(object : NativeAd.OnNativeAdLoadedListener {
      override fun onNativeAdLoaded(nativeAd: NativeAd) {
        // Native ad loaded.
      }
    })
    .withAdListener(
      object : AdListener() {
        override fun onAdFailedToLoad(loadAdError: LoadAdError) {
          // Native ad failed to load.
        }
      }
    )
    .build()

adLoader.loadAd(AdRequest.Builder().build())

Java

AdLoader adLoader = new AdLoader.Builder(this, AD_UNIT_ID)
    .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
      @Override
      public void onNativeAdLoaded(NativeAd nativeAd) {
        // Native ad loaded.
      }
    })
    .withAdListener(new AdListener() {
      @Override
      public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
        // Native ad failed to load.
      }
    })
    .build();

adLoader.loadAd(new AdRequest.Builder().build());
SDK Google Mobile Ads (beta)

Kotlin

NativeAdLoader.load(
  NativeAdRequest.Builder(AD_UNIT_ID, listOf(NativeAd.NativeAdType.NATIVE)).build(),
  object : NativeAdLoaderCallback {
    override fun onNativeAdLoaded(nativeAd: NativeAd) {
      // Native ad loaded.
    }

    override fun onAdFailedToLoad(adError: LoadAdError) {
      // Native ad failed to load.
    }
  }
)

Java

NativeAdLoader.load(
  new NativeAdRequest.Builder(AD_UNIT_ID, List.of(NativeAd.NativeAdType.NATIVE)).build(),
  new NativeAdLoaderCallback() {
    @Override
    public void onNativeAdLoaded(NativeAd nativeAd) {
      // Native ad loaded.
    }

    @Override
    public void onAdFailedToLoad(LoadAdError adError) {
      // Native ad failed to load.
    }
  }
);

Caricare un annuncio nativo personalizzato

I seguenti esempi caricano un annuncio nativo personalizzato:

Attuale

Kotlin

val adLoader =
  AdLoader.Builder(this, AD_UNIT_ID)
    .forCustomFormatAd(CUSTOM_FORMAT_ID,
      object: NativeCustomFormatAd.OnCustomFormatAdLoadedListener {
        override fun onCustomFormatAdLoaded(nativeCustomFormatAd: NativeCustomFormatAd) {
          // Custom native ad loaded.
        }
      },
      object: NativeCustomFormatAd.OnCustomClickListener {
        override fun onCustomClick(
          nativeCustomFormatAd: NativeCustomFormatAd,
          assetName: String
        ) {
          // Custom native ad recorded a click.
        }
      })
    .withAdListener(
      object : AdListener() {
        override fun onAdFailedToLoad(loadAdError: LoadAdError) {
          // Custom native ad failed to load.
        }
      }
    )
    .build()

adLoader.loadAd(AdRequest.Builder().build())

Java

AdLoader adLoader = new AdLoader.Builder(this, AD_UNIT_ID)
    .forCustomFormatAd(CUSTOM_FORMAT_ID,
        new NativeCustomFormatAd.OnCustomFormatAdLoadedListener() {
          @Override
          public void onCustomFormatAdLoaded(NativeCustomFormatAd nativeCustomFormatAd) {
            // Custom native ad loaded.
          }
        },
        new NativeCustomFormatAd.OnCustomClickListener() {
          @Override
          public void onCustomClick(NativeCustomFormatAd nativeCustomFormatAd, String assetName) {
            // Custom native ad recorded a click.
          }
        })
    .withAdListener(new AdListener() {
      @Override
      public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
        // Custom native ad failed to load.
      }
    })
    .build();

adLoader.loadAd(new AdRequest.Builder().build());
SDK Google Mobile Ads (beta)

Kotlin

NativeAdLoader.load(
  NativeAdRequest
    .Builder(AD_UNIT_ID, listOf(NativeAd.NativeAdType.CUSTOM_NATIVE))
    .setCustomFormatIds(listOf(CUSTOM_FORMAT_ID))
    .build(),
  object : NativeAdLoaderCallback {
    override fun onCustomNativeAdLoaded(customNativeAd: CustomNativeAd) {
      // Custom native ad loaded.
    }

    override fun onAdFailedToLoad(adError: LoadAdError) {
      // Custom native ad failed to load.
    }
  }
)

Java

NativeAdLoader.load(
    new NativeAdRequest.Builder(AD_UNIT_ID, List.of(NativeAdType.CUSTOM_NATIVE))
        .setCustomFormatIds(List.of(CUSTOM_FORMAT_ID))
        .build(),
    new NativeAdLoaderCallback() {
      @Override
      public void onCustomNativeAdLoaded(CustomNativeAd customNativeAd) {
        // Custom native ad loaded.
      }

      @Override
      public void onAdFailedToLoad(LoadAdError adError) {
        // Custom native ad failed to load.
      }
    }
);

Impostare le opzioni dell'annuncio nativo

I seguenti esempi impostano le opzioni degli annunci nativi:

Attuale

Nell'SDK Mobile Ads attuale, imposta le opzioni dell'annuncio nativo su AdLoader.Builder.

Kotlin

val videoOptions = VideoOptions.Builder().setStartMuted(true).build()

val adLoader =
  AdLoader.Builder(this, AD_UNIT_ID)
    .withNativeAdOptions(NativeAdOptions.Builder().setVideoOptions(videoOptions).build())
    .build()

Java

VideoOptions videoOptions = new VideoOptions.Builder()
    .setStartMuted(true)
    .build();

AdLoader adLoader = new AdLoader.Builder(this, AD_UNIT_ID)
    .withNativeAdOptions(new NativeAdOptions.Builder()
        .setVideoOptions(videoOptions)
        .build())
    .build();
SDK Google Mobile Ads (beta)

Nell'SDK Google Mobile Ads (beta), imposta le opzioni degli annunci nativi su NativeAdRequest.Builder.

Kotlin

val videoOptions = VideoOptions.Builder().setStartMuted(true).build()

val nativeAdRequest = NativeAdRequest
  .Builder(AD_UNIT_ID, listOf(NativeAd.NativeAdType.NATIVE))
  .setVideoOptions(videoOptions)
  .build()

Java

VideoOptions videoOptions = new VideoOptions.Builder().setStartMuted(true).build();

NativeAdRequest nativeAdRequest = new NativeAdRequest
    .Builder(AD_UNIT_ID, List.of(NativeAd.NativeAdType.NATIVE))
    .setVideoOptions(videoOptions)
    .build();

Impostare i callback degli eventi degli annunci nativi

I seguenti esempi impostano i callback degli eventi degli annunci nativi:

Attuale

I callback degli eventi degli annunci nativi devono essere registrati prima del caricamento dell'annuncio.

Kotlin

val adLoader =
  AdLoader.Builder(this, AD_UNIT_ID)
    .forNativeAd(object : NativeAd.OnNativeAdLoadedListener {
      override fun onNativeAdLoaded(nativeAd: NativeAd) {
        // Native ad loaded.
      }
    })
    .withAdListener(
      object : AdListener() {
        override fun onAdOpened() {
          // Native ad opened an overlay that covered the screen.
        }

        override fun onAdClosed() {
          // Native ad closed.
        }

        override fun onAdImpression() {
          // Native ad recorded an impression.
        }

        override fun onAdClicked() {
          // Native ad recorded a click.
        }
      }
    )
    .build()

adLoader.loadAd(AdRequest.Builder().build())

Java

AdLoader adLoader = new AdLoader.Builder(this, AD_UNIT_ID)
    .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
      @Override
      public void onNativeAdLoaded(NativeAd nativeAd) {
        // Native ad loaded.
      }
    })
    .withAdListener(new AdListener() {
      @Override
      public void onAdOpened() {
        // Native ad opened an overlay that covered the screen.
      }

      @Override
      public void onAdClosed() {
        // Native ad closed.
      }

      @Override
      public void onAdImpression() {
        // Native ad recorded an impression.
      }

      @Override
      public void onAdClicked() {
        // Native ad recorded a click.
      }
    })
    .build();

adLoader.loadAd(new AdRequest.Builder().build());
SDK Google Mobile Ads (beta)

L'SDK Google Mobile Ads (beta) supporta la registrazione dei callback degli eventi pubblicitari una volta caricato l'annuncio nativo.

Kotlin

NativeAdLoader.load(
  NativeAdRequest
    .Builder(AD_UNIT_ID, listOf(NativeAd.NativeAdType.NATIVE))
    .build(),
  object : NativeAdLoaderCallback {
    override fun onNativeAdLoaded(nativeAd: NativeAd) {
      // Native ad loaded.
      nativeAd.adEventCallback =
        object : NativeAdEventCallback {
          override fun onAdShowedFullScreenContent() {
            // Native ad showed full screen content.
            // Current SDK equivalent: onAdOpened()
          }

          override fun onAdDismissedFullScreenContent() {
            // Native ad dismissed full screen content.
            // Current SDK equivalent: onAdClosed()
          }

          override fun onAdFailedToShowFullScreenContent(
            fullScreenContentError: FullScreenContentError
          ) {
            // Native ad failed to show full screen content.
            // Current SDK equivalent: N/A
          }

          override fun onAdImpression() {
            // Native ad recorded an impression.
          }

          override fun onAdClicked() {
            // Native ad recorded a click.
          }
        }
    }
  }
)

Java

NativeAdLoader.load(
    new NativeAdRequest.Builder(AD_UNIT_ID, List.of(NativeAd.NativeAdType.NATIVE))
        .build(),
    new NativeAdLoaderCallback() {
      @Override
      public void onNativeAdLoaded(NativeAd nativeAd) {
        // Native ad loaded.
        nativeAd.setAdEventCallback(new NativeAdEventCallback() {
          @Override
          public void onAdShowedFullScreenContent() {
            // Native ad showed full screen content.
            // Current SDK equivalent: onAdOpened()
          }

          @Override
          public void onAdDismissedFullScreenContent() {
            // Native ad dismissed full screen content.
            // Current SDK equivalent: onAdClosed()
          }

          @Override
          public void onAdFailedToShowFullScreenContent(FullScreenContentError fullScreenContentError) {
            // Native ad failed to show full screen content.
            // Current SDK equivalent: N/A
          }

          @Override
          public void onAdImpression() {
            // Native ad recorded an impression.
          }

          @Override
          public void onAdClicked() {
            // Native ad recorded a click.
          }
        });
      }
    }
);

Mostrare un annuncio

Questa sezione illustra le differenze nella pubblicazione di un annuncio nativo:

Utilizzare un nome di pacchetto SDK Google Mobile Ads (beta)

Quando crei un NativeAdView in XML, aggiorna il nome del pacchetto:

Attuale

<com.google.android.gms.ads.nativead.NativeAdView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <!-- Layout assets such as the media view and call to action. -->
</com.google.android.gms.ads.nativead.NativeAdView>
SDK Google Mobile Ads (beta)

<com.google.android.libraries.ads.mobile.sdk.nativead.NativeAdView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <!-- Layout assets such as the media view and call to action. -->
</com.google.android.libraries.ads.mobile.sdk.nativead.NativeAdView>

Registra l'asset di contenuti multimediali con NativeAdView

Gli esempi seguenti registrano l'asset di contenuti multimediali con NativeAdView:

Attuale

L'SDK Mobile Ads attuale prevede che la visualizzazione dei contenuti multimediali venga registrata con la visualizzazione dell'annuncio nativo prima di registrare l'annuncio nativo. Tuttavia, l'API non impone questo comportamento.

Kotlin

private fun displayNativeAd(nativeAd: NativeAd) {
  // Inflate the NativeAdView layout.
  val nativeAdBinding = NativeAdBinding.inflate(layoutInflater)

  // Add the NativeAdView to the view hierarchy.
  binding.nativeViewContainer.addView(nativeAdBinding.root)
  val nativeAdView = nativeAdBinding.root

  // Populate and register the asset views.
  nativeAdView.mediaView = nativeAdBinding.adMedia
  // ...

  // Register the native ad with the NativeAdView.
  nativeAdView.setNativeAd(nativeAd)
}

Java

private void displayNativeAd(NativeAd nativeAd) {
  // Inflate the NativeAdView layout
  NativeAdBinding nativeAdBinding = NativeAdBinding.inflate(getLayoutInflater());

  // Add the NativeAdView to the view hierarchy
  binding.nativeViewContainer.addView(nativeAdBinding.getRoot());
  NativeAdView nativeAdView = nativeAdBinding.getRoot();

  // Populate and register the asset views
  nativeAdView.setMediaView(nativeAdBinding.adMedia);
  // ...

  // Register the native ad with the NativeAdView
  nativeAdView.setNativeAd(nativeAd);
}
SDK Google Mobile Ads (beta)

L'SDK Google Mobile Ads (beta) impone la registrazione della visualizzazione dei contenuti multimediali con la visualizzazione dell'annuncio nativo contemporaneamente all'annuncio nativo.

Kotlin

private fun displayNativeAd(nativeAd: NativeAd) {
  // Inflate the NativeAdView layout.
  val nativeAdBinding = NativeAdBinding.inflate(layoutInflater)

  // Add the NativeAdView to the view hierarchy.
  binding.nativeViewContainer.addView(nativeAdBinding.root)
  val nativeAdView = nativeAdBinding.root

  // Populate and register the asset views.
  // ...

  // Register the native ad and media content asset with the NativeAdView.
  val mediaView = nativeAdBinding.adMedia
  nativeAdView.registerNativeAd(nativeAd, mediaView)
}

Java

private void displayNativeAd(NativeAd nativeAd) {
  // Inflate the NativeAdView layout.
  NativeAdBinding nativeAdBinding = NativeAdBinding.inflate(getLayoutInflater());

  // Add the NativeAdView to the view hierarchy.
  binding.nativeViewContainer.addView(nativeAdBinding.getRoot());
  NativeAdView nativeAdView = nativeAdBinding.getRoot();

  // Populate and register the asset views.
  // ...

  // Register the native ad and media content asset with the NativeAdView.
  MediaView mediaView = nativeAdBinding.adMedia;
  nativeAdView.registerNativeAd(nativeAd, mediaView);
}