web-dev-qa-db-fra.com

Comment puis-je obtenir un identifiant d'appareil pour Admob

J'utilise Eclipse pour développer des applications pour Android et je souhaite intégrer Admob pour gagner de l'argent ... Le tutoriel indique que je devrais regarder le LogCat pour trouver un identifiant, mais où est-il? alt text

Lorsque j'exécute en mode test ou en mode réel, Eclipse informe parfois que les annonces ont été renvoyées, mais ne s'affiche pas dans l'emu ... quelqu'un peut-il expliquer? 

87
Sheldon Rong

Si vous diffusez des annonces admob sur un émulateur, il n'y a pas d'identifiant. utilisez simplement la méthode AdManager et réglez-la sur TEST_EMULATOR comme le dit le logcat. Si vous utilisez un périphérique avec débogage USB et observez le logcat, l'ID apparaîtra à cet endroit. 

94
Phobos

Les réponses acceptées fonctionneront si vous testez uniquement sur l'émulateur ou sur quelques périphériques, mais si vous effectuez des tests sur une multitude de périphériques, vous aurez peut-être besoin d'un moyen d'ajouter prorammatiquement l'ID de périphérique du périphérique en cours d'exécution.

Le code suivant transformera le périphérique en cours d'exécution en périphérique de test adview par programme

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

Vous devez utiliser le md5 de l'ID Android, qui doit être en majuscule. Voici le code md5 que j'ai utilisé

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: Apparemment, cette méthode MD5 n’est pas parfaite et il a été suggéré d’essayer https://stackoverflow.com/a/21333739/2662474 Je n’ai plus besoin de cette fonctionnalité, je n’ai donc pas testé. Bonne chance!

98
joseph

Quelque chose de semblable aux annonces Google, dans la documentation:

public AdRequest.Builder addTestDevice (String deviceId)

Permet à un appareil de recevoir des annonces test. Le deviceId peut être obtenu par affichage de la sortie logcat après la création d’une nouvelle annonce. Pour les émulateurs, utilisez DEVICE_ID_EMULATOR.

par exemple, mon ID de périphérique de test affiché dans LogCat est "B86BC9402A69B031A516BC57F7D3063F"

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

Pour obtenir l'ID de périphérique de hachage 

à l'intérieur du oncreate 

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

puis ajoutez cette classe pour 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 "";
    }
12
Cristiana Chavez
  • Votre application est-elle publiée sur le Play Store - avec annonces en direct:

Si votre application est sur le Play Store et diffuse des annonces en direct (vous ne pouvez pas utiliser les annonces en direct pour les tests), ajoutez votre ID d'appareil dans le code pour obtenir des annonces de test d'Admob sur votre appareil réel. N'utilisez jamais d'annonces en direct pendant le développement ou les tests.

Pour obtenir un identifiant de périphérique réel dans logcat, 

  1. Connectez votre appareil en mode débogage USB à Android Studio

 USB debug mode(Developer option)

  1. Ouvrez n'importe quelle application de votre appareil diffusant des annonces en direct d'Admob: Sur l'appareil connecté, si votre application est téléchargée depuis Play Store (diffusion d'annonces en direct), ouvrez cette application ou bien ouvrez toute autre application diffusant des annonces Admob en direct . Votre appareil devrait avoir une connexion Internet.

  2. Filtrez le logcat avec 'device' comme indiqué ci-dessous pour obtenir le périphérique de test

 Test Device ID in logcat

Lire Test de la publicité Admob sur l'appareil - les identifiants d'appareil peuvent changer pour plus

10
Pinky Walve

Si vous diffusez des annonces utilisant une présentation XML et si vous avez déjà "ads: testDevices =" dans votre fichier XML de présentation, AdMob n'imprimera PAS le message "Pour obtenir des annonces test sur ce périphérique ..." dans la sortie LogCat. Retirez-le et vous verrez le message LogCat.

Voici un bon tutoriel sur la recherche d'un identifiant de périphérique dans LogCat: http://webhole.net/2011/12/02/Android-sdk-tutorial-get-admob-test-device-id/

7
Oto Zars

Si vous testez votre application sur un appareil réel, vous pouvez essayer cette petite application Android qui vous donne l'identifiant de l'appareil:

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

Vous obtiendrez l'identifiant de périphérique haché directement . J'espère que cela vous aidera.

7
Sanath Bharadwaj

Si vous ne l'obtenez pas dans le logcat mettez simplement n'importe quel identifiant du périphérique et vous chargez Ads et exécutez votre application, puis accédez au journal que vous obtiendrez comme ceci I/Ads: Use AdRequest.Builder.addTestDevice("XXXXXXXXXXXXXXXXXXXXXXXXX") to get test ads on this device. après que put et exécutez votre application à nouveau.

6
Context

Un autre moyen plus simple d'afficher des annonces test consiste à utiliser l'ID de périphérique de test pour la bannière afin d'afficher les annonces de test d'admob pour tous les périphériques. "ca-app-pub-3940256099942544/6300978111". Cet identifiant d'adm test ads a été noté dans le tutoriel admob de Google: link . Voici la citation du lien ci-dessus:  enter image description here

  • Il s'agit de l'ID de périphérique de test pour l'interstitiel "ca-app-pub-3940256099942544/1033173712". Ceci a également été utilisé dans tutoriel interstitiel
4
huu duy

Je testais quelques périphériques et je ne voulais pas obtenir manuellement le DeviceID pour chacun d'entre eux. Les réponses ici pour obtenir par programme les ID de périphérique ne fonctionnaient pas pour moi (zéros manquants), ce qui a entraîné l'affichage de véritables publicités au lieu de test.

Je mets cela dans ma classe Application onCreate, puis j'expose deviceId à l'aide d'une méthode getter afin de pouvoir y accéder de bout en bout.

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

Et la méthode 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;
}

Puis, en utilisant ceci chaque fois que je crée un objet 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
MaxJ

Fonctionne de cette façon:

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

Après avoir exécuté l'application, rendez-vous dans Logcat, mettez Verbose dans le champ de recherche AdRequest, de sorte que le périphérique id affiche donw.

 enter image description here

.addTestDevice ("mettez l'identifiant ici");

J'espère avoir aidé;

4
Douglas

Ajouter cette classe à votre projet

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

    }
}

Usage:

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

app: build.gradle

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

Votre activité:

 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