java - para - como configurar anuncios adsense
El tamaño del anuncio y la Id. Del bloque de anuncios deben configurarse antes de llamar a loadAd (6)
Tengo esto en mi archivo xml principal:
<com.google.android.gms.ads.AdView
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ads:adUnitId="******************"
ads:adSize="BANNER"
android:id="@+id/adView"/>
Ya configuré el tamaño del anuncio y la id. De la unidad, pero cuando esto se ejecuta (desde MainActivity.java),
AdView adView = (AdView)this.findViewById(com.example.lovetestactual.R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);
Arrojó una excepción de lo que está en el título.
Encontré una solución en el ejemplo de github, es decir:
en lugar de
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
eliminar la etiqueta xmlns: ads *** y agregar
xmlns:ads="http://schemas.android.com/apk/res-auto"
etiqueta a su etiqueta LinearLayout de la siguiente manera:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/hello"/>
<com.google.android.gms.ads.AdView android:id="@+id/adView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
ads:adSize="BANNER"
ads:adUnitId="INSERT_YOUR_AD_UNIT_ID_HERE"/>
</LinearLayout>
Eso es :)
Esto va a ser vago ya que no ha indicado qué tipo de vista es su archivo XML (relativo, lineal, etc.)
En mi aplicación con un diseño relativo desplazable, he incluido:
<RelativeLayout
android:id="@+id/test"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/TextView07"
android:paddingTop="20dp" >
</RelativeLayout>
Ahora, dentro de mi clase real, quiero el anuncio que incluí:
private AdView adView;
/* Your ad unit id. Replace with your actual ad unit id. */
private static final String AD_UNIT_ID = "ca-app-pub-xxxxxx/yyyyyy";
/**
* Simply loads the xml about page layout to display the text.
*/
public void onCreate(Bundle start) {
super.onCreate(start);
setContentView(R.layout.about);
final TelephonyManager tm = (TelephonyManager) getBaseContext()
.getSystemService(Context.TELEPHONY_SERVICE);
//String deviceid = tm.getDeviceId();
adView = new AdView(this);
adView.setAdSize(AdSize.SMART_BANNER);
adView.setAdUnitId(AD_UNIT_ID);
// Add the AdView to the view hierarchy. The view will have no size
// until the ad is loaded.
RelativeLayout layout = (RelativeLayout) findViewById(R.id.test);
layout.addView(adView);
// Create an ad request. Check logcat output for the hashed device ID to
// get test ads on a physical device.
AdRequest adRequest = new AdRequest.Builder()
.build();
//.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
//.addTestDevice(deviceid).build();
// Start loading the ad in the background.
adView.loadAd(adRequest);
}
Ahora, idealmente, desea utilizar un banner inteligente para optimizar su diseño para todos los dispositivos, como ya he dicho anteriormente, esto es estándar ahora.
Si esto no es de ayuda diríjase a here
Mucha gente que migra aplicaciones existentes al método de servicios de google play agrega incorrectamente la información incorrecta.
Algo que me gustaría señalar es que muchas personas con la misma pregunta han estado usando esto como plantilla
<com.google.android.gms.ads.AdView
xmlns:ads="http://schemas.android.com/apk/lib-auto"
android:id="@+id/adView"
android:layout_width="match_parent"
android:layout_height="50dp"
ads:adSize="BANNER"
ads:adUnitId="ca-app-pub-XXXXXXXXXXXXXXXX/XXXXXXXXXX"
ads:loadAdOnCreate="true" >
</com.google.android.gms.ads.AdView>
Esto es incorrecto como xmlns: los anuncios se deben cambiar a: - xmlns:ads="http://schemas.android.com/apk/res-auto"
Al igual que
<com.google.android.gms.ads.AdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/adView"
android:layout_width="match_parent"
android:layout_height="50dp"
ads:adSize="BANNER"
ads:adUnitId="ca-app-pub-XXXXXXXXXXXXXXXX/XXXXXXXXXX"
ads:loadAdOnCreate="true" >
</com.google.android.gms.ads.AdView>
Traté de cambiar la declaración del espacio de nombres, pero simplemente no funciona. Lo solucioné especificando un valor de altura para el adView en lugar de wrap_content
. Esto funciona para mi
<com.google.android.gms.ads.AdView
android:id="@+id/adView2"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_gravity="center|bottom"
ads:adSize="BANNER"
ads:adUnitId="@string/banner_ad_unit_id" />
Advertencia: asegúrese de establecer el tamaño del anuncio y la ID del bloque de anuncios de la misma manera (es decir, establecer tanto en XML como en ambos mediante programación).
eliminar xmlns:ads="http://schemas.android.com/tools"
desde la vista raíz
luego agrega AdView
<com.google.android.gms.ads.AdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
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="ca-app-pub-3940256099942544/6300978111">
</com.google.android.gms.ads.AdView>
Recuerde estos pasos:
Puede definir
xmlns:ads="http://schemas.android.com/apk/res-auto"
en la vista raíz de este.si no ha definido
xmlns:ads="http://schemas.android.com/apk/res-auto"
dentro de rootView, entonces debe agregarxmlns:ads="http://schemas.android.com/apk/res-auto"
dentro de AdView.si ha definido adSize dentro de su archivo
AdView
xml, no lo configure dinámicamente, como:adView.setAdSize(AdSize.BANNER);
o bien, a través de una excepciónjava.lang.IllegalStateException: The ad size can only be set once on AdView.
xmlns:ads="http://schemas.android.com/apk/res-auto"
yxmlns:app="http://schemas.android.com/apk/res-auto"
tienen el mismo aspecto pero hay una diferencia que es xmlns: ads y xmlns: aplicación, así que no te confundas.
Creo que resolverá tu problema ... Feliz de ayudar :)