AdmobのデバイスIDを取得するにはどうすればよいですか


102

私はEclipseを使用してAndroid用のアプリケーションを開発していますが、Admobを統合してお金を稼ぎたいと思っています。チュートリアルでは、LogCatを監視してIDを見つける必要があると記載されていますが、どこにありますか? 代替テキスト

テストモードまたはリアルモードで実行すると、広告が返されたことがeclipseに通知されることがありますが、emuには表示されません...誰か説明できますか?

回答:


103

エミュレータでAdMob広告を実行している場合、IDはありません。AdManagerメソッドを使用して、logcatが言うようにTEST_EMULATORに設定するだけです。USBデバッグを使用して実際のデバイスで実行し、logcatを監視すると、IDがそこに表示されます。


50
上記の用語「adRequest」を使用してフィルタリングした後、「12-19 17:48:25.615:I / Ads(2132):このデバイスでテスト広告を取得するには、adRequest.addTestDevice( "D9XXXXXXXXXXXXXXXXXXXXXXXXXXXXXを呼び出します。 ");"。コードをコピーして貼り付けて、楽しんでください。
Ashok Goli

5
私のログには、「このデバイスでテスト広告を取得するには、AdRequest.Builder.addTestDevice( "5EXXXX etc")を使用します」と書かれています。
マークブリッジズ

2
logcatのフィルターフィールドに「addTestDevice」と入力するだけです。
Gayan Weerakutti

Google Playに公開されている、署名されたAPKからデバイスIDを見つけることができますか?
Gayan Weerakutti

108

承認された回答は、エミュレータまたは少数のデバイスでのみテストしている場合に機能しますが、多数のデバイスでテストしている場合は、実行中のデバイスのデバイスIDをプログラムで追加する手段が必要になる場合があります。

次のコードは、現在実行中のデバイスをプログラムによってadviewテストデバイスにします

...
    if(YourApplication.debugEnabled(this)) //debug flag from somewhere that you set
    {

        String android_id = Settings.Secure.getString(this.getContentResolver(), Settings.Secure.ANDROID_ID);
        String deviceId = md5(android_id).toUpperCase();
        mAdRequest.addTestDevice(deviceId);
        boolean isTestDevice = mAdRequest.isTestDevice(this);

        Log.v(TAG, "is Admob Test Device ? "+deviceId+" "+isTestDevice); //to confirm it worked
    }

Android IDのmd5を使用する必要があり、大文字である必要があります。これが私が使ったmd5コードです

public static final String md5(final String s) {
    try {
        // Create MD5 Hash
        MessageDigest digest = java.security.MessageDigest
                .getInstance("MD5");
        digest.update(s.getBytes());
        byte messageDigest[] = digest.digest();

        // Create Hex String
        StringBuffer hexString = new StringBuffer();
        for (int i = 0; i < messageDigest.length; i++) {
            String h = Integer.toHexString(0xFF & messageDigest[i]);
            while (h.length() < 2)
                h = "0" + h;
            hexString.append(h);
        }
        return hexString.toString();

    } catch (NoSuchAlgorithmException e) {
        Logger.logStackTrace(TAG,e);
    }
    return "";
}

編集:どうやら、MD5メソッドは完璧ではないようです。https: //stackoverflow.com/a/21333739/2662474この機能はもう必要ないので、テストしていません。幸運を!


1
これはおそらくcom.google.android.gms.internal.cm.l(Context ctx)、問題のIDを返す内部難読化メソッド(バージョン4.0.30)である呼び出しよりも優れています
Amr Mostafa

これありがとう!それをPythonに入れるだけimport hashlib; hashlib.md5(android_id.lower()).hexdigest().upper()です。これにより、アプリをダウンロードしてAndroid IDを表示し、そのMD5を取得できます。
douggard 2014年

また、Settingsクラスはどのパッケージからのものですか?
oabarca 2014

@josephこれは正しく機能していません。一部の文字が欠落しています。
2015

5
この回答を参照してください:stackoverflow.com/a/21333739/4019544この実装は一部のゼロを処理していません。ここにリンクされている投稿で受け入れられている回答と同様です。
MaxJ

17

ドキュメントから、Google広告に似たもの:

public AdRequest.Builder addTestDevice(String deviceId)

デバイスにテスト広告を受信させます。deviceIdは 、新しい広告を作成した後にlogcat出力を表示することで取得できます。エミュレーターの場合は、DEVICE_ID_EMULATORを使用します。

たとえば、LogCatに表示されるテストデバイスIDは"B86BC9402A69B031A516BC57F7D3063F"次のとおりです。

AdRequest adRequest = new AdRequest.Builder() 
        .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
        .addTestDevice("B86BC9402A69B031A516BC57F7D3063F")
        .build();

15
  • アプリはPlayストアで公開されていますか- ライブ広告付き

アプリがPlayストアにあり、ライブ広告を表示している場合(ライブ広告をテストに使用できない場合)、デバイスIDをコードに追加して、実際のデバイスのAdmobからテスト広告を取得します。開発中やテスト中はライブ広告を使用しないでください。

logcatで実際のデバイスIDを取得するには、

  1. USBデバッグモードのデバイスをAndroid Studioに接続する

USBデバッグモード(開発者向けオプション)

  1. Admobからライブ広告を表示するデバイスで任意のアプリを開きます。接続されたデバイスで、Playストアからアプリをダウンロードした場合(ライブ広告を表示)、そのアプリを開くか、ライブAdmob広告を表示する他のアプリを開きます。デバイスはインターネットに接続している必要があります。

  2. 以下に示すように、「デバイス」でlogcatをフィルタリングして、テストデバイスを取得します。

logcatでデバイスIDをテストする

デバイスでのAdmob広告テストの読み取り-デバイスIDはさらに変化する可能性があります


Unity Dev Buildを実行しているときに探していましたが、これは機能しました。ありがとう。
Avisek Chakraborty

13

ハッシュデバイスIDを取得するには

oncreate内

String android_id = Settings.Secure.getString(this.getContentResolver(), Settings.Secure.ANDROID_ID);
        String deviceId = md5(android_id).toUpperCase();
Log.i("device id=",deviceId);

次に、このクラスをmd5()に追加します

public String md5(String s) {
        try {
            // Create MD5 Hash
            MessageDigest digest = java.security.MessageDigest.getInstance("MD5");
            digest.update(s.getBytes());
            byte messageDigest[] = digest.digest();

            // Create Hex String
            StringBuffer hexString = new StringBuffer();
            for (int i=0; i<messageDigest.length; i++)
                hexString.append(Integer.toHexString(0xFF & messageDigest[i]));
            return hexString.toString();

        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return "";
    }

おかげで、実際にはmd5()関数に微妙なバグがあります。hexStringに追加する行は次の hexString.append(String.format("%02X", 0xFF & messageDigest[i])); ようになります。先頭のゼロが出力されないため、実装ではバイト値が15以下の場合に誤った出力が生成されます。
Ant

md5()は誤ったIDを生成します。561600E037F6E9EEBE405B487459D786が必要ですが、56160E037F6E9EEBE405B487459D786
Foobnix

7

XMLレイアウトを使用して広告を表示していて、レイアウトXMLファイルに「ads:testDevices =」がすでにある場合、AdMobはLogCat出力に「このデバイスでテスト広告を取得するには...」メッセージを印刷しません。それを取り出すと、LogCatメッセージが表示されます。

以下は、LogCatでデバイスIDを見つける方法に関する素晴らしいチュートリアルです。http://webhole.net/2011/12/02/android-sdk-tutorial-get-admob-test-device-id/


7

実際のデバイスでアプリをテストしている場合は、デバイスIDを提供するこの小さなAndroidアプリを試すことができます。

https://play.google.com/store/apps/details?id=pe.go_com.admobdeviceidfinder&hl=en

ハッシュされたデバイスIDを直接取得します。お役に立てれば。


これが問題であるかどうかはわかりません。エミュレータで覚えているように、Playストアからインストールすることはできません。おそらく、よりプログラム的なソリューション(またはこのアプリのソースの関連部分)の方が良いでしょう。
ガーボルBakos

1
彼らの多くは、プログラムによる解決策を投稿しています。エミュレータでは機能しませんが、IDを取得する簡単で簡単な方法であるため、これを投稿しました。とにかく答えを編集しました。
Sanath Bharadwaj

正しいIDを提供しなくなりました。
Evorlor

6

テスト広告を表示するもう1つの最も簡単な方法は、バナーにテストデバイスIDを使用して、すべてのデバイスに AdMobテスト広告表示することです。「ca-app-pub-3940256099942544 / 6300978111」。このAdMobテスト広告IDは、google:linkの AdMobチュートリアルに記載されています。これは上記のリンクからの引用です: ここに画像の説明を入力してください


5

logcatで取得できない場合は、デバイスIDを入力して広告をロードし、アプリを実行してから、ログに移動します。その後、ログを取得しI/Ads: Use AdRequest.Builder.addTestDevice("XXXXXXXXXXXXXXXXXXXXXXXXX") to get test ads on this device.、アプリケーションを再度実行します。


5

デバイスIDを取得するには、スマートフォンをUSBに接続し、android studioでlogcatを開きます。以下のコードを使用します(デバイスでUSBデバッグが有効になっていることを確認してください)。次に、Google広告が含まれている任意のアプリを開きます(Playストアから任意のアプリをダウンロードします)。画像に示すように、Logcatに「set」と入力します。デバイスIDは画像で強調表示されています

setTestDeviceIds(Arrays.asList( "CC9DW7W7R4H0NM3LT9OLOF7455F8800D"))

ここに画像の説明を入力してください

次のように、コードでテストデバイスを使用します。

val adRequest = AdRequest
        .Builder()
        .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
        .addTestDevice("CC9DW7W7R4H0NM3LT9OLOF7455F8800D")
        .build()

4

テスト中のデバイスがいくつかあり、それぞれのデバイスIDを手動で取得したくありません。プログラムでDeviceIDを取得するためのここでの回答が機能しなかったため(ゼロが欠落)、テスト広告の代わりに実際の広告が表示されました。

これをApplicationクラスのonCreateに配置してから、ゲッターメソッドを使用してdeviceIdを公開し、全体にアクセスできるようにしました。

@Override
public void onCreate() {        
    super.onCreate();

    String androidId =  Settings.Secure.getString(this.getContentResolver(), Settings.Secure.ANDROID_ID);
    deviceId = MD5(androidId).toUpperCase();        
}  

public static String getDeviceId() {
    return deviceId;
}

private static String deviceId;

そしてMD5メソッド。

public String MD5(String md5) {
   try {
        java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
        byte[] array = md.digest(md5.getBytes());
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < array.length; ++i) {
            sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1,3));
        }
        return sb.toString();
    } catch (java.security.NoSuchAlgorithmException e) {
    }
    return null;
}

次に、これを使用して、AdRequestオブジェクトを作成します。

if(BuildConfig.DEBUG) {
     AdRequest adRequest = new AdRequest.Builder()
          .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
          .addTestDevice(Application.getDeviceId())
          .build();
     adView.loadAd(adRequest);
} else {
     AdRequest adRequest = new AdRequest.Builder()
          .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
          .build();
     adView.loadAd(adRequest);
}

4

このように機能します:

InterstitialAd mInterstitial = new InterstitialAd(this);
    mInterstitial.setAdUnitId("your id");
    AdRequest adRequest = new AdRequest.Builder()
    .addTestDevice("some words")
    .build();
    mInterstitial.loadAd(adRequest);

アプリを実行したら... Logcatに移動し、Verboseを入力して検索フィールドにAdRequestを入力すると、idデバイスにdonwが表示されます。

ここに画像の説明を入力してください

.addTestDevice( "ここにIDを入力");

お役に立てば幸いです。


2

このクラスをプロジェクトに追加します

import android.content.Context;
import android.provider.Settings;
import android.text.TextUtils;

import com.google.android.gms.ads.AdRequest;
import java.io.UnsupportedEncodingException;

public class AdsHelper {
public static AdRequest createRequest(Context context) {
    AdRequest.Builder adRequest = new AdRequest.Builder();
    adRequest.addTestDevice(AdRequest.DEVICE_ID_EMULATOR);
    if (BuildConfig.DEBUG) {
        String deviceId = MD5(getDeviceId(context));
        if (!TextUtils.isEmpty(deviceId)) {
            adRequest.addTestDevice(deviceId.toUpperCase());
        }
    }

    return adRequest.build();
}



    private static String MD5(String md5) {
        if (TextUtils.isEmpty(md5)) return null;
        try {
            java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
            byte[] array = md.digest(md5.getBytes("UTF-8"));
            StringBuilder sb = new StringBuilder();
            for (byte anArray : array) {
                sb.append(Integer.toHexString((anArray & 0xFF) | 0x100).substring(1, 3));
            }
            return sb.toString();
        } catch (java.security.NoSuchAlgorithmException ignored) {
        } catch(UnsupportedEncodingException ignored){
        }
        return null;
    }

    private static String getDeviceId(Context context) {
        try {
            return Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
        } catch (Exception e) {
            return "";
        }

    }
}

使用法:

AdRequest adRequest = AdsHelper.createRequest(this);

おかげで、結果はadRequestによってlogcatに表示されたものと同じです。
user2342558

0

アプリ: build.gradle

dependencies {
...
compile 'com.google.firebase:firebase-ads:10.0.1'
...
}

あなたの活動:

 AdRequest.Builder builder = new AdRequest.Builder();
        if(BuildConfig.DEBUG){

            String android_id = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
            String deviceId = io.fabric.sdk.android.services.common.CommonUtils.md5(android_id).toUpperCase();
            builder.addTestDevice(deviceId);
        }
        AdRequest adRequest = builder.build();
    adView.loadAd(adRequest);
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.