Le SDK Google Mobile Ads accepte également les styles de recherche personnalisés. Si votre application utilise déjà le SDK Google Mobile Ads, nous vous recommandons d'utiliser Version du SDK APRMA à la place.
Si vous effectuez une mise à niveau vers la version 19.0.0 ou une version plus récente à partir de la version 18.1.0 ou antérieure, consultez consultez notre guide de migration.
Prérequis
Dans ce guide d'implémentation, nous partons du principe que vous connaissez bien les éléments suivants:
- Annonces AdSense pour les recherches personnalisées avec des styles d'annonces AdSense pour les recherches personnalisées
- Développement d'applications Android
Importer le SDK natif AFS
Ajouter le SDK
Pour ajouter le SDK natif AFS à votre application, procédez comme suit:
Ouvrez le fichier build.gradle
dans le répertoire du module de votre application.
Ajoutez une règle de compilation sous dependencies
pour la dernière version du SDK:
dependencies {
implementation 'com.google.android.gms:play-services-afs-native:19.1.0'
}
Assurez-vous que votre build.gradle
de premier niveau contient une référence au google()
.
ou vers maven { url "https://maven.google.com" }
.
Suivez ces instructions.
pour inclure le plug-in Google Play Standalone Version Matcher dans votre projet.
L'application de ce plug-in provoque une erreur de compilation Gradle lorsque le SDK natif AFS est
utilisé avec une version incompatible des services Google Play au lieu d'autoriser
l'application à compiler, mais elle peut
provoquer des plantages au moment de l'exécution. Vous pouvez également appliquer la
failOnVersionConflict()
ResolutionStrategy
à votre projet pour provoquer une erreur de compilation lorsque des versions incompatibles de Google Play sont compatibles.
Les services sont utilisés dans votre projet.
Enregistrez les modifications et cliquez sur Sync Project with Gradle Files (Synchroniser le projet avec les fichiers Gradle) dans
la barre d’outils.
Utiliser AndroidX au lieu des bibliothèques Android Support
À partir de la version 17.0.0
du SDK, votre application doit utiliser Jetpack (AndroidX)
au lieu des bibliothèques Android Support. Configuration requise:
- Définissez
com.android.tools.build:gradle
sur la version 3.2.1 ou ultérieure. - Définissez
compileSdkVersion
sur 28 ou une version ultérieure. - Mettre à jour votre application pour utiliser Jetpack (AndroidX) suivez les instructions fournies dans l'article Migrer vers AndroidX.
Classes
Pour diffuser des annonces natives APR dans votre application, implémentez les classes suivantes:
- Cette classe permet de demander des annonces de manière asynchrone, de mettre en cache et la récupération et l'affichage des annonces.
- Chaque contexte d'annonce nécessite un
SearchAdController
distinct. Par exemple, si vous un écran affichant des annonces à côté d'une liste de résultats de recherche qui affiche des annonces et des informations sur un produit spécifique, créer deux instances distinctes deSearchAdController
, une pour chaque cas. - Le constructeur doit fournir le code de votre site Web (référence éditeur),
ID de style à appliquer
les annonces renvoyées, et
SearchAdOptions
. LeContext
fourni dans le constructeur doit être leActivity
, qui contient leSearchAdController
et où vous placera l'annonceView
. - Appelez
loadAds
pour indiquer une nouvelle recherche d'utilisateur et lancer une annonce asynchrone. requête. Toutes les annonces chargées à partir d'appels précédents àloadAds
sont effacées de le cache interne d'annonce lorsqu'un nouvel appel est effectué. - Créez un
View
aveccreateAdView
pour afficher des créations publicitaires. - Une fois les annonces chargées, appelez
populateAdView
avec unView
généré précédemment aveccreateAdView
pour afficher une annonce mise en cache dans cetteView
. En plus desView
, qui doit être renseigné, fournissez unadKey
, une chaîne arbitraire à identifier l'annonce de façon unique. Cette opération permet d'associer la création publicitaire spécifique renvoyée par le cache avec ceadKey
, de sorte que lorsque le mêmeadKey
est transmis à un appel ultérieur àpopulateAdView
, la même annonce est renvoyée. Par exemple, sipopulateAdView
est appelé pour la première fois avecadKey="keyA"
et affiche une pour des chaussures de randonnée, chaque appel suivant àpopulateAdView
avecadKey="keyA"
diffusera la même annonce pour des chaussures de randonnée. (Lorsque vous appelezloadAds
efface toutes les annonces mises en cache et les clés d'annonce associées.
- Transmettez cet objet au constructeur
SearchAdController
pour personnaliser la façon dont les annonces sont demandées et affichées. Appelezbuild()
sur unSearchAdOptions.Builder
pour Créez un objetSearchAdOptions
.
View
- Créez un objet
View
pour mettre en attente les annonces en appelantcreateAdView()
au niveau duSearchAdController
N'affiche qu'une seule annonce à la fois, mais le mêmeView
peut être recyclé pour afficher des annonces différentes au fil du temps.
- Appelez la méthode
loadAds
surSearchAdController
avec uneSearchAdRequest
. pour lancer une demande d'annonce asynchrone. Appelerbuild()
sur unSearchAdRequest.Builder
pour créer un objetSearchAdRequest
.
- Implémentez cette interface et transmettez-la au constructeur
SearchAdController
afin d'enregistrer des rappels pour plusieurs états. - Remarque: Les rappels
AdListener
ne seront pas appelés sur une requête annulée (un appel àloadAds
qui a été préempté par un autre appel àloadAds
avant la première appel résolu).
Exemple d'implémentation
L'exemple ci-dessous montre comment créer un SearchAdController
dans un exemple
Activity
// MainActivity.java implementation
// (MainActivity is a subclass of Activity)
SearchAdController adController;
// adContainer where we will place our ads in this example.
ViewGroup adContainer;
protected void onCreate(Bundle bundle){
super.onCreate(bundle);
adContainer = (ViewGroup) findViewById(...);
// Specify ad options (not required).
SearchAdOptions.Builder adOptionsBuilder = new SearchAdOptions.Builder();
adOptionsBuilder.setAdType(SearchAdOptions.AD_TYPE_TEXT);
adOptionsBuilder.setPrefetch(true);
adOptionsBuilder.setNumAdsRequested(3);
// Provide a callback to trigger when ads are loaded.
AdListener adListener = new AdListener() {
public void onAdLoaded() {
createAndShowAd();
}
};
// Instantiate the SearchAdController.
adController = new SearchAdController(this, "your-client-id", "your-style-id",
adOptionsBuilder.build(), adListener);
}
Lorsque l'utilisateur lance une requête, créez un SearchAdRequest
et appelez loadAds
.
sur le SearchAdController
pour lancer une demande d'annonce asynchrone.
// Create the request.
SearchAdRequest.Builder requestBuilder = new SearchAdRequest.Builder();
requestBuilder.setQuery("user query here");
// Load the ads.
adController.loadAds(requestBuilder.build());
Implémentez votre rappel onAdLoaded
pour insérer une annonce chargée dans un affichage d'annonce.
private void createAndShowAd() {
// Create a new view that will contain the ad.
View adView = adController.createAdView();
// Attach the new view to the view hierarchy.
adContainer.addView(adView);
// Display the ad inside the adView. We need to provide an adKey to
// indicate which ad is to be displayed in the adView. In this example,
// since we only have one ad, we can provide any constant string. However,
// if you intend to display multiple ads, each ad you wish to display
// should be given a unique adKey of your choosing.
adController.populateAdView(adView, "demoAd");
}
Une annonce liée à la requête donnée s'affichera désormais dans adView
.
Examiner les erreurs
SearchAdController
nécessite un objet AdListener
avec le onAdLoaded()
.
pour avertir votre application que les annonces sont prêtes à être diffusées. Vous devez également
Implémentez la méthode onAdFailedToLoad()
pour pouvoir détecter et corriger les erreurs.
Par exemple, vous pouvez utiliser le code AdListener
suivant pour déboguer
implémentation:
AdListener adListener = new AdListener() {
public void onAdLoaded() {
// Called when an ad is loaded.
Toast.makeText(MainActivity.this, "Ad Loaded",
Toast.LENGTH_SHORT).show();
Log.d(MainActivity.class.getSimpleName(), "Ad Loaded");
}
public void onAdLeftApplication() {
// Called when an ad leaves the application
// (to go to the browser for example).
Toast.makeText(MainActivity.this, "Ad Left Application",
Toast.LENGTH_SHORT).show();
Log.d(MainActivity.class.getSimpleName(), "Ad Left Application");
}
@Override
public void onAdFailedToLoad(int errorCode) {
// Called when an ad request failed.
Toast.makeText(MainActivity.this, "Ad Failed to Load: " + errorCode,
Toast.LENGTH_SHORT).show();
Log.e(MainActivity.class.getSimpleName(), "Ad Failed to Load: " +
errorCode);
}
};
Constantes utilisées dans la méthode de rappel onAdFailedToLoad()
sont définies dans l'objet AdListener.