J'utilise admob dans mon application, cela fonctionnait bien, mais tout à coup, les annonces ne se diffusaient plus du tout.
mainActivity.xml:
<com.google.Android.gms.ads.AdView
Android:id="@+id/adView"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_centerHorizontal="true"
Android:layout_alignParentBottom="true"
ads:adSize="BANNER"
ads:adUnitId="@string/banner_ad_unit_id">
</com.google.Android.gms.ads.AdView>
MainActivity.Java
AdView mAdView = (AdView) findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
AndroidManifest:
<uses-sdk
Android:minSdkVersion="9"
Android:targetSdkVersion="19" />
<uses-permission Android:name="Android.permission.INTERNET"/>
<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE"/>
<meta-data Android:name="com.google.Android.gms.version"
Android:value="@integer/google_play_services_version" />
<!--Include the AdActivity configChanges and theme. -->
<activity Android:name="com.google.Android.gms.ads.AdActivity"
Android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
Android:theme="@Android:style/Theme.Translucent" />
J'ai suivi toutes les instructions du site adMob car je disais que cela fonctionnait il y a quelques jours.
Vous trouverez ci-dessous quelques lignes de logcat pouvant être liées à mon problème:
09-25 22:44:50.292: E/dalvikvm(18554): Could not find class 'Android.app.AppOpsManager', referenced from method com.google.Android.gms.common.GooglePlayServicesUtil.zza
09-25 22:45:07.209: E/Ads(18554): JS: Uncaught ReferenceError: renderAd is not defined (https://googleads.g.doubleclick.net/mads/gma:1)
09-25 22:45:07.209: E/Web Console(18554): Uncaught ReferenceError: renderAd is not defined:1
09-25 22:45:07.209: E/Ads(18554): JS: Uncaught ReferenceError: onLoad is not defined (https://googleads.g.doubleclick.net/mads/gma:1)
09-25 22:45:07.209: E/Web Console(18554): Uncaught ReferenceError: onLoad is not defined:1
Je reçois des avertissements ci-dessous à plusieurs reprises et il apparaît davantage lorsque je clique sur la zone vide dans laquelle l'annonce doit être diffusée.
09-25 22:46:10.911: W/PicturePileLayerContent(18554): Warning: painting PicturePile without content!
Ceci est logcat filtré avec "annonces"
09-25 23:39:25.948: I/Ads(28874): Starting ad request.
09-25 23:39:25.948: I/Ads(28874): Use AdRequest.Builder.addTestDevice("8FCD71CAAE776558876AAA9BA964245A") to get test ads on this device.
09-25 23:39:26.919: I/Ads(22050): App index is not enabled
09-25 23:39:30.432: E/Ads(28874): JS: Uncaught ReferenceError: renderAd is not defined (https://googleads.g.doubleclick.net/mads/gma:1)
09-25 23:39:30.442: E/Ads(28874): JS: Uncaught ReferenceError: onLoad is not defined (https://googleads.g.doubleclick.net/mads/gma:1)
09-25 23:39:30.442: I/Ads(28874): Scheduling ad refresh 60000 milliseconds from now.
09-25 23:39:30.472: I/Ads(28874): Ad finished loading.
J'ai cherché partout la solution et en ai examiné d'autres similaires, mais aucun d'eux ne m'a aidé.
Ce problème est résolu en désinstallant l'application manuellement et en le réinstallant sans apporter de modifications!
Utilisez les lignes de code ci-dessous
AdView mAdView = (AdView) findViewById(R.id.adView);
AdRequest request = new AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR) // All emulators
.addTestDevice("AC98C820A50B4AD8A2106EDE96FB87D4") // My Galaxy Nexus test phone
.build();
mAdView.loadAd(request );
au lieu d'utiliser cela
AdRequest adRequest = new AdRequest.Builder().build();
car cette ligne sera utilisée lorsque votre application sera prête à être publiée sur Google Play Store.
Vous pouvez placer l'identifiant de votre appareil à la place de "AC98C820A50B4AD8A2106EDE96FB87D4". Code pour obtenir l'identifiant de l'appareil:
String Android_id = Settings.Secure.getString(getContext().getContentResolver(),
Settings.Secure.Android_ID);
Veuillez les lire attentivement:
https://developers.google.com/admob/Android/targeting#test_ads
https://developers.google.com/admob/Android/quick-start
Regarde ça
Vérifiez si vous disposez des dernières versions de adMob et de GooglePlayServices lib.
Mettez la bannière dans un LinearLayout juste comme ceci, j'ai rencontré le même problème et je l'ai corrigé en le mettant dans une disposition linéaire
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:ads="http://schemas.Android.com/apk/res-auto"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:orientation="vertical"
Android:layout_alignParentTop="true"
Android:layout_alignParentRight="true"
Android:layout_alignParentEnd="true"
Android:id="@+id/linearLayout">
<com.google.Android.gms.ads.AdView
Android:id="@+id/adView"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
ads:adSize="BANNER"
ads:adUnitId="ca-app-pub-8056472942589154/2652831823"
Android:layout_alignBottom="@+id/saida"
Android:layout_alignParentLeft="true"
Android:layout_alignParentStart="true" />
</LinearLayout>
Dans mon cas, l'annonce ne s'est pas montrée jusqu'à ce que je lui donne assez de place.
Avant c'était comme
<LinearLayout
Android:orientation="vertical"
Android:background="@color/primary"
Android:layout_width="match_parent"
Android:layout_height="90dip">
<ImageView
Android:onClick="goBack"
Android:clickable="true"
Android:src="@drawable/ic_arrow_back_white_48dp"
Android:layout_width="50dip"
Android:layout_height="50dip"/>
<com.google.Android.gms.ads.AdView
Android:layout_gravity="center_horizontal"
Android:id="@+id/adView"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
ads:adSize="BANNER"
ads:adUnitId="@string/dwn_bnr_ad"/>
Ici, la vue a une hauteur de wrap_content, elle s’ajuste donc pour atteindre sa hauteur, mais son parent (LinearLayout) a une hauteur stricte de 90dip qui ne permet pas à adView de prendre assez d’espace pour afficher des annonces.
Donc, ce que j'ai fait était de changer la hauteur de LinearLayout en wrap_content, puis tout s'est bien passé
Êtes-vous retourné sur votre compte admob pour enregistrer votre application spécifique pour les annonces et obtenir un nouveau numéro d'éditeur plus long avec la préface 'ca-app-pub-' au lieu de la préface 'pub-'?
Nulle part dans les instructions "bannières 1" du site de développement de Google Admob "SDK Google Ads Ads SDK" ne mentionnez le fait de devoir retourner à votre compte admob pour le faire.
Cette erreur stupide m'a retenu pendant des jours.
Dans mon cas, j'avais le code ci-dessous dans la section buildscript
du niveau de projet build.gradle
Assurez-vous que maven {url "https://maven.google.com"}
est sous allProjects > repositories
:
allprojects {
repositories {
jcenter()
maven {
url "https://maven.google.com"
}
}
}