AdMob 용 기기 ID는 어떻게받을 수 있나요?
Eclipse를 사용하여 Android 용 애플리케이션을 개발하고 있으며 Admob을 통합하여 돈을 벌고 싶습니다. 튜토리얼에서 ID를 찾으려면 LogCat을 봐야한다고하지만 어디에 있습니까?
테스트 모드 또는 리얼 모드에서 실행하면 가끔 일식이 광고가 반환되었음을 알리지 만 emu에는 표시되지 않습니다. 누구든지 설명 할 수 있습니까?
에뮬레이터에서 AdMob 광고를 실행하는 경우 ID가 없습니다. AdManager 메소드를 사용하고 logcat이 말하는 것처럼 TEST_EMULATOR로 설정하면됩니다. USB 디버깅으로 실제 장치에서 실행하고 logcat을 보면 ID가 표시됩니다.
허용 된 답변은 에뮬레이터 또는 일부 장치에서만 테스트하는 경우 작동하지만 과다한 장치에서 테스트하는 경우 실행중인 장치의 장치 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 더 이상이 기능이 필요하지 않으므로 테스트하지 않았습니다. 행운을 빕니다!
문서에서 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();
해시 장치 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 "";
}
- Play 스토어에 게시 된 앱이다 - 라이브 광고 :
앱이 라이브 광고를 보여주는 Play 스토어에있는 경우 (테스트 용 라이브 광고를 사용할 수 없음) 코드에 기기 ID를 추가하여 실제 기기의 Admob에서 테스트 광고를 가져옵니다. 개발 또는 테스트 중에는 라이브 광고를 사용하지 마십시오.
logcat에서 실제 장치 ID를 얻으려면
- USB 디버그 모드의 기기를 Android Studio에 연결
기기에서 Admob의 라이브 광고를 표시하는 앱을 엽니 다 . 연결된 기기에서 Play 스토어에서 앱을 다운로드 한 경우 (라이브 광고 표시) 해당 앱을 열거 나 라이브 Admob 광고를 표시하는 다른 앱을 엽니 다. 장치가 인터넷에 연결되어 있어야합니다.
테스트 장치를 얻으려면 아래와 같이 '장치'로 logcat을 필터링하십시오.
읽기 장치에 AdMob 광고 테스트 - 장치 ID는 변경할 수 있습니다 이상
XML 레이아웃을 사용하여 광고를 표시하고 레이아웃 XML 파일에 이미 "ads : testDevices ="가있는 경우 AdMob은 LogCat 출력에 "To get test ads on this device ..."메시지를 인쇄하지 않습니다. 그것을 꺼내면 LogCat 메시지가 표시됩니다.
다음은 LogCat에서 장치 ID를 찾는 방법에 대한 멋진 자습서입니다. http://webhole.net/2011/12/02/android-sdk-tutorial-get-admob-test-device-id/
실제 기기에서 앱을 테스트하는 경우 기기 ID를 제공하는이 작은 Android 앱을 사용해 볼 수 있습니다.
https://play.google.com/store/apps/details?id=pe.go_com.admobdeviceidfinder&hl=ko
해시 된 장치 ID를 직접 얻을 수 있습니다. 도움이 되었기를 바랍니다.
If you don't get it in the logcat just put any device id and load you Ads and run your app then go to the log you will get it like that I/Ads: Use AdRequest.Builder.addTestDevice("XXXXXXXXXXXXXXXXXXXXXXXXX") to get test ads on this device.
after that put it and run your application again.
Another easiest way to show test ads is to use test device id for banner to show admob test ads for all devices. "ca-app-pub-3940256099942544/6300978111" . This admob test ads id was noted in the admob tutorial of google: link. This is the quote from the above link:
- This is the test device id for interstitial "ca-app-pub-3940256099942544/1033173712" . This also was used in interstitial tutorial
I have a few devices I was testing on, and didn't want to manually get the DeviceID for each one. The answers here to programmatically get the DeviceIDs were not working for me (Missing zeros) which caused real ads to be shown instead of test ads.
I put this in my Application class onCreate, and then exposed deviceId using a getter method so that it can be accessed throughout.
@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;
And the MD5 method;
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;
}
Then using this whenever I create an AdRequest object:
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);
}
Works to this way:
InterstitialAd mInterstitial = new InterstitialAd(this);
mInterstitial.setAdUnitId("your id");
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice("some words")
.build();
mInterstitial.loadAd(adRequest);
After run the app... Go in Logcat put in Verbose put in the search field AdRequest, so the id device shows donw.
.addTestDevice("put the id here");
I hope have helped;
app: build.gradle
dependencies {
...
compile 'com.google.firebase:firebase-ads:10.0.1'
...
}
Your Activity:
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);
Add this class to your project
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);
참고URL : https://stackoverflow.com/questions/4524752/how-can-i-get-device-id-for-admob
'developer tip' 카테고리의 다른 글
http 응답을 보낸 후 PHP 처리 계속 (0) | 2020.08.31 |
---|---|
Eclipse 시작시 SDK로드 오류 (0) | 2020.08.31 |
Android-제목 표시 줄의 뒤로 버튼 (0) | 2020.08.31 |
Xcode 8 cocoapods 중단 트랩 : 6 (0) | 2020.08.31 |
비트 연산 및 사용 (0) | 2020.08.31 |