如何获取Admob的设备ID

我正在使用Eclipse为Android开发应用程序,并且我想要整合Admob来赚钱。 该教程说,我应该看LogCatfindID,但它在哪里? 替代文字

当我运行在testing模式或实模式,有时日食会通知广告返回,但它不显示在呃…任何人都可以解释?

如果您正在仿真器上运行admob广告,那么就没有ID。 只需使用AdManager方法并将其设置为TEST_EMULATOR就像logcat所说的那样。 如果你在一个实际的设备上使用USBdebugging,并观看logcat,ID将出现在那里。

如果您只在模拟器或less数设备上进行testing,则接受的答案将可用,但是如果您在大量设备上进行testing,则可能需要一些方法来正确添加运行设备的设备ID。

以下代码将使当前运行的设备以编程方式进入adviewtesting设备

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

获取哈希设备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 ""; } 

类似于Google广告的内容:

public AdRequest.Builder addTestDevice(String deviceId)

使设备接收testing广告。 在创build新广告后, 可以通过 查看logcat输出 来获取deviceId 对于模拟器,请使用DEVICE_ID_EMULATOR。

例如我在LogCat中显示的testing设备ID是"B86BC9402A69B031A516BC57F7D3063F"

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

如果您使用XML布局显示广告,并且布局XML文件中已经有“ads:testDevices =”,则AdMob将不会在LogCat输出中显示“要在此设备上获取testing广告…”消息。 拿出来,然后你会看到LogCat消息。

这是一个很好的教程,关于如何在LogCat中查找设备ID: http ://webhole.net/2011/12/02/android-sdk-tutorial-get-admob-test-device-id/

如果你正在实际的设备上testing你的应用程序,那么你可以尝试这个小的Android应用程序,它给你的设备ID:

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

你将直接得到散列的设备ID。 希望这可以帮助。

如果你没有得到它在logcat只是把任何设备ID和加载你的广告和运行你的应用程序,然后去日志,你会得到它像I/Ads: Use AdRequest.Builder.addTestDevice("XXXXXXXXXXXXXXXXXXXXXXXXX") to get test ads on this device. 之后,把它再次运行你的应用程序。

显示testing广告的另一个最简单的方法是使用横幅的testing设备ID来显示所有设备的 admobtesting广告。 “ ca-app-pub-3940256099942544/6300978111 ”。 这个admobtesting广告ID是在google: link的admob教程中logging的。 这是上述链接的引用: 在这里输入图像说明

  • 这是插页式广告“ ca-app-pub-3940256099942544/1033173712 ”的testing设备ID。 这也被用于插页式教程

我有几个设备正在testing,不想手动获取每个设备的DeviceID。 在这里以编程方式获取DeviceIDs的答案不适合我(缺less零),导致真正的广告,而不是testing广告显示。

我把它放在我的应用程序类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; } 

然后每当我创build一个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); } 
  • 您的应用是否在Play商店中发布 – 包含实时广告

如果您的应用在Play商店中展示实时广告,则无法使用实际广告进行testing,请在代码中添加您的设备ID,以便从您的真实设备上获取来自Admob的testing广告。 切勿在开发或testing期间使用实时广告。

为了在logcat中获得真实的设备ID,

  1. 将您的设备以USBdebugging模式连接到Android Studio

USB调试模式(开发人员选项)

  1. 在设备上打开显示Admob实时广告的任何应用:在连接的设备上,如果您从Play商店下载了应用(展示实时广告),请打开该应用,或打开显示实时AdMob广告的其他应用。 您的设备应该有互联网连接。

  2. 如下所示用“设备”过滤logcat以获得testing设备

在logcat中测试设备ID

阅读设备上的Admob广告testing – 设备ID可以更改

以这种方式工作:

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

运行应用程序后…进入Logcat放在详细信息放在search字段AdRequest,所以id设备显示donw。

在这里输入图像说明

.addTestDevice(“把id放在这里”);

我希望有所帮助;

我使用的是Unity 5.2,我可以使用以下属性来获取设备ID吗? 这是正确的ID吗?

SystemInfo.deviceUniqueIdentifier

应用程序: 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); 

只需转到播放“存储和下载设备ID”应用即可获取设备ID并将其粘贴到您的代码上。 欢呼快乐编码:)