Diskuze: Google ads - proč se vůbec nezobrazí?


Matúš Olejník:3.3.2020 7:17
Ahoj, ja by som išiel podľa oficiálnej dokumentácie, tu je celý postup https://developers.google.com/…/quick-start
Nižšie si môžeš rozkliknúť zasa postup pre jednotlivé typy reklám,
napr. banner reklama https://developers.google.com/…droid/banner
kde máš aj spomenuté, že testovať máš s testovacími reklamami
Always test with test ads
ca-app-pub-3940256099942544/6300978111
Keď budeš chcieť vyskúšať reálne reklamy budeš musieť vygenerovať podpísaný .apk súbor
Matúš Olejník:3.3.2020 10:31
Aha, ale to si v pôvodnom príspevku nespomenul Na Googli sa dá dočítať, že
kedysi existoval taký problém tak skús najprv použiť najnovšiu verziu
implementation 'com.google.android.gms:play-services-ads:19.0.0'
Matúš Olejník:3.3.2020 12:57
Áno, je to možné preto máš používať najprv tie testovacie. Inak za
zobrazenie sa mi zdá, že ani peniaze nie sú, treba aby na ne niekto klikol
Tak teď opravdu nevím co je v manifestu na tomto špatně...
Nebo přece tam nemá být místo toho mého id(za com.google.android.gms.ads)
napsáno "APPLICATION_ID" jak je to v dokuntaci.
...
<application
android:name="com.google.android.gms.ads.ca-app-pub-5217865078870241~3715738095"
android:value="ca-app-pub-5217865078870241~3715738095"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Tak jsem přidal tu novější verzi, id toho banneru jsem přepsal na
zkušební, upravil manifest. Teď se aplikace ihned po spuštění
stopne("com.example.googleadsdemo2 has stopped").
Main activity
package com.example.googleadsdemo2;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdSize;
import com.google.android.gms.ads.AdView;
import com.google.android.gms.ads.InterstitialAd;
import com.google.android.gms.ads.MobileAds;
import com.google.android.gms.ads.initialization.InitializationStatus;
import com.google.android.gms.ads.initialization.OnInitializationCompleteListener;
public class MainActivity extends AppCompatActivity {
private AdView mAdView;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAdView = findViewById(R.id.adView);
MobileAds.initialize(this, "ca-app-pub-5217865078870241~3715738095");
/*
@Override
public void onInitializationComplete(InitializationStatus initializationStatus) {
}
*/
//});
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
}
}
Manifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.googleadsdemo2">
<uses-permission android:name="android.permission.INTERNET"/>
<application>
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-5217865078870241~3715738095"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"/>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Matúš Olejník:3.3.2020 18:33
Neviem ako skúsený si v programovaní, ale popis že sa aplikácia nečakane zastavila nijako nám, ktorí ti chceme pomôcť, nepomôže.
Treba otvoriť Logcat nájsť tam chybu ktorá nastala a poslať ju sem.
Ďalej nevidím že by si používal to testovacie unitId ako je v oficiálnej dokumentácii a rovnako inicializáciu toho všetkého máš tiež úplne inak. V dokumentácii do tej metódy initialize neposielajú to id ale listener.
Keď uz si použil najnovšiu knižnicu tak postupuj aj podľa najnovšej príručky.
Ten unitId jsi nemohl vidět, protože jsem neposlal activity_main. Dávám
ji sem tedy taky stejně jako logcast.
Tu inicializaci jsem udělal podle dokumentace. No a APPLICATION_ID mám dát
svoje, nikoliv nějaké testovací.
Logcast logcast screen s označenými chybami
2020-03-03 19:36:48.024 13031-13031/? I/zygote: Not late-enabling -Xcheck:jni (already on)
2020-03-03 19:36:48.053 13031-13031/? W/zygote: Unexpected CPU variant for X86 using defaults: x86
2020-03-03 19:36:48.112 13031-13046/? E/zygote: Failed writing handshake bytes (-1 of 14): Broken pipe
2020-03-03 19:36:48.112 13031-13046/? I/zygote: Debugger is no longer active
2020-03-03 19:36:48.284 13031-13031/? D/AndroidRuntime: Shutting down VM
2020-03-03 19:36:48.286 13031-13031/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.googleadsdemo2, PID: 13031
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.googleadsdemo2/com.example.googleadsdemo2.MainActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2778)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
at androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor(AppCompatDelegateImpl.java:696)
at androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:659)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:552)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)
at com.example.googleadsdemo2.MainActivity.onCreate(MainActivity.java:24)
at android.app.Activity.performCreate(Activity.java:7009)
at android.app.Activity.performCreate(Activity.java:7000)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
2020-03-03 19:36:48.427 13031-13059/? W/zygote: Unsupported class loader
2020-03-03 19:36:48.427 13031-13059/? W/zygote: Skipping duplicate class check due to unsupported classloader
2020-03-03 19:36:48.430 13031-13059/? I/DynamiteModule: Considering local module com.google.android.gms.ads.dynamite:0 and remote module com.google.android.gms.ads.dynamite:21200
2020-03-03 19:36:48.430 13031-13059/? I/DynamiteModule: Selected remote version of com.google.android.gms.ads.dynamite, version >= 21200
2020-03-03 19:36:48.431 13031-13059/? V/DynamiteModule: Dynamite loader version >= 2, using loadModule2NoCrashUtils
2020-03-03 19:36:48.457 13031-13066/? W/DynamiteModule: Local module descriptor class for com.google.android.gms.measurement.dynamite not found.
2020-03-03 19:36:48.462 13031-13066/? I/DynamiteModule: Considering local module com.google.android.gms.measurement.dynamite:0 and remote module com.google.android.gms.measurement.dynamite:11
2020-03-03 19:36:48.462 13031-13066/? I/DynamiteModule: Selected remote version of com.google.android.gms.measurement.dynamite, version >= 11
2020-03-03 19:36:48.462 13031-13066/? V/DynamiteModule: Dynamite loader version >= 2, using loadModule2NoCrashUtils
2020-03-03 19:36:48.463 13031-13059/? W/zygote: Unsupported class loader
2020-03-03 19:36:48.464 13031-13059/? W/zygote: Skipping duplicate class check due to unsupported classloader
2020-03-03 19:36:48.488 13031-13066/? W/zygote: Unsupported class loader
2020-03-03 19:36:48.493 13031-13066/? W/zygote: Skipping duplicate class check due to unsupported classloader
2020-03-03 19:36:48.515 13031-13066/? W/DynamiteModule: Local module descriptor class for com.google.android.gms.measurement.dynamite not found.
2020-03-03 19:36:48.766 13031-13069/? I/FA-Ads: App measurement initialized, version: 22013
2020-03-03 19:36:48.766 13031-13069/? I/FA-Ads: To enable debug logging run: adb shell setprop log.tag.FA VERBOSE
activity_main
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<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"
tools:ignore="MissingConstraints">
</com.google.android.gms.ads.AdView>
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity
package com.example.googleadsdemo2;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdSize;
import com.google.android.gms.ads.AdView;
import com.google.android.gms.ads.InterstitialAd;
import com.google.android.gms.ads.MobileAds;
import com.google.android.gms.ads.initialization.InitializationStatus;
import com.google.android.gms.ads.initialization.OnInitializationCompleteListener;
public class MainActivity extends AppCompatActivity {
private AdView mAdView;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MobileAds.initialize(this, new OnInitializationCompleteListener() {
@Override
public void onInitializationComplete(InitializationStatus initializationStatus) {
}
});
mAdView = findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
}
}
Matúš Olejník:3.3.2020 20:22
Okey, sorry ja som narážal na tie "ca-app-pub.." v java kóde, som sa zle vyjadril.
Tá chyba
Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
V manifeste máš
android:theme="@style/AppTheme"
ale to potom potom prepíšeš v java kóde tým, že tvoja aktivita extenduje AppCompatActivity. Tak buď skús v manifeste zmeniť tému napr. na
android:theme="@style/Theme.AppCompat.Light"
alebo tvoja aktivita nech neextenduje AppCompatActivity ale len Activity.
A ešte by som odporúčil, neviem v čom to kódiš ale ak v AS alebo
IntelliJ tak v tom editore vyklikaj tie constrainty namiesto toho že ich
ignoruješ
tools:ignore="MissingConstraints"
+20 Zkušeností
+2,50 Kč

Zobrazeno 14 zpráv z 14.