Utilizzare l'SDK IMA per Android con Android TV

Consigliamo varie best practice per verificare che la tua app funzioni correttamente su Android TV quando utilizzi l'SDK IMA per Android.

Per iniziare, acquisisci familiarità con lo sviluppo di app TV per Android. In particolare, assicurati che l'Attività sia configurata per la TV come spiegato nella guida iniziale. Vuoi anche gestire la navigazione in TV per assicurarti che gli utenti possano navigare bene nella tua app su Android TV.

Gestire gli annunci ignorabili

L'SDK ottimizza i formati ignorabili per i dispositivi simili a quelli televisivi, ad esempio eliminando la possibilità di interagire con un pulsante Scopri di più. Per impostazione predefinita, l'SDK imposta lo stato attivo sul pulsante Salta quando questa opzione è disponibile, in modo che l'annuncio possa essere ignorato su Android TV. Pertanto, non è necessario alcun lavoro aggiuntivo per supportare gli annunci ignorabili.

Puoi configurare questa funzionalità chiamando AdsRenderingSettings.setFocusSkipButtonWhenAvailable().

Per ulteriori informazioni su quali annunci sono supportati, consulta la matrice di compatibilità.

Gestire le immagini di riserva dell'icona VAST

L'SDK IMA rileva, esegue il rendering e gestisce l'interazione dell'utente con le immagini di riserva dell'icona VAST. L'app deve ascoltare gli eventi ICON_TAPPED e ICON_FALLBACK_IMAGE_CLOSED per gestire la riproduzione degli annunci che utilizzano la frase "Perché questo annuncio" (WTA).

Aggiungi un valore booleano per monitorare se viene mostrata un'immagine di riserva dell'icona VAST. Quindi, ascolta ICON_TAPPED e ICON_FALLBACK_IMAGE_CLOSED per gestire la riproduzione degli annunci intorno all'immagine di riserva dell'icona VAST. Consulta il seguente snippet di codice per un esempio di come viene gestita nell'Esempio avanzato.

app/src/main/java/com/google/ads/interactivemedia/v3/samples/videoplayerapp/VideoPlayerController.java

// Copyright 2014 Google Inc. All Rights Reserved.

package com.google.ads.interactivemedia.v3.samples.videoplayerapp;

import android.app.UiModeManager;
import android.content.Context;

...

// Tracks if the SDK is playing an ad, since the SDK might not necessarily use
// the video player provided to play the video ad.
private boolean isAdPlaying;

// Tracks whether the SDK has a VAST icon fallback image showing.
private boolean isConnectedTvFallbackImageShowing = false;

// View that handles taps to toggle ad pause/resume during video playback.
private View playPauseToggle;

// View that we can write log messages to, to display in the UI.
private Logger log;

...

    adsManager.addAdEventListener(
        new AdEvent.AdEventListener() {
          /** Responds to AdEvents. */
          @Override
          public void onAdEvent(AdEvent adEvent) {

              ...

              case CONTENT_RESUME_REQUESTED:
                // AdEventType.CONTENT_RESUME_REQUESTED is fired when the ad is
                // completed and you should start playing your content.
                resumeContent();
                break;
              case ICON_TAPPED:
                // The user has tapped a VAST icon fallback image. On Android
                // mobile apps, the SDK will navigate to the landing page. On
                // Connected TV devices, the SDK will present a modal dialog
                // containing the VAST icon fallback image.

                // Check if the app is running on a TV device.
                UiModeManager uiModeManager = (UiModeManager) getSystemService(UI_MODE_SERVICE);
                if (uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION) {
                  isConnectedTvFallbackImageShowing = true;
                }

                // Focus the IMA WebView for easier access to ad UI elements.
                adsManager.focus();
                break;
              case PAUSED:
                if (isConnectedTvFallbackImageShowing) {
                  // Do not show the controls; continue to leave the controls in
                  // the hands of the ads SDK.
                  break;
                }
                isAdPlaying = false;
                videoPlayerWithAdPlayback.enableControls();
                break;
              case ICON_FALLBACK_IMAGE_CLOSED:
                // The user has closed the VAST icon fallback image. This may
                // be a good time to resume ad playback if the user is ready to
                // continue playing the ad. This event only fires for Connected
                // TV devices.


                isConnectedTvFallbackImageShowing = false;
                adsManager.resume();
                break;
              case RESUMED:
                isAdPlaying = true;
                videoPlayerWithAdPlayback.disableControls();
                break;