Bagaimana saya bisa mendapatkan ID perangkat untuk Admob

102

Saya menggunakan Eclipse untuk mengembangkan aplikasi untuk android, dan saya ingin mengintegrasikan Admob untuk menghasilkan uang. Tutorial mengatakan saya harus menonton LogCat untuk menemukan ID, tetapi di mana itu? teks alt

Ketika saya menjalankan baik dalam mode uji atau mode nyata, terkadang gerhana akan memberi tahu bahwa Iklan dikembalikan, namun tidak muncul di emu ... adakah yang bisa menjelaskan?

Sheldon Rong
sumber

Jawaban:

103

Jika Anda menjalankan iklan admob di emulator, maka tidak ada ID. cukup gunakan metode AdManager dan setel ke TEST_EMULATOR seperti yang dikatakan logcat. Jika Anda menjalankan perangkat sebenarnya dengan debugging usb dan melihat logcat, ID akan muncul di sana.

Phobos
sumber
50
Setelah memfilter menggunakan istilah "adRequest" yang disebutkan di atas, Anda akan menemukan baris - "12-19 17: 48: 25.615: I / Ads (2132): Untuk mendapatkan iklan percobaan pada perangkat ini, panggil adRequest.addTestDevice (" D9XXXXXXXXXXXXXXXXXXXXXXXXXXXXX ");". Cukup salin dan tempel kode dan bersenang-senanglah.
Ashok Goli
5
Log saya mengatakan: "Gunakan AdRequest.Builder.addTestDevice (" 5EXXXX dll ") untuk mendapatkan iklan percobaan di perangkat ini."
Mark Bridges
2
Cukup ketik "addTestDevice" pada bidang filter di logcat.
Gayan Weerakutti
Bisakah kita menemukan ID perangkat dari APK hangus, yang diterbitkan ke Google Play?
Gayan Weerakutti
108

Jawaban yang diterima akan berfungsi jika Anda hanya menguji pada Emulator atau pada beberapa perangkat, tetapi jika Anda menguji pada banyak perangkat, Anda mungkin memerlukan beberapa cara untuk menambahkan ID perangkat perangkat yang sedang berjalan secara proramatis.

Kode berikut akan membuat perangkat yang sedang berjalan menjadi perangkat uji adview secara terprogram

...
    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
    }

Anda perlu menggunakan md5 ID Android, dan harus menggunakan huruf besar. Ini kode md5 yang saya gunakan

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 "";
}

EDIT: Ternyata metode MD5 tidak sempurna, dan disarankan untuk mencoba https://stackoverflow.com/a/21333739/2662474 Saya tidak lagi membutuhkan fitur ini jadi saya belum menguji. Semoga berhasil!

joseph
sumber
1
Ini mungkin lebih baik daripada menelepon com.google.android.gms.internal.cm.l(Context ctx)yang merupakan metode yang dikaburkan internal (dalam versi 4.0.30) yang mengembalikan ID yang dimaksud
Amr Mostafa
Terima kasih untuk ini! Hanya untuk memasukkannya ke dalam Python import hashlib; hashlib.md5(android_id.lower()).hexdigest().upper(),. Dengan cara ini Anda dapat mengunduh aplikasi untuk menunjukkan ID Android Anda dan mengambil MD5-nya.
douggard
dan kelas Pengaturan berasal dari paket apa?
oabarca
@joseph ini tidak berfungsi dengan benar. itu merindukan beberapa karakter.
5er
5
Lihat jawaban ini: stackoverflow.com/a/21333739/4019544 Implementasi ini tidak menangani beberapa angka nol, serupa dengan jawaban yang diterima pada posting yang ditautkan di sini.
MaxJ
17

Sesuatu yang mirip dengan Google Ads, dari dokumentasi:

public AdRequest.Builder addTestDevice (String deviceId)

Menyebabkan perangkat menerima iklan percobaan. DeviceId dapat diperoleh dengan melihat keluaran logcat setelah membuat iklan baru. Untuk emulator, gunakan DEVICE_ID_EMULATOR.

misalnya ID Perangkat Uji saya yang ditampilkan di LogCat adalah "B86BC9402A69B031A516BC57F7D3063F":

AdRequest adRequest = new AdRequest.Builder() 
        .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
        .addTestDevice("B86BC9402A69B031A516BC57F7D3063F")
        .build();
Jorgesys
sumber
16
  • Apakah aplikasi Anda dipublikasikan di Play Store - dengan iklan aktif :

Jika aplikasi Anda di Play Store menampilkan iklan langsung - Anda tidak dapat menggunakan iklan langsung untuk pengujian - tambahkan ID perangkat Anda dalam kode untuk mendapatkan iklan percobaan dari Admob di perangkat Anda yang sebenarnya. Jangan pernah menggunakan iklan langsung selama pengembangan atau pengujian.

Untuk mendapatkan ID perangkat yang sebenarnya di logcat,

  1. Hubungkan perangkat Anda dalam mode debug USB ke Android Studio

Mode debug USB (opsi Pengembang)

  1. Buka aplikasi apa pun di perangkat Anda yang menampilkan iklan langsung dari Admob: Di perangkat yang terhubung, jika Anda mengunduh aplikasi dari play store (menampilkan iklan langsung), buka aplikasi itu atau buka aplikasi lain yang menampilkan iklan Admob langsung. Perangkat Anda harus memiliki koneksi internet.

  2. Filter logcat dengan 'device' seperti yang ditunjukkan di bawah ini untuk mendapatkan perangkat uji

Uji ID Perangkat di logcat

Baca pengujian iklan Admob di perangkat - ID perangkat dapat berubah lebih lanjut

Pinky Walve
sumber
Saya mencari saat menjalankan Unity Dev Build dan yang ini berhasil. Terima kasih.
Avisek Chakraborty
13

Untuk mendapatkan ID Perangkat Hash

di dalam oncreate

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

lalu tambahkan kelas ini untuk 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 "";
    }
Cristiana Chavez
sumber
Terima kasih, tetapi sebenarnya ada bug halus dalam fungsi md5 () Anda. Baris tempat Anda menambahkan hexString harus seperti ini: hexString.append(String.format("%02X", 0xFF & messageDigest[i])); Implementasi Anda akan memberikan keluaran yang salah pada nilai byte 15 atau kurang karena nol di depannya tidak akan menjadi keluaran.
Semut
md5 () Anda menghasilkan ID yang salah, diharapkan 561600E037F6E9EEBE405B487459D786 tetapi 56160E037F6E9EEBE405B487459D786
Foobnix
7

Jika Anda menampilkan iklan menggunakan tata letak XML dan jika Anda sudah memiliki "ads: testDevices =" di file XML tata letak Anda, AdMob TIDAK akan mencetak pesan "Untuk mendapatkan iklan percobaan di perangkat ini ..." di keluaran LogCat. Keluarkan itu dan kemudian Anda akan melihat pesan LogCat.

Berikut adalah tutorial bagus tentang cara menemukan id perangkat di LogCat: http://webhole.net/2011/12/02/android-sdk-tutorial-get-admob-test-device-id/

Oto Zars
sumber
7

Jika Anda menguji aplikasi Anda pada perangkat yang sebenarnya, maka Anda dapat mencoba aplikasi android kecil ini yang memberi Anda id perangkat:

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

Anda akan mendapatkan id perangkat yang di-hash secara langsung. Semoga ini membantu.

Sanath Bharadwaj
sumber
Saya tidak yakin tentang apa pertanyaannya. Seingat saya dari emulator Anda tidak dapat menginstal dari Play Store. Mungkin solusi yang lebih terprogram (atau bagian yang relevan dari sumber aplikasi ini) akan lebih baik.
Gábor Bakos
1
Banyak dari mereka telah memposting solusi terprogram. Saya baru saja memposting ini karena ini cara yang sedikit mudah dan langsung untuk mendapatkan id meskipun tidak berfungsi di emulator. Bagaimanapun saya mengedit jawabannya.
Sanath Bharadwaj
Tidak lagi memberikan ID yang benar.
Evorlor
6

Cara termudah lainnya untuk menampilkan iklan percobaan adalah dengan menggunakan id perangkat uji untuk spanduk guna menampilkan iklan uji admob untuk semua perangkat . " ca-app-pub-3940256099942544/6300978111 ". ID iklan uji admob ini dicatat dalam tutorial admob di google: link . Ini kutipan dari tautan di atas: masukkan deskripsi gambar di sini

  • Ini adalah id perangkat uji untuk interstisial " ca-app-pub-3940256099942544/1033173712 ". Ini juga digunakan dalam tutorial interstisial
huu duy
sumber
5

Jika Anda tidak mendapatkannya di logcat, cukup masukkan id perangkat apa pun dan muat Iklan Anda dan jalankan aplikasi Anda lalu buka log Anda akan mendapatkannya seperti itu I/Ads: Use AdRequest.Builder.addTestDevice("XXXXXXXXXXXXXXXXXXXXXXXXX") to get test ads on this device.setelah itu letakkan dan jalankan aplikasi Anda lagi.

Konteks
sumber
5

Untuk mendapatkan id perangkat, hubungkan ponsel Anda ke USB dan buka logcat di studio android Gunakan kode di bawah ini (pastikan Anda telah mengaktifkan USB debugging di perangkat Anda). Kemudian buka aplikasi apa pun (unduh aplikasi acak apa pun dari play store) yang memiliki Iklan Google. Dalam jenis Logcat "set" seperti yang ditunjukkan pada gambar. Id perangkat Anda ditampilkan disorot pada gambar sebagai

setTestDeviceIds (Arrays.asList ("CC9DW7W7R4H0NM3LT9OLOF7455F8800D")) .

masukkan deskripsi gambar di sini

Gunakan Test Device dalam kode Anda seperti yang ditunjukkan

val adRequest = AdRequest
        .Builder()
        .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
        .addTestDevice("CC9DW7W7R4H0NM3LT9OLOF7455F8800D")
        .build()
Ahmed Raza
sumber
4

Saya memiliki beberapa perangkat yang saya uji, dan tidak ingin mendapatkan DeviceID secara manual untuk masing-masing perangkat. Jawaban di sini untuk mendapatkan DeviceID secara terprogram tidak berfungsi untuk saya (Nol hilang) yang menyebabkan iklan sebenarnya ditampilkan, bukan iklan percobaan.

Saya meletakkan ini di kelas Aplikasi saya onCreate, dan kemudian mengekspos deviceId menggunakan metode pengambil sehingga dapat diakses secara keseluruhan.

@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;

Dan metode 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;
}

Kemudian gunakan ini setiap kali saya membuat objek 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);
}
MaxJ
sumber
4

Bekerja seperti ini:

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

Setelah menjalankan aplikasi ... Masuk Logcat masukkan Verbose letakkan di kolom pencarian AdRequest, jadi perangkat id menunjukkan donw.

masukkan deskripsi gambar di sini

.addTestDevice ("letakkan id di sini");

Saya harap telah membantu;

Douglas
sumber
2

Tambahkan kelas ini ke proyek Anda

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 "";
        }

    }
}

Pemakaian:

AdRequest adRequest = AdsHelper.createRequest(this);
Gil SH
sumber
Terima kasih, hasilnya sama dengan yang ditampilkan di logcat oleh adRequest.
pengguna2342558
0

aplikasi: build.gradle

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

Aktivitas Anda:

 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);
NickUnuchek
sumber