1

私がするとき

adRequest.addTestDevice(AdRequest.TEST_EMULATOR);
adView.loadAd(adRequest); 

logcat は、私が広告をリクエストしていると報告しているようですが、次のように表示されます

09-21 11:48:13.720: W/Ads(712): Invalid unknown request error: Cannot determine request type. 

広告ユニット ID は正しいですか? それでも、私が使用している ID は、AdMod API コードのリクエスト/レスポンス画面から正しく貼り付けられています。私は何を間違っていますか?

実際のデバイス (Android 2.2.1 を実行している HTC Inspire) を使用しようとすると、さらに困惑します。Logcat はサイレントですが、テスト広告は表示されません。次の「xxxxxxxx」の代わりに何を入れるかを正確に教えてください。

adRequest.addTestDevice("xxxxxxxx");

テキスト文字列「TEST_DEVICE_ID」、デバイスのシリアル番号などを試してみました。喜びはありません。シリアル番号などをハッシュする必要がありますか? JDK 1.7 を使用しています。

4

2 に答える 2

5

広告ユニット ID を確認してください。AdMob から取得した広告ユニット ID ですか?広告ユニットに空白がありますか? AdMob がその ID を認識しないため、このエラーが発生しています。

テスト デバイスの設定に関しては、次の方法でエミュレータのテスト モードを設定します。

adRequest.addTestDevice(AdRequest.TEST_EMULATOR);

デバイスでテストモードを設定するには、デバイスで AdRequest を作成し、LogCat を確認します。SDK は次のように表示されます。

To get test ads on this device, call adRequest.addTestDevice("0123456789ABCDEF0123456789ABCDEF");

この番号はデバイス ID のハッシュであり、LogCat から取得するのが最も簡単です。

于 2012-09-21T23:40:30.813 に答える
1

まず第一に、コードでエミュレーターと実際のデバイスの違いの問題に対処したかどうかはわかりません。アプリがエミュレーターで実行されているか、実際のデバイスで実行されているかを区別する必要があります。これは、次の方法で実行できます。

    boolean inEmulator = "generic".equals(Build.BRAND.toLowerCase());

これは、エミュレーターを使用している場合は true に戻り、そうでない場合は false に戻ります。次に、inEmulaotor の値に応じて広告を処理する方法を構築する必要があります。

    if (inEmulator) 
    {
        adRequest.addTestDevice(AdRequest.TEST_EMULATOR);
    } 
    else 
    {
        adRequest.addTestDevice("11111111101111111110111111111011");
    }

ここで、エミュレータ テスト デバイスを追加するか、実際のデバイスの 32 文字のデバイス ID を追加する必要があります。(この ID は英数字です) 実際のデバイスのこの ID は、テスト モードの外で実際のデバイスで admob を実行することによって見つけることができ、logcat に表示されます。

最後に、testing = true を設定して、広告の読み込みを開始する必要があります。

    adRequest.setTesting(true);
    adView.loadAd(adRequest);

全体として、このコードの作業セットは次のようになります。

    boolean isTestingAds = true; //this is a switch, to make it easy on changing modes

    boolean inEmulator = "generic".equals(Build.BRAND.toLowerCase());
    AdView adView = new AdView(this, AdSize.BANNER, MY_AD_UNIT_ID);

    AdRequest adRequest = new AdRequest();

    if (isTestingAds) 
    {
        if (inEmulator) 
        {
            adRequest.addTestDevice(AdRequest.TEST_EMULATOR);
        } 
        else 
        {
            adRequest.addTestDevice("11111111101111111110111111111011");
        }
        adRequest.setTesting(true);
    }

    adView.loadAd(adRequest);

広告ビューをコンテンツ ビューに追加し、マニフェスト ファイルを更新することを忘れないでください。MY_AD_UNIT_ID は、この特定のアプリの admob から取得したコードです。

最後にIDを見つけるために、設定します

    isTestingAds = false;

次に、テストするデバイスを設定するために必要な # が LogCat に表示されます。

実際のデバイスからデータを取得してログに記録していない場合、それはまったく別の問題です。

于 2012-09-21T21:25:49.967 に答える