2

ここでちょっと変わった問題があります: xml 経由でテスト モードを設定すると、エミュレーターで予想されるテスト広告を受け取ります。ただし、プログラムで同じことをしようとすると、実際の広告が表示されるようです。Admob のドキュメントによると、これら 2 つのメソッドは同等であるはずですよね? ここに私のxmlコードがあります:

 <com.google.ads.AdView
                    android:id="@+id/adView"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentTop="true"
                    ads:adSize="BANNER"
                    ads:adUnitId="xxxxxxxxxxx"
                    ads:loadAdOnCreate="true">
    </com.google.ads.AdView>

そして、関連するJavaコードは次のとおりです。

@Override
public void onCreate(Bundle savedInstanceState) {
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    AdRequest adRequest = new AdRequest();
    adRequest.addTestDevice(AdRequest.TEST_EMULATOR);

}

前述のように、ads:testDevices="TEST_EMULATOR, TEST_DEVICE_ID" という行を上記の xml コードに挿入すると、テスト広告が正常に表示されます。何か案は?

4

2 に答える 2

1

プログラムで呼び出す必要はありません。

AdMob の SDK がどのデバイスであるかを取得するまでにしばらく時間がかかりました。実際のデバイスに関連するものだと思っていました ( adb devices )

しかし、これはそれをクリアした公式ドキュメントからのコメントです。

「現在のデバイスをテスト デバイスのリストに追加するために必要なコードを含むログ メッセージが表示されます」

みたいなメッセージが届くかもしれません

I/Ads(26674): To get test ads on this device, call adRequest.addTestDevice("F1254CDFBA84BDC27F5C7C6E12445D06");

その後、この ID を以下のようにレイアウト xml に配置するだけです。

<com.google.ads.AdView
    android:layout_alignParentBottom="true"
    android:id="@+id/adView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    ads:adSize="BANNER"
    ads:adUnitId="@string/publisherId"
    ads:loadAdOnCreate="true"
    ads:testDevices="TEST_EMULATOR, F1254CDFBA84BDC27F5C7C6E12445D06" />

それがあなたたちを助けることを願っています

パウロ・ミゲル・アルメイダ

于 2013-08-09T00:42:51.650 に答える
1

AdView オブジェクトで .loadAd(adRequest) を呼び出す必要があると思います。

Google の AdMob ドキュメントはこちら

com.google.ads.AdViewの追加セクション。

于 2012-07-17T17:34:09.717 に答える