it-swarm.com.ru

Как я могу получить идентификатор устройства для Admob

Я использую Eclipse для разработки приложений для Android, и я хочу интегрировать Admob, чтобы зарабатывать деньги .. Учебник говорит, что я должен смотреть LogCat, чтобы найти ID, но где он? alt text

Когда я запускаю либо в тестовом режиме, либо в реальном режиме, иногда Eclipse уведомляет, что реклама вернулась, но в эму она не отображается ... кто-нибудь может объяснить? 

87
Sheldon Rong

Если вы запускаете рекламу AdMob на эмуляторе, тогда идентификатор отсутствует. просто используйте метод AdManager и установите его в TEST_EMULATOR, как говорит logcat. Если вы работаете на реальном устройстве с отладкой по USB и смотрите logcat, там появится идентификатор. 

94
Phobos

Принятые ответы сработают, если вы тестируете только на эмуляторе или на нескольких устройствах, но если вы тестируете на множестве устройств, вам могут потребоваться некоторые средства программного добавления идентификатора устройства работающего устройства.

Следующий код превратит текущее работающее устройство в тестовое устройство 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
    }

Вам нужно использовать md5 идентификатора Android, и он должен быть в верхнем регистре. Вот код 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 мне больше не нужна эта функция, поэтому я не тестировал. Удачи!

98
joseph

Нечто похожее на Google Ads, из документации:

общедоступный AdRequest.Builder addTestDevice (String deviceId)

Заставляет устройство получать тестовые объявления. DeviceId может быть получен с помощью просмотр вывода logcat после создания нового объявления. Для эмуляторов используйте DEVICE_ID_EMULATOR.

например, мой идентификатор тестового устройства, отображаемый в LogCat: "B86BC9402A69B031A516BC57F7D3063F"

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

Чтобы получить идентификатор хэш-устройства 

внутри здания 

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 "";
    }
12
Cristiana Chavez
  • Ваше приложение опубликовано в Play Store - с живой рекламой:

Если ваше приложение в Play Store показывает живую рекламу - вы не можете использовать живую рекламу для тестирования - добавьте идентификатор своего устройства в код, чтобы получать тестовые объявления от Admob на вашем реальном устройстве. Никогда не используйте живую рекламу во время разработки или тестирования.

Чтобы получить реальный идентификатор устройства в logcat, 

  1. Подключите ваше устройство в режиме USB отладки к Android Studio

 USB debug mode(Developer option)

  1. Откройте любое приложение на вашем устройстве, которое показывает живую рекламу от Admob: На подключенном устройстве, если ваше приложение загружено из Play Store (показывает живую рекламу), откройте это приложение или откройте любое другое приложение, которое показывает живую рекламу Admob. , Ваше устройство должно иметь подключение к интернету.

  2. Отфильтруйте logcat с помощью «устройства», как показано ниже, чтобы получить тестовое устройство

 Test Device ID in logcat

Читать Admob тестирование рекламы на устройстве - идентификаторы устройств могут меняться для более

10
Pinky Walve

Если вы отображаете объявления с использованием XML-макета и если в вашем XML-файле макета уже есть «ads: testDevices =», AdMob НЕ печатает сообщение «Чтобы получить тестовые объявления на этом устройстве ...» в выходных данных LogCat. Уберите это, и тогда вы увидите сообщение LogCat.

Вот хороший учебник о том, как найти идентификатор устройства в LogCat: http://webhole.net/2011/12/02/Android-sdk-tutorial-get-admob-test-device-id/

7
Oto Zars

Если вы тестируете свое приложение на реальном устройстве, вы можете попробовать это небольшое приложение для Android, которое дает вам идентификатор устройства:

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

Вы получите хешированный идентификатор устройства напрямую. Надеюсь, это поможет.

7
Sanath Bharadwaj

Если вы не получите его в logcat просто поместите какой-либо идентификатор устройства и загрузите вас Ads и запустите ваше приложение, то перейдите в журнал, и вы получите его таким же образом I/Ads: Use AdRequest.Builder.addTestDevice("XXXXXXXXXXXXXXXXXXXXXXXXX") to get test ads on this device. после этого это и запустите ваше приложение снова.

6
Context

Еще один самый простой способ показа тестовых объявлений - использовать идентификатор тестового устройства для баннера, чтобы показать тестовые объявления admob для всех устройств. "ca-app-pub-3940256099942544/6300978111". Этот тестовый рекламный идентификатор AdMob был отмечен в учебном руководстве по Google: ссылка . Это цитата из приведенной выше ссылки:  enter image description here

  • Это идентификатор тестового устройства для вставки "ca-app-pub-3940256099942544/1033173712". Это также использовалось в промежуточном уроке
4
huu duy

У меня есть несколько устройств, на которых я тестировал, и я не хотел вручную получать DeviceID для каждого из них. Ответы здесь, чтобы программно получить идентификаторы устройств, не работали для меня (Пропущенные нули), из-за чего реальные объявления показывались вместо тестовых объявлений.

Я поместил это в свой класс Application onCreate, а затем открыл deviceId, используя метод getter, чтобы к нему можно было получить доступ повсюду.

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

Работает так:

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.

 enter image description here

.addTestDevice («поставить идентификатор здесь»);

Я надеюсь, что помог;

4
Douglas

Добавьте этот класс в ваш проект

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);
0
Gil SH

приложение: 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);
0
NickUnuchek