Ich verwende firebase-ads: 9.2.0 mit API Level 24.
Das Unity-Ads-aar-Modul wird importiert, indem compile (Name: 'unity-ads', ext: 'aar') zu meinem build.gradle hinzugefügt wird.
Alles läuft gut, wenn ich mich für die direkte Verwendung der UnityAds API entschieden habe.
Aber wenn ich versuche, Unity-Anzeigen wie folgt in AdMob zu integrieren:
mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance( this );
mRewardedVideoAd.setRewardedVideoAdListener(new RewardedVideoAdListener() {
@Override
public void onRewardedVideoAdLoaded() {
logger.debug("onRewardedVideoAdLoaded");
}
@Override
public void onRewardedVideoAdOpened() {
logger.debug("onRewardedVideoAdOpened");
}
@Override
public void onRewardedVideoStarted() {
logger.debug("onRewardedVideoStarted");
}
@Override
public void onRewardedVideoAdClosed() {
logger.debug("onRewardedVideoAdClosed");
}
@Override
public void onRewarded(RewardItem rewardItem) {
logger.debug("onRewarded");
}
@Override
public void onRewardedVideoAdLeftApplication() {
logger.debug("onRewardedVideoAdLeftApplication");
}
@Override
public void onRewardedVideoAdFailedToLoad(int i) {
Toast.makeText(
getApplicationContext(),
"onRewardedVideoAdFailedToLoad",
Toast.LENGTH_SHORT ).show();
}
});
AdRequest adRewardRequest = new AdRequest.Builder()
.addTestDevice("E921B48960E16DA3ABD13C4AFB7052A4")
.build();
mRewardedVideoAd.loadAd(
getResources().getString(R.string.reward_ad_unit_id),
adRewardRequest );
Es kommt immer zurück
Es gab ein Problem bei der Anzeigenantwort. Fehlercode: 0
Fehler beim Laden der Anzeige: 0.
Gibt es etwas, was ich falsch gemacht habe?
Oder ich habe nur ein paar Schritte verpasst?
Hier ist mein AdMob-Seiten-Screenshot:
Okay, ich habe Lösungen gefunden.
Die erste Sache ist, dass ich keine Adapter in mein Projekt aufgenommen habe.
Ich muss die Adpater hier herunterladen: Netzwerkadapter von Drittanbietern
Und legen Sie es in den libs-Ordner. Diese Adapter sind nicht in den SDKs enthalten (wenn Sie sie von github herunterladen).
Zweitens muss ich diese Zeile aus meinem Code entfernen.
.addTestDevice("E921B48960E16DA3ABD13C4AFB7052A4")
Wenn der AdMob dieses Gerät als Testgerät behandelt, scheint keine Videoanzeige (zumindest in meinem Fall) herunterzuladen.
Dasselbe passiert, wenn ich mich für die Verwendung des AVD entschieden habe. Sie erzwingen die Anzeige von Testanzeigen auf diesen Emulatoren.
Also wechsle ich zu Genymotion, entferne das addTestDevice () und dann funktioniert es.
Normalerweise geschieht dies für neu erstellte Anzeigen. Warten Sie also eine Stunde und versuchen Sie es erneut.
public static final int ERROR_CODE_INTERNAL_ERROR
Etwas ist intern passiert. Beispielsweise wurde vom Anzeigenserver eine ungültige Antwort empfangen.
Konstanter Wert: 0
Quelle: Google-Entwickler
Ich verwende Interstitial-Anzeigen, aber ich glaube, dass es das gleiche Problem ist. Google gibt manchmal Code, der nicht funktioniert. Fragen Sie mich nicht, warum das so ist.
Fügen Sie dies nach Ihrer mRewardedVideoAd.loadAd()
-Methode hinzu:
mRewardedVideoAd.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
//your code when Ad is loaded
//you can show your ad immediately, but I don't suggest it
if (mRewardedVideoAd.isLoaded()) {
mRewardedVideoAd.show(); //this shows ad immediately
}
}
@Override
public void onAdClosed() {
}
});
Oder Sie können den AdListener festlegen, ihn nicht sofort anzeigen, sondern eine neue Methode erstellen:
public static void displayAd() {
if (mRewardedVideoAd.isLoaded()) {
mRewardedVideoAd.show();
}
}
Auf diese Weise können Sie diese Methode von jeder Aktivität aus aufrufen, die die Anzeige fast sofort anzeigt (weil sie bereits geladen wurde), ohne dass sie erneut geladen werden muss.