Ich habe eine App, die eine Interstitial-Anzeige anzeigt, wenn bestimmte Aktivitäten geschlossen sind. Ich verwende eine andere Aktivität, um die Anzeige zu zeigen. Bis jetzt zeigt es die Anzeige korrekt, aber nichts geschieht, wenn ich auf die Anzeige klicke. Ich habe es auf vielen Geräten getestet und Betatester melden das gleiche Verhalten. Es gibt keine Fehler in den Protokollen. Das gleiche gilt, wenn ich ein Debug-Build oder ein signiertes APK verwende, das in den Play Store hochgeladen wird (wenn es darauf ankommt, wird es im Alpha-Status veröffentlicht). Ich verwende das neueste Play Store Services SDK.AdMob-Interstitial-Anzeige wird angezeigt, kann aber nicht darauf klicken
Was könnte der Grund dafür sein?
Meine Aktivität, die die Anzeige zeigt (ich die richtige Einheit-ID in dem eigentlichen Code verwenden)
import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ProgressBar;
import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.InterstitialAd;
public class AdFullScreen extends Activity {
private static final String TAG = "AdFullScreen";
private static final String AD_UNIT_ID = "my-unit-id";
private InterstitialAd interstitialAd;
ProgressBar prgrssBrAd;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.ad_layout);
prgrssBrAd = (ProgressBar) findViewById(R.id.prgrssBrAd);
interstitialAd = new InterstitialAd(this);
interstitialAd.setAdUnitId(AD_UNIT_ID);
interstitialAd.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
Log.e(TAG, "onAdLoaded");
prgrssBrAd.setVisibility(View.GONE);
if (interstitialAd.isLoaded()) {
interstitialAd.show();
} else {
Log.e(TAG, "Interstitial ad was not ready to be shown.");
finish();
return;
}
}
@Override
public void onAdFailedToLoad(int errorCode) {
String message = String.format("onAdFailedToLoad (%s)",
getErrorReason(errorCode));
Log.e(TAG, message);
finish();
return;
}
@Override
public void onAdClosed() {
finish();
return;
}
@Override
public void onAdLeftApplication() {
Log.e(TAG, "onAdLeftApplication");
finish();
return;
}
});
LocationManager locationManager = (LocationManager) this
.getSystemService(Context.LOCATION_SERVICE);
String locationProvider = LocationManager.GPS_PROVIDER;
Location lastKnownLocation = locationManager
.getLastKnownLocation(locationProvider);
if (lastKnownLocation == null) {
locationProvider = LocationManager.NETWORK_PROVIDER;
lastKnownLocation = locationManager
.getLastKnownLocation(locationProvider);
Log.e(TAG, "Last location not available by GPS");
} else {
Log.e(TAG, "Last location available by GPS");
}
// Check the logcat output for your hashed device ID to get test ads on
// a physical device.
AdRequest.Builder bldr = new AdRequest.Builder();
if (lastKnownLocation != null) {
Log.e(TAG, "Last location available");
bldr.setLocation(lastKnownLocation);
} else {
Log.e(TAG, "Last location not available by any provider");
}
AdRequest adRequest = bldr.build();
// Load the interstitial ad.
interstitialAd.loadAd(adRequest);
}
@Override
public void onStart() {
super.onStart();
// The rest of your onStart() code.
}
@Override
public void onStop() {
super.onStop();
// The rest of your onStop() code.
}
/** Gets a string error reason from an error code. */
private String getErrorReason(int errorCode) {
String errorReason = "";
switch (errorCode) {
case AdRequest.ERROR_CODE_INTERNAL_ERROR:
errorReason = "Internal error";
break;
case AdRequest.ERROR_CODE_INVALID_REQUEST:
errorReason = "Invalid request";
break;
case AdRequest.ERROR_CODE_NETWORK_ERROR:
errorReason = "Network Error";
break;
case AdRequest.ERROR_CODE_NO_FILL:
errorReason = "No fill";
break;
}
return errorReason;
}
}
Das Layout (ich keine Layouts mit dem gleichen Ergebnis zu erzielen, versucht habe).
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ProgressBar
android:id="@+id/prgrssBrAd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" />
</RelativeLayout>
Ich würde jede mögliche Hilfe schätzen, die Sie zur Verfügung stellen können.
UPDATE
Es scheint, dass ich das Problem finden verwaltet. Es wurde auf die AndroidManifest Konfiguration bezogen werden: alte, Anzeigen sind nicht anklickbar:
<activity
android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
android:launchMode="singleInstance" />
Der war gut, funktioniert gut:
<activity
android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />
Sorry für die Verwirrung, ich kann nicht erinnern, wann ich diese Veränderung hat .
war dies die einzige Änderung, die Sie gemacht haben? Ich habe die "gute Version", kann aber immer noch nicht auf die Anzeige klicken. –
Ja, war es. Hast du es auf einem anderen Testgerät ausprobiert? – drk
Ich habe schon eine Lösung für mein Problem gefunden. Ich habe eine Interstitial-Anzeige nach dem Aufruf der finish() -Funktion angezeigt. Die Anwendung zeigte die Anzeige, da sie zuvor geladen wurde, aber die Anwendung war bereits nicht mehr vorhanden, sodass der Klick nicht funktionierte. –