Ich habe ein Problem. Mein AdMob ist seit einiger Zeit ohne Probleme eingerichtet, aber ich habe etwas falsch bemerkt. Die Anzeige wird erfolgreich geladen (ich sehe eine Nachricht von ddms), aber sie wird nicht angezeigt. Es wird nach einer regelmäßigen Aktualisierung von 60 Sekunden angezeigt oder wenn ich die Anmeldung bei Google Plus öffne. Das Problem tritt nur bei Google Play Services AdMob und nicht bei AdMobSDK-JAR auf. Ich würde zu AdMob jar wechseln, allerdings verwende ich Google Play-Spieldienste für Bestenlisten und Erfolge.AdMob zeigt das Banner erst, wenn es aktualisiert wird oder melden Sie sich bei Google plus an
Ich vermute, dass das Problem darin besteht, dass die Ansicht nicht angezeigt wird oder die Einstellungen nicht korrekt sind.
Also wieder, Anzeige wird sich nach 60 Sekunden (zusammen mit Anzeigenaktualisierung) von warten, oder wenn ich den Anmeldebildschirm für Google Play-Dienste feuern.
Ich füge meinen Code hinzu, auch sollte ich erwähnen, dass ich zur neuen AdMob-Website gewechselt habe und ich wiederhole, dass dieses Problem nicht auftritt, wenn ich die AdMob-JAR-Datei verwende (die Anzeige wird dann in 2-3 Sekunden angezeigt) wie gewöhnlich). Ich habe den Google Play Game Services Code abgeschnitten (sie haben keinen Einfluss auf dieses Problem, weil ich es in meiner anderen App ohne sie versucht habe, und das Problem ist immer noch da).
MainActivity Code:
public class MainActivity extends AndroidApplication {
public static enum AdsStatus {
SHOW_ADS, HIDE_ADS;
}
protected RelativeLayout layout;
protected static AdView adMobView;
public static class InnerHandler extends Handler {
WeakReference<MainActivity> mActivity;
InnerHandler(MainActivityactivity) {
mActivity = new WeakReference<MainActivity>(activity);
}
@Override
public void handleMessage(final Message msg) {
if(msg.obj instanceof AdsStatus) {
switch((AdsStatus)msg.obj) {
case SHOW_ADS:
mActivity.get().showAds();
break;
case HIDE_ADS:
mActivity.get().hideAds();
break;
}
}
}
}
protected Handler handler = new InnerHandler(this);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Create the layout
layout = new RelativeLayout(this);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
// Create the libgdx View
View gameView = initializeForView(new MainApplicationListener(), true);
layout.addView(gameView);
//Ad Mob
final DisplayMetrics displayMetrics = MainActivity.this
.getApplicationContext().getResources()
.getDisplayMetrics();
if (displayMetrics.widthPixels >= 800 && displayMetrics.heightPixels >= 480) {
if(adMobView != null) {
adMobView.destroy();
}
adMobView = new AdView(AirDance.this);
adMobView.setAdUnitId(<MY_ID_IS_HERE>);
adMobView.setAdSize(AdSize.SMART_BANNER);
RelativeLayout.LayoutParams adParams = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
adParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
adParams.addRule(RelativeLayout.CENTER_HORIZONTAL);
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(<MY_DEVICE_IS_HERE>)
.build();
adMobView.loadAd(adRequest);
layout.addView(adMobView, adParams);
}
// Hook it all up
setContentView(layout);
}
@Override
protected void onResume() {
super.onResume();
AppRater.applicationLaunched(this, analytics);
if(adMobView != null) {
adMobView.resume();
}
}
@Override
protected void onPause() {
super.onPause();
if(adMobView != null) {
adMobView.pause();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if(adMobView != null) {
adMobView.destroy();
adMobView = null;
}
}
public void showAds() {
runOnUiThread(new Runnable() {
@Override
public void run() {
if(adMobView != null) {
adMobView.setEnabled(true);
adMobView.setVisibility(View.VISIBLE);
}
}
});
}
public void hideAds() {
runOnUiThread(new Runnable() {
@Override
public void run() {
if(adMobView != null) {
adMobView.setEnabled(false);
adMobView.setVisibility(View.GONE);
}
}
});
}
}
Und hier ist AndroidManifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="..."
android:installLocation="auto"
android:versionCode="16"
android:versionName="1.2.6" >
<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-feature android:name="android.hardware.screen.landscape"/>
<uses-feature android:name="android.hardware.touchscreen.multitouch" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="MainActivity">
<meta-data android:name="com.google.android.gms.games.APP_ID"
android:value="@string/app_id" />
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<activity
android:name="...MainActivity"
android:label="MainActivity"
android:screenOrientation="landscape">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- adMob -->
<activity android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
</application>
</manifest>
EDIT: in Ordnung, so Anzeige wird sichtbar, nachdem ich sperren und entsperren Bildschirm mit App öffnen, können Sie auch Klicken Sie auf unsichtbare Anzeige
EDIT: Okay, ich denke ich habe es gelöst. Ich lade nur das gesamte Layout des AdLoad-Ereignisses manuell neu. Wie auch immer, das ist nur eine funktionale Lösung, es erklärt nicht, warum es bei Google Play AdMob Dienste passiert.
adMobView.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
super.onAdLoaded();
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
layout.requestLayout();
}
});
}
});
Willkommen! Normalerweise versuchen wir, Dankeschönzeilen in den Fragen zu vermeiden, um sie übersichtlicher zu halten. Sie können hier nachlesen: "[Sollen 'Hallo', 'Dank', Slogans und Anreden aus Beiträgen entfernt werden?] (Http: // meta. stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be-removed-from-posts ". – veducm
Okay, danke! Ich war mir nicht bewusst. –
Das funktioniert auch für mich. Danke –