wake-up-neo.com

Wie kann ich die Geräte-ID für Admob erhalten?

Ich verwende Eclipse, um Anwendungen für Android zu entwickeln, und ich möchte Admob integrieren, um Geld zu verdienen .. Das Tutorial sagt, ich sollte der LogCat nach ID suchen, aber wo ist sie?alt text

Wenn ich entweder im Testmodus oder im Realmodus laufe, wird die Eclipse manchmal die Anzeige der zurückgegebenen Anzeigen anzeigen, sie wird jedoch nicht im Emu angezeigt. Kann das jemand erklären? 

87
Sheldon Rong

Wenn Sie auf einem Emulator Admob-Anzeigen ausführen, gibt es keine ID. Verwenden Sie einfach die AdManager-Methode und legen Sie sie auf TEST_EMULATOR fest, wie es der Logcat sagt. Wenn Sie auf einem tatsächlichen Gerät mit USB-Debugging laufen und das Logcat beobachten, wird die ID dort angezeigt. 

94
Phobos

Die akzeptierten Antworten funktionieren, wenn Sie nur mit dem Emulator oder mit wenigen Geräten testen. Wenn Sie jedoch mit einer Vielzahl von Geräten testen, benötigen Sie möglicherweise die Möglichkeit, die Geräte-ID des aktiven Geräts vorübergehend hinzuzufügen.

Mit dem folgenden Code wird das aktuell ausgeführte Gerät programmgesteuert zu einem Vorschau-Testgerät

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

Sie müssen das MD5 der Android-ID verwenden, und es muss Großbuchstaben sein. Hier ist der MD5-Code, den ich verwendet habe

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

BEARBEITEN: Offensichtlich ist die MD5-Methode nicht perfekt, und es wurde vorgeschlagen, Folgendes zu versuchen: https://stackoverflow.com/a/21333739/2662474 Ich brauche diese Funktion nicht mehr, daher habe ich sie nicht getestet. Viel Glück!

98
joseph

Ähnlich wie bei Google Ads aus der Dokumentation:

public AdRequest.Builder addTestDevice (String deviceId)

Bewirkt, dass ein Gerät Testanzeigen erhält. Die deviceId kann mit .__ abgerufen werden. Anzeigen der Logcat-Ausgabe nach dem Erstellen einer neuen Anzeige. Verwenden Sie für Emulatoren DEVICE_ID_EMULATOR.

meine in LogCat angezeigte Testgeräte-ID lautet beispielsweise "B86BC9402A69B031A516BC57F7D3063F"

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

So erhalten Sie die Hash-Geräte-ID 

im Inneren des Oncreate 

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

dann füge diese Klasse für md5 () hinzu

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 "";
    }
12
  • Wird Ihre App im Play Store veröffentlicht - mit Live-Werbung:

Wenn Ihre App im Play Store geschaltet wird und Sie keine Live-Anzeigen zum Testen verwenden können, fügen Sie Ihre Geräte-ID im Code hinzu, um Testanzeigen von Admob auf Ihrem realen Gerät abzurufen. Verwenden Sie niemals Live-Anzeigen während der Entwicklung oder beim Testen.

Um eine echte Geräte-ID in logcat zu erhalten,

  1. Verbinden Sie Ihr Gerät im USB-Debug-Modus mit Android Studio

USB debug mode(Developer option)

  1. Öffnen Sie eine App auf Ihrem Gerät, die Live-Anzeigen von Admob zeigt: Auf dem verbundenen Gerät, wenn Sie Ihre App aus dem Play Store heruntergeladen haben (Live-Anzeigen zeigen) Öffnen Sie diese App oder eine andere App, in der Live-Admob-Anzeigen geschaltet werden. Ihr Gerät sollte eine Internetverbindung haben.

  2. Filtern Sie den Logcat mit 'Gerät' wie unten gezeigt, um ein Testgerät zu erhalten

Test Device ID in logcat

Lesen Sie AdMob-Anzeigentests für Geräte - Geräte-IDs können sich ändern für mehr

10
Pinky Walve

Wenn Sie Anzeigen im XML-Layout anzeigen und wenn Sie bereits "ads: testDevices =" in Ihrer XML-Layoutdatei haben, druckt AdMob NICHT die Meldung "So laden Sie Anzeigen auf diesem Gerät ab ..." in der LogCat-Ausgabe. Nehmen Sie das heraus und Sie sehen die LogCat-Nachricht.

Hier ein Nizza-Tutorial zum Auffinden der Geräte-ID in LogCat: http://webhole.net/2011/12/02/Android-sdk-tutorial-get-admob-test-device-id/

7
Oto Zars

Wenn Sie Ihre App auf einem tatsächlichen Gerät testen, können Sie diese kleine Android-App ausprobieren, die Ihnen die Geräte-ID gibt:

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

Sie erhalten die gehashte Geräte-ID direkt .. _. Hoffe, das hilft.

7

Wenn du es nicht im logcat bekommst, gib einfach eine Geräte-ID ein und lade dich Ads und starte deine App, dann gehe zum Log dich wird es so bekommen I/Ads: Use AdRequest.Builder.addTestDevice("XXXXXXXXXXXXXXXXXXXXXXXXX") to get test ads on this device. danach stelle es und starte deine Anwendung erneut.

5
Context

Eine einfachste Methode zum Anzeigen von Testanzeigen ist die Verwendung der Testgeräte-ID für Banner, um Admob-Testanzeigen für alle Geräte anzuzeigen. "ca-app-pub-3940256099942544/6300978111". Diese AdBob-Testanzeigen-ID wurde im Admob-Tutorial von Google notiert: Link . Dies ist das Zitat aus dem obigen Link: enter image description here

  • Dies ist die Testgeräte-ID für das Interstitial "ca-app-pub-3940256099942544/1033173712". Dies wurde auch in interstitiales Tutorial verwendet.
4
huu duy

Ich habe ein paar Geräte, an denen ich gerade getestet habe, und wollte nicht manuell die DeviceID für jedes Gerät abrufen. Die Antworten hier, um programmgesteuert zu ermitteln, dass die DeviceIDs für mich nicht funktionierten (Fehlende Nullen), führten dazu, dass echte Anzeigen anstelle von Testanzeigen geschaltet wurden.

Ich habe dies in meine Application-Klasse onCreate eingefügt und dann deviceId mit einer Getter-Methode verfügbar gemacht, sodass auf sie überall zugegriffen werden kann.

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

Und die MD5-Methode;

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

Verwenden Sie diese dann immer dann, wenn ich ein AdRequest-Objekt erstelle:

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
MaxJ

Funktioniert auf diese Weise:

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

Nachdem Sie die App ausgeführt haben ... Gehen Sie in Logcat und setzen Sie Verbose in das Suchfeld AdRequest.

 enter image description here

.addTestDevice ("id hier eingeben");

Ich hoffe geholfen zu haben;

4
Douglas

Fügen Sie diese Klasse Ihrem Projekt hinzu

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

    }
}

Verwendungszweck:

AdRequest adRequest = AdsHelper.createRequest(this);
0
Gil SH

app: build.gradle

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

Ihre Aktivität:

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