Nous vous recommandons de suivre plusieurs bonnes pratiques pour vous assurer que votre application fonctionne correctement sur Android TV lorsque vous utilisez le SDK IMA pour Android.
Commencez par vous familiariser avec le développement d'applications TV pour Android. Plus précisément, assurez-vous que votre activité est configurée pour la télévision, comme expliqué dans le guide de démarrage. Vous devez également gérer la navigation TV pour vous assurer que les utilisateurs peuvent naviguer facilement dans votre application sur Android TV.
Gérer les annonces désactivables
Le SDK optimise les formats désactivables pour les appareils de type téléviseur, par exemple en supprimant la possibilité d'interagir avec un bouton En savoir plus. Par défaut, le SDK met en surbrillance le bouton de saut lorsque le saut est disponible afin que l'annonce puisse être ignorée sur Android TV. Par conséquent, aucune action supplémentaire n'est requise de votre part pour accepter les annonces désactivables.
Pour ce faire, appelez AdsRenderingSettings.setFocusSkipButtonWhenAvailable()
.
Pour en savoir plus sur les annonces acceptées, consultez la matrice de compatibilité.
Gérer les images de remplacement des icônes VAST
Le SDK IMA détecte, affiche et gère l'interaction de l'utilisateur avec les images de remplacement de l'icône VAST. Votre application doit écouter les événements ICON_TAPPED
et ICON_FALLBACK_IMAGE_CLOSED
pour gérer la lecture des annonces qui utilisent la fonctionnalité "Pourquoi cette annonce ?".
Ajoutez une valeur booléenne pour savoir si une image de remplacement d'icône VAST s'affiche. Écoutez ensuite ICON_TAPPED
et ICON_FALLBACK_IMAGE_CLOSED
pour gérer la lecture des annonces autour de l'image de remplacement de l'icône VAST. Consultez l'extrait de code suivant pour voir comment cela est géré dans l'exemple avancé.
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;