una studio publicidad por poner juegos ganar gana dinero cuanto con como apps app aplicaciones agregar java android admob adview

java - studio - ganar dinero publicidad apps



El tamaƱo del anuncio y la ID del bloque de anuncios deben establecerse antes de loadAd cuando se establece mediante programaciĆ³n (6)

No tengo idea de lo que está sucediendo aquí, pero estoy tratando de configurar mi ID de bloque de anuncios dinámicamente a través de un código como el que se muestra a continuación y eliminarlo del XML, pero aún aparece el error:

El tamaño del anuncio y la ID del bloque de anuncios deben establecerse antes de llamar a loadAd.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ads="http://schemas.android.com/apk/res-auto" <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="SMART_BANNER"> </com.google.android.gms.ads.AdView>

y

AdView mAdView = (AdView) rootView.findViewById(R.id.adView); mAdView.setAdUnitId(getEvent().getAdMobUnitId()); AdRequest adRequest = new AdRequest.Builder().build(); mAdView.loadAd(adRequest);


Crearlo programáticamente

View adContainer = findViewById(R.id.adMobView); AdView mAdView = new AdView(context); mAdView.setAdSize(AdSize.BANNER); mAdView.setAdUnitId(YOUR_BANNER_ID); ((RelativeLayout)adContainer).addView(mAdView); AdRequest adRequest = new AdRequest.Builder().build(); mAdView.loadAd(adRequest);

Y en tu archivo xml.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <RelativeLayout android:id="@+id/adMobView" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentBottom="true"/> </RelativeLayout>

EDITAR

La mejor práctica para los banners es que muestre un banner por vista (un unitId ). Si desea mostrar más banners en las mismas pantallas (NO RECOMENDADO), debe crear otro unitId desde la consola y un anuncio para cada unitId .

Mi respuesta es:

No sé si es un error o si puede tener solo un unitId por adView y tiene más sentido, ya que solo puede tener un unitId por adView, y al leer docs se muestran dos formas de hacerlo, mediante la unitId un unitId AdView() y la configuración unitIds y sizes O hacerlo solo desde XML.

E hice algunas pruebas para llegar a esta conclusión.

Usando findViewById desde su com.google.android.gms.ads.AdView

1 - Puede setAdUnitId programa setAdUnitId si configura primero adSize .

2 - No puede setAdUnitId programa setAdUnitId si ya está en su xml.

3 - Si no usa ''setAdUnitId'' en su xml, alertará que Required xml attribute adUnitId was missing , e igual para adSize incluso si configura ambos atributos de manera programática.

4 - Si no pone setAdUnitId y setSize y lo pone en modo programático, adView le avisará que Required xml attribute adUnitId was missing , y lo mismo si no configura adSize en xml.

5 - Lo único que puede hacer programáticamente es llamar a mAdView.loadAd(adRequest) para cargar el anuncio

Usando el new AdView()

1 - Funcionará si crea un diseño vacío, luego agregue la referencia adView a esta vista.

2 - Puede configurar los programas adSize y adUnitId que funcionarán.

3- Si intenta utilizar setAdUnitAd dos veces, se setAdUnitAd esta excepción. The ad unit ID can only be set once on AdView. lo mismo si usas por findViewById

Mis conclusiones son:

Puedes usar solo desde XML "

<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="ca-app-pub-my_id_number_was_ommited_by_security" />

y cargar vista en onCreate

AdView mAdView = findViewById(R.id.adView); AdRequest adRequest = new AdRequest.Builder().build(); mAdView.loadAd(adRequest);

o programáticamente completo

View adContainer = findViewById(R.id.adMobView); AdView mAdView = new AdView(context); mAdView.setAdSize(AdSize.BANNER); mAdView.setAdUnitId(YOUR_BANNER_ID); adContainer.addView(mAdView); AdRequest adRequest = new AdRequest.Builder().build(); mAdView.loadAd(adRequest);

Yo uso banners durante mucho tiempo y esa respuesta es buena para mí.


Lo he hecho asi

<LinearLayout xmlns:ads="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:id="@+id/ll_main_screen_container" android:layout_width="match_parent" android:gravity="center" android:layout_height="wrap_content" android:orientation="horizontal"/> </LinearLayout>

en codigo

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.newone); initAdsAccount(); initAds(); } private void initAdsAccount() { String accountId = AdsConstants.my_fake_ads_account_id; if (AdsConstants.isAdsMode) { accountId = AdsConstants.my_ads_account_id; } MobileAds.initialize(this, accountId); } private void initAds() { findViewById(R.id.ll_main_screen_container).post(// new Runnable() { @Override public void run() { LinearLayout adContainer = findViewById(R.id.ll_main_screen_container); AdView mAdView = new AdView(MainActivity.this); mAdView.setAdSize(AdSize.BANNER); if (AdsConstants.isAdsMode) { mAdView.setAdUnitId(AdsConstants.main_screen_bottom_banner_id); } else { mAdView.setAdUnitId(AdsConstants.fake_banner_id); } adContainer.addView(mAdView); AdRequest adRequest = new AdRequest.Builder().build(); mAdView.loadAd(adRequest); } }// ); }


Para mí, estaba configurando el tipo de anuncio así:

ads:adSize="Banner"

Si bien será todo mayúsculas:

ads:adSize="BANNER"


Tienes

android:layout_width="wrap_content" android:layout_height="wrap_content"

Desde: https://developers.google.com/admob/android/banner#smart_banners

Nota: la vista de banner inteligente en su diseño debe consumir todo el ancho del dispositivo. Si no lo hace, aparecerá una advertencia con el mensaje "No hay espacio suficiente para mostrar el anuncio" y no se mostrará el anuncio.

cambiarlo a

android:layout_width="match_parent"

Y establezca su adUnitID en el archivo xml.

ads:adUnitId="AD_UNIT_ID"



xmlns:ads="http://schemas.android.com/apk/res-auto"

Esto solucionó mi problema.

no uses esto

xmlns:ads="http://schemas.android.com/tools"