AdMob 용 기기 ID는 어떻게받을 수 있나요?


102

저는 Eclipse를 사용하여 Android 용 애플리케이션을 개발하고 있으며 Admob을 통합하여 돈을 벌고 싶습니다. 튜토리얼에서 ID를 찾으려면 LogCat을 봐야한다고하지만 어디에 있습니까? 대체 텍스트

테스트 모드 또는 리얼 모드에서 실행하면 가끔 일식이 광고가 반환되었음을 알리지 만 emu에는 표시되지 않습니다. 누구든지 설명 할 수 있습니까?

답변:


103

에뮬레이터에서 AdMob 광고를 실행하는 경우 ID가 없습니다. AdManager 메소드를 사용하고 logcat이 말하는 것처럼 TEST_EMULATOR로 설정하면됩니다. USB 디버깅으로 실제 장치에서 실행하고 logcat을 보면 ID가 표시됩니다.


50
위에서 언급 한 "adRequest"라는 용어를 사용하여 필터링 한 후 "12-19 17 : 48 : 25.615 : I / Ads (2132) :이 기기에서 테스트 광고를 받으려면 adRequest.addTestDevice ("D9XXXXXXXXXXXXXXXXXXXXXXXXXXXXX를 호출하십시오.) ");". 코드를 복사하여 붙여 넣기 만하면됩니다.
Ashok Goli

5
내 로그에 "AdRequest.Builder.addTestDevice ("5EXXXX 등 ")를 사용하여이 기기에서 테스트 광고를 가져옵니다."라고 말합니다.
Mark Bridges

2
logcat의 필터 필드에 "addTestDevice"를 입력하십시오.
Gayan Weerakutti 2016 년

Google Play에 게시 된 singed APK에서 기기 ID를 찾을 수 있나요?
Gayan Weerakutti

108

허용 된 답변은 에뮬레이터 또는 일부 장치에서만 테스트하는 경우 작동하지만 과다한 장치에서 테스트하는 경우 실행중인 장치의 장치 ID를 사전에 추가하는 방법이 필요할 수 있습니다.

다음 코드는 현재 실행중인 장치를 프로그래밍 방식으로 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
    }

Android ID의 md5를 사용해야하며 대문자 여야합니다. 다음은 내가 사용한 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 더 이상이 기능이 필요하지 않으므로 테스트하지 않았습니다. 행운을 빕니다!


1
이는 com.google.android.gms.internal.cm.l(Context ctx)문제의 ID를 반환하는 내부 난독 화 메서드 (버전 4.0.30)를 호출 하는 것보다 낫습니다
Amr Mostafa

감사합니다! 파이썬에 넣으면 import hashlib; hashlib.md5(android_id.lower()).hexdigest().upper(). 이렇게하면 앱을 다운로드하여 Android ID를 표시하고 MD5를 가져올 수 있습니다.
douggard 2014 년

설정 클래스는 어떤 패키지에서 제공됩니까?
oabarca

@joseph 이것은 올바르게 작동하지 않습니다. 일부 문자가 누락되었습니다.
5er

5
이 답변을 참조하십시오 : stackoverflow.com/a/21333739/4019544 이 구현은 여기에 링크 된 게시물의 허용 된 답변과 유사한 일부 0을 처리하지 않습니다.
MaxJ 2015 년

17

문서에서 Google Ads와 유사한 것 :

public AdRequest.Builder addTestDevice (문자열 deviceId)

기기가 테스트 광고를 받도록합니다. deviceId는 새 광고를 만든 후 logcat 출력을 확인하여 얻을 수 있습니다 . 에뮬레이터의 경우 DEVICE_ID_EMULATOR를 사용합니다.

예를 들어 LogCat에 표시된 내 테스트 장치 ID는 "B86BC9402A69B031A516BC57F7D3063F"다음과 같습니다.

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

16
  • Play 스토어에 게시 된 앱이다 - 라이브 광고 :

앱이 라이브 광고를 보여주는 Play 스토어에있는 경우 (실시간 광고를 테스트에 사용할 수 없음) 코드에 기기 ID를 추가하여 실제 기기의 Admob에서 테스트 광고를 가져옵니다. 개발 또는 테스트 중에는 라이브 광고를 사용하지 마십시오.

logcat에서 실제 장치 ID를 얻으려면

  1. USB 디버그 모드의 기기를 Android Studio에 연결

USB 디버그 모드 (개발자 옵션)

  1. 기기에서 Admob의 라이브 광고를 표시하는 앱을 엽니 다 . 연결된 기기에서 Play 스토어에서 앱을 다운로드 한 경우 (라이브 광고 표시) 해당 앱을 열거 나 라이브 Admob 광고를 표시하는 다른 앱을 엽니 다. 장치가 인터넷에 연결되어 있어야합니다.

  2. 테스트 장치를 얻으려면 아래와 같이 '장치'로 logcat을 필터링하십시오.

logcat에서 테스트 장치 ID

읽기 장치에 AdMob 광고 테스트 - 장치 ID는 변경할 수 있습니다 이상


Unity Dev Build를 실행하는 동안 찾고 있었는데 이것이 작동했습니다. 감사.
Avisek Chakraborty

13

해시 장치 ID를 얻으려면

oncreate 내부

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

감사합니다. 실제로 md5 () 함수에 미묘한 버그가 있습니다. hexString에 추가하는 줄은 다음과 같아야합니다 hexString.append(String.format("%02X", 0xFF & messageDigest[i])); . 선행 0이 출력되지 않기 때문에 구현에서 15 이하의 바이트 값에 대해 잘못된 출력을 제공합니다.
개미

md5 ()가 잘못된 ID를 생성합니다. 561600E037F6E9EEBE405B487459D786이 예상되지만 56160E037F6E9EEBE405B487459D786
Foobnix


7

실제 기기에서 앱을 테스트하는 경우 기기 ID를 제공하는이 작은 Android 앱을 사용해 볼 수 있습니다.

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

해시 된 장치 ID를 직접 얻을 수 있습니다. 도움이 되었기를 바랍니다.


이것이 질문의 내용인지 확실하지 않습니다. 에뮬레이터에서 기억하고 있듯이 Play 스토어에서 설치할 수 없습니다. 아마도 더 프로그래밍 방식의 솔루션 (또는이 앱 소스의 관련 부분)이 더 좋을 것입니다.
가보 바 코스

1
많은 사람들이 프로그래밍 솔루션을 게시했습니다. 에뮬레이터에서 작동하지 않지만 id를 얻는 조금 쉽고 간단한 방법이기 때문에 방금 게시했습니다. 어쨌든 나는 대답을 편집했습니다.
Sanath Bharadwaj 2015 년

더 이상 올바른 ID를 제공하지 않습니다.
Evorlor

6

테스트 광고를 표시하는 또 다른 가장 쉬운 방법은 배너에 테스트 기기 ID를 사용 하여 모든 기기에 대한 AdMob 테스트 광고를 표시하는 것 입니다. ' ca-app-pub-3940256099942544 / 6300978111 ' 이 AdMob 테스트 광고 ID는 google : link 의 AdMob 가이드에 언급되었습니다 . 이것은 위 링크의 인용문입니다. 여기에 이미지 설명 입력

  • 전면 광고 ' ca-app-pub-3940256099942544 / 1033173712 ' 의 테스트 기기 ID입니다 . 이것은 삽입 광고 튜토리얼 에서도 사용되었습니다.

5

당신이 그것을 얻지 않는 경우에 로그 캣 그냥 넣어 장치 ID를 하고로드 광고를 하고 당신이 그런 식으로 그것을 얻을 것이다 로그로 이동 한 후 앱을 실행 I/Ads: Use AdRequest.Builder.addTestDevice("XXXXXXXXXXXXXXXXXXXXXXXXX") to get test ads on this device.즉 넣어 후에 다시 응용 프로그램을 실행합니다.


5

장치 ID를 얻으려면 휴대폰을 USB에 연결하고 Android 스튜디오에서 logcat을 엽니 다. 아래 코드를 사용합니다 (장치에서 USB 디버깅이 활성화되어 있는지 확인). 그런 다음 Google 광고가있는 앱 (Play 스토어에서 임의의 앱 다운로드)을 엽니 다. 이미지에 표시된대로 Logcat 유형 "set"에서. 장치 ID는 이미지에서 다음과 같이 강조 표시됩니다.

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

여기에 이미지 설명 입력

표시된대로 코드에서 테스트 장치를 사용하십시오.

val adRequest = AdRequest
        .Builder()
        .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
        .addTestDevice("CC9DW7W7R4H0NM3LT9OLOF7455F8800D")
        .build()

4

테스트중인 장치가 몇 개 있는데 각 장치에 대한 DeviceID를 수동으로 가져오고 싶지 않았습니다. 프로그래밍 방식으로 DeviceID를 얻기위한 답변은 나를 위해 작동하지 않았습니다 (0 누락). 이로 인해 테스트 광고 대신 실제 광고가 표시되었습니다.

이를 내 Application 클래스 onCreate에 넣은 다음 getter 메서드를 사용하여 deviceId를 노출하여 전체적으로 액세스 할 수 있도록합니다.

@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

다음과 같이 작동합니다.

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가 표시됩니다.

여기에 이미지 설명 입력

.addTestDevice ( "여기에 ID 입력");

도움이 되었기를 바랍니다.


2

프로젝트에이 클래스 추가

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

감사합니다. 결과는 adRequest에 의해 logcat에 표시된 것과 동일합니다.
user2342558

0

앱: 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);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.