私の問題は、テストモードかどうかに関係なく、アプリに広告がまったく表示されないことです。この質問はテストモードに固有のものにしておきますが、いったん機能するようになると、ライブ広告について心配することになります。
開発情報
開発にEclipseを使用しています。
AndroidアプリでGoogle Play ServicesとAdmobを使用して広告を設定しています。Googleが提供するオンラインドキュメントに記載されています。
AddTestDevice( "xxxxxxxxxxxxxxxx")を使用してデバイスIDを追加し、ハッシュされたデバイスIDを何度もチェックして、正しいことを確認しました。
問題(ログ情報については以下を参照)
デバイスでアプリケーションを実行すると、広告がまったく表示されません。これは、デバイスをテストデバイスとして追加した場合でも発生します。
私は高低を検索し、多くの同様の問題を発見しましたが、この特定の問題に対する答えはまだ見つかりません。
LogCat出力
10-28 13:56:41.659: I/Ads(1704): Starting ad request.
10-28 13:56:42.187: I/Ads(1704): No fill from ad server.
10-28 13:56:42.187: W/Ads(1704): Failed to load ad: 3
10-28 13:56:42.199: W/Ads(1704): No GMSG handler found for GMSG: gmsg://mobileads.google.com/jsLoaded?google.afma.Notify_dt=1414504602197
私の活動
package bb.hoppingbird;
import org.cocos2d.layers.CCScene;
import org.cocos2d.nodes.CCDirector;
import org.cocos2d.opengl.CCGLSurfaceView;
import com.google.Android.gms.ads.AdListener;
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 Android.app.Activity;
import Android.content.SharedPreferences;
import Android.media.MediaPlayer;
import Android.os.Bundle;
import Android.support.v4.view.ViewPager.LayoutParams;
import Android.util.DisplayMetrics;
import Android.view.KeyEvent;
import Android.widget.RelativeLayout;
import Android.widget.Toast;
public class MainActivity extends Activity {
private CCGLSurfaceView mGLSurfaceView;
//<!-- Admob Ads Using Google Play Services SDK -->
private static final String AD_UNIT_ID = "ca-app-pub-xxxxxxxxxxxxxxxxxxxx";
private static final String AD_INTERSTITIAL_UNIT_ID = "ca-app-pub-xxxxxxxxxxxxxxxxxxxx";
/** The Admob ad. */
private InterstitialAd interstitialAd = null;
public AdView adView = null;
public static MainActivity app;
public void onCreate(Bundle savedInstanceState)
{
app = this;
super.onCreate(savedInstanceState);
// set view
mGLSurfaceView = new CCGLSurfaceView(this);
//Ads ----------------
// Create the adView
RelativeLayout layout = new RelativeLayout(this);
layout.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
//<!-- Ads Using Google Play Services SDK -->
adView = new AdView(this);
adView.setAdSize(AdSize.SMART_BANNER);
adView.setAdUnitId(AD_UNIT_ID);
// Add the adView to it
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
params.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);
adView.setLayoutParams(params);
layout.addView(mGLSurfaceView);
layout.addView(adView);
setContentView(layout);
//New AdRequest
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.addTestDevice("0D47C6944503F0284666D16BB79BF684")
.build();
// Start loading the ad in the background.
adView.loadAd(adRequest);
//-----------------------------------------------------Interstitial Add
// Create an Interstitial ad.
interstitialAd = new InterstitialAd(this);
interstitialAd.setAdUnitId(AD_INTERSTITIAL_UNIT_ID);
interstitialAd.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
interstitialAd.show();
}
@Override
public void onAdFailedToLoad(int errorCode) {
Toast.makeText(getApplicationContext(), "Interstitial Ads loading failed", Toast.LENGTH_SHORT).show();
}
});
// Load the interstitial ad.
//showInterstitialAds();
//----------------------
// set director
CCDirector director = CCDirector.sharedDirector();
director.attachInView(mGLSurfaceView);
director.setAnimationInterval(1/60);
// get display info
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
G.display_w = displayMetrics.widthPixels;
G.display_h = displayMetrics.heightPixels;
G.scale = Math.max(G.display_w/1280.0f, G.display_h/800.0f);
G.width = G.display_w / G.scale;
G.height = G.display_h / G.scale;
// get data
SharedPreferences sp = CCDirector.sharedDirector().getActivity().getSharedPreferences("GameInfo", 0);
G.music = sp.getBoolean("music", true);
G.sound = sp.getBoolean("sound", true);
// create sound
G.soundMenu = MediaPlayer.create(this, R.raw.menu);
G.soundMenu.setLooping(true);
G.soundGame = MediaPlayer.create(this, R.raw.game);
G.soundGame.setLooping(true);
G.soundCollide = MediaPlayer.create(this, R.raw.collide);
G.soundJump = MediaPlayer.create(this, R.raw.jump);
G.soundLongJump = MediaPlayer.create(this, R.raw.long_jump);
G.soundSpeedDown = MediaPlayer.create(this, R.raw.speed_down);
G.soundSpeedUp = MediaPlayer.create(this, R.raw.speed_up);
G.soundDirection = MediaPlayer.create(this, R.raw.direction_sign);
G.soundClick = MediaPlayer.create(this, R.raw.menu_click);
G.soundCollect = MediaPlayer.create(this, R.raw.collect);
G.bgSound = G.soundMenu;
// show menu
CCScene scene = CCScene.node();
scene.addChild(new MenuLayer(true));
director.runWithScene(scene);
}
@Override
public void onPause()
{
if (adView != null) {
adView.pause();
}
super.onPause();
G.bgSound.pause();
CCDirector.sharedDirector().onPause();
}
@Override
public void onResume()
{
super.onResume();
if (adView != null) {
adView.resume();
}
if( G.music ) G.bgSound.start();
CCDirector.sharedDirector().onResume();
}
@Override
public void onDestroy()
{
// Destroy the AdView.
if (adView != null) {
adView.destroy();
}
super.onDestroy();
G.bgSound.pause();
CCDirector.sharedDirector().end();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if( keyCode == KeyEvent.KEYCODE_BACK )
{
CCDirector.sharedDirector().onKeyDown(event);
return true;
}
return super.onKeyDown(keyCode, event);
}
public void showInterstitialAds()
{
runOnUiThread(new Runnable() {
public void run() {
AdRequest interstitialAdRequest = new AdRequest.Builder().build();
interstitialAd.loadAd(interstitialAdRequest);
}
});
}
}
問題は、その特定のアプリがプレイストアから中断された場合にのみ発生します。パッケージ名を変更したり、新しいAdmob IDを変更したりできます。特定のadmob IDがコンプライアンスのために一時停止される可能性があります。
Adunitを作成してすぐに使用すると、このエラーが表示される場合があるため、30分以上後に広告をロードしてみてください。
needを使用するには[〜#〜] id [〜#〜] that Google provide現在のテストデバイス用。あなたはlogcatでそれを見つけることができます、このようなものを見つけてください:
Ads: Use AdRequest.Builder.addTestDevice("903A70A3D439E256BAED43E65A79928E") to get test ads on this device.
在庫の運もあります。私もこのために直面しています。 広告の読み込みに失敗しました:
AdMobアカウントがバナー広告のみに設定されており、インタースティシャル広告を使用している場合、この問題が発生する可能性があります。私の2セント。
私の場合、請求先住所が確認されず、広告がブロックされていることがわかりました。自動的に修正される請求先住所を確認します。 https://www.google.com/adsense/
基本的に、テストデバイスIDをadBuilderに渡すだけです。
/** adRequest Object For test device */
AdRequest adRequest = new AdRequest.Builder().addTestDevice("TEST_DEVICE_ID").build();
/** adRequest Object For Production Device*/
AdRequest adRequest = new AdRequest.Builder().build();
テストダイブID idBuilderリクエストなしでlogCatにテストダイブIDを見つけることができます。
I/Ads:AdRequest.Builder.addTestDevice( "TEST_DEVICE_ID")を使用して、このデバイスでテスト広告を取得します。
Galaxy S4でテストしていましたが、後で友人がNote 2でテストしましたが、バナー広告は表示されませんでした。したがって、問題はテストデバイスIDでした。テストする場合は、テストデバイスIDがテスト対象のデバイスのものであることを確認してください。
アプリがDesigned for Familiesをサポートしている場合。
Bundle extras = new Bundle();
extras.putBoolean("is_designed_for_families", true);
AdRequest request = new AdRequest.Builder()
.addNetworkExtrasBundle(AdMobAdapter.class, extras)
.build();
私の場合、バナー広告の応答コード3は、APIが高く、特にワイドスクリーン(スマートバナーサイズを使用している)のあるデバイスで、依存関係がcom.google.Android.gms.ads
からcom.google.firebase:firebase-ads
(Firebaseを使用している場合)私の問題を解決しました。
今日もこの問題がありました。アプリは中断されませんでしたが、apk名の変更は機能しました。本番環境にリリースするためにテストアプリの名前を変更しました。結果としてapk名を変更しました。これにより、MoPubとAdmobの両方で広告が埋められなくなりました。
私の場合、これは、その広告でサポートされていない地域から地域制限された広告をリクエストした結果のエラーでした。広告リクエストバンドルの場所を許容範囲内にハードコーディングした場合、またはリクエストに場所をまったく含めない場合、広告は正常にレンダリングされました。それ以外の場合、コンソールのOPと同じエラーが発生しました。
ad to loadを待っていないためかもしれません。
私にとっては、AdLoaded
のAdListener
メソッドを実装することでうまくいきました。
mAdInterstitial.loadAd(AdRequest.Builder().addTestDevice("XXXXXXX").build())
mAdInterstitial.adListener = object : AdListener() {
override fun onAdLoaded() {
mAdInterstitial.show()
}
}
私の場合、エミュレータを使用してテストし、同じエラーが発生していました。電話に変更した後、すべてが動作します。
別のテストデバイスを試してください。
Admobサーバーから広告が無効になっているため、コードは問題ありません。パッケージ名を変更して、広告が表示されるかどうかを確認してください。次に、admobに連絡して問題を確認します。
私もこの問題を抱えていました。 Admob.comにアクセスし、「広告ユニットID」を取得できるように「手動で」アプリを追加するまでそうではありませんでした。この広告ユニットID文字列を引数adView.setAdUnitId
呼び出し。次に、Eclipseで生成した「リリース」APKをインストールして開きました。ファイル>エクスポート>エクスポートAndroid Application