APIレベル24でfirebase-ads:9.2.0を使用しています。
そして、unity-ads aarモジュールは、compile(name: 'unity-ads'、ext: 'aar')をbuild.gradleに追加することでインポートされます。
UnityAds APIを直接使用することを選択した場合、すべてがうまくいきます。
しかし、Unity-adsをAdMobと統合しようとすると、次のようになります。
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 );
常に戻ります
広告応答の取得に問題がありました。 ErrorCode:0
広告の読み込みに失敗しました:0。
私が間違った方法でそれをしたことはありますか?
または私はちょうどいくつかのステップを逃しましたか?
これが私のAdMobページのスクリーンショットです:
さて、私は解決策を見つけました。
まず、プロジェクトにアダプターを含めなかったということです。
ここからアダプタをダウンロードする必要があります: サードパーティのネットワークアダプタ
そしてそれをlibsフォルダーに入れます。これらのアダプターはSDKに含まれていません(githubからダウンロードした場合)。
次に、コードからこの行を削除する必要があります。
.addTestDevice("E921B48960E16DA3ABD13C4AFB7052A4")
AdMobがこのデバイスをテストデバイスとして扱う場合、ダウンロードされるビデオ広告はないようです(少なくとも私の場合)。
AVDを使用することを選択した場合も同じことが起こり、これらのエミュレーターにテスト広告を表示するように強制されます。
そこで、Genymotionに変更し、addTestDevice()を削除すると、機能します。
通常、これは新しく作成された広告で発生するため、1時間待ってから再試行してください。
public static final int ERROR_CODE_INTERNAL_ERROR
内部で何かが発生しました。たとえば、広告サーバーから無効な応答を受信しました。
定数値:0
インタースティシャル広告を使用していますが、同じ問題だと思います。グーグルは時々機能しないコードを与えます、それがなぜであるか私に尋ねないでください。
mRewardedVideoAd.loadAd()
メソッドの後にこれを追加します。
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() {
}
});
または、AdListenerを設定して、すぐに表示せずに、新しいメソッドを作成することもできます。
public static void displayAd() {
if (mRewardedVideoAd.isLoaded()) {
mRewardedVideoAd.show();
}
}
このようにして、このメソッドを任意のアクティビティから呼び出すことができます。このメソッドは、広告を再度ロードすることなく、ほぼ瞬時に(すでにロードされているため)広告を表示します。