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?
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?
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.
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!
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();
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 "";
}
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,
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.
Filtrez le logcat avec 'device' comme indiqué ci-dessous pour obtenir le périphérique de test
Lire Test de la publicité Admob sur l'appareil - les identifiants d'appareil peuvent changer pour plus
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/
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.
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.
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:
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);
}
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.
.addTestDevice ("mettez l'identifiant ici");
J'espère avoir aidé;
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);
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);