Voici quelques bonnes pratiques concernant l’intégration à suivre par les développeurs pour l’implémentation sur Android. Ces conseils de codage et ces scénarios aideront votre équipe à mieux comprendre notre SDK Audience Network, à rendre la procédure d’intégration plus efficace et à maintenir votre solution à niveau après le lancement.
loadAd
uniquement lorsque la publicité a été fermée ou lorsqu’une erreur intervient lors du chargement de la publicité, sauf dans le cas des bandeaux publicitaires.Même si vous êtes notifié d’une fermeture de la publicité ou d’une erreur du rappel, assurez-vous de disposer du nombre maximum de nouvelles tentatives afin d’éviter de retenter l’appel indéfiniment. onError(Ad, AdError)
sera appelé quelle que soit la cause de l’échec de chargement de la publicité. Par exemple, en cas d’« Absence de couverture Internet », le chargement d’une publicité est censé s’arrêter lorsque le nombre maximum de nouvelles tentatives est atteint.
Dans le SDK Audience Network, prenez vos précautions lorsque vous appelez loadAd
pour tout type de publicité, hormis les bandeaux publicitaires. N’appelez jamais loadAd
lors de l’affichage d’une publicité. Nous vous recommandons d’implémenter AdListener
afin d’être notifié lorsqu’une publicité est fermée, s’achève ou rencontre des erreurs, conditions qui vous permettent de procéder légitimement à un nouvel appel loadAd
et n’entraînent pas de problèmes.
loadAd
dans un rappel onInterstitialDismissed
.private InterstitialAd mInterstitialAd; private static final MAX_NUMBER_OF_RETRIES = 3; private boolean shouldLoadAd = true; private int retryCount = 0; @Override protected void onCreate(Bundle savedInstanceState) { // call the super class onCreate super.onCreate(savedInstanceState); ... mInterstitialAd = new InterstitialAd(this, "YOUR_PLACEMENT_ID"); InterstitialAdListener interstitialAdListener = new InterstitialAdListener() { ... @Override public void onInterstitialDismissed(Ad ad) { // Interstitial dismissed callback if (shouldLoadAd) { /* Change shouldLoadAd value to false, or a new interstitial ad will show immediately when previous interstitial ad gets dismissed. */ shouldLoadAd = false; mInterstitialAd.loadAd(); } } @Override public void onError(Ad ad, AdError adError) { // Ad error callback // Stop retrying when it reaches to MAX_NUMBER_OF_RETRIES if(retryCount < MainActivity.MAX_NUMBER_OF_RETRIES) { retryCount += 1; mInterstitialAd.loadAd(); } } ... }; mInterstitialAd.loadAd( mInterstitialAd.buildLoadAdConfig() .withAdListener(interstitialAdListener) .build()); ... }
onError
pour une NativeAd
.private static final MAX_NUMBER_OF_RETRIES = 3; private NativeAd mNativeAd; private int retryCount = 0; @Override protected void onCreate(Bundle savedInstanceState) { // call the super class onResume super.onCreate(savedInstanceState); ... mNativeAd = new NativeAd(this, "YOUR_PLACEMENT_ID"); NativeAdListener nativeAdListener = new AdListener() { ... @Override public void onError(Ad ad, AdError error) { // Ad error callback // Stop retrying when it reaches to MAX_NUMBER_OF_RETRIES if (retryCount < MainActivity.MAX_NUMBER_OF_RETRIES) { retryCount += 1; mNativeAd.loadAd(); } } ... }; mNativeAd.loadAd( mNativeAd.buildLoadAdConfig() .withAdListener(nativeAdListener) .build()); ... }
private Button showNativeAdButton; @Override public void onCreate(Bundle savedInstanceState) { // call the super class onResume super.onCreate(savedInstanceState); ... showNativeAdButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // Create a native ad request with a placement ID nativeAd = new NativeAd(NativeAdSampleActivity.this, "YOUR_PLACEMENT_ID"); // Create a listener to get notified when the ad was loaded. NativeAdListener nativeAdListener = new AdListener() { ... } // Initiate a request to load an ad. nativeAd.loadAd( nativeAd.buildLoadAdConfig() .withAdListener(nativeAdListener) .build()); } }); ... }
loadAd
dans certains rappels Android, comme onResume()
ou onStart()
, qui peuvent entraîner la répétition incessante de l’appel de loadAd
sans supprimer ni mettre fin à la dernière publicité en mémoire.@Override protected void onCreate(Bundle savedInstanceState) { // call the super class onResume super.onCreate(savedInstanceState); ... mNativeAd = new NativeAd(this, "YOUR_PLACEMENT_ID"); ... } @Override protected void onResume() { super.onResume(); ... // DON'T DO THIS! mNativeAd.loadAd( mNativeAd.buildLoadAdConfig() .withAdListener(NativeAdSampleActivity.this) .build()); }
loadAd
indéfiniment dans un rappel onError. Vous trouverez ci-dessous un exemple de ce qu’il ne faut jamais faire. Par exemple, en cas d’« Absence de couverture Internet », loadAd
sera appelé indéfiniment, ce qui entraînera le plantage de votre application.private NativeAd mNativeAd; private boolean shouldRetry = true; @Override protected void onCreate(Bundle savedInstanceState) { // call the super class onResume super.onCreate(savedInstanceState); ... mNativeAd = new NativeAd(this, "YOUR_PLACEMENT_ID"); NativeAdListener nativeAdListener = new AdListener() { ... @Override public void onError(Ad ad, AdError error) { // Ad error callback // Remember to change shouldRetry to false, or DON'T implement like this! if (shouldRetry) { mNativeAd.loadAd(); } } ... }; mNativeAd.loadAd( mNativeAd.buildLoadAdConfig() .withAdListener(NativeAdSampleActivity.this) .build()); ... }
Tester l’intégration de publicités à votre app
Soumettez votre app pour certification.
Dès que nous recevrons une demande de publicité de votre app ou de votre site web, nous l’examinerons afin de vérifier qu’elle est conforme aux règles de l’Audience Network et aux Standards de la communauté Facebook. Apprenez-en davantage sur notre processus de certification.
Ressources supplémentaires |
Guide de démarrageGuide technique pour démarrer avec Audience Network | Référence concernant l’APIRéférence concernant le SDK Facebook pour iOS |