2015-01-08 68 views
0

我都试图表明使用下面的代码在我的应用程序的全屏广告:AdRequest.DEVICE_ID_EMULATOR实况转播广告,而不是测试广告

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

interstitial = new InterstitialAd(this); 
interstitial.setAdUnitId(this.getText(R.string.full_screen_ad_unit_id).toString()); 
interstitial.loadAd(adRequest); 


if(interstitial.isLoaded()) 
{ 
    interstitial.show(); 
} 

但在模拟器和真实设备的AdMob展示活广告,而不是测试广告。

这将为我即它可以阻止由于无效曝光或无效点击我的AdMob帐户主要问题。

我有以下this教程。

那么请帮我解决这个问题?

+0

试试看>> - AdRequest adRequest = adRequestBuilder.addTestDevice(“CD0005AF3FFA73AC718D23D8CC419110”)。build(); –

+0

联系google .. – Elltz

+0

@MdAbdulGafur这些类型的ID是特定于设备的。这不适用于不同的设备。而我已经在eclipse logcat中试了一下admob推荐的“3B361E14CEFB340462CDE8F77C97EC87”id。但是,这个ID只适用于该设备而不是另一个。当我更换设备时,我不希望自己改变这个ID。 – DevK

回答

0

我有另一种方法来解决这个问题。工作代码为:

AdRequest.Builder adRequestBuilder = new AdRequest.Builder(); 
AdRequest adRequest; 
String android_id = Settings.Secure.getString(this.getContentResolver(), Settings.Secure.ANDROID_ID); 
String deviceId = Utilities.getMD5(android_id).toUpperCase(Locale.ENGLISH); 

adRequest = adRequestBuilder.addTestDevice(deviceId).build(); 
boolean isTestDevice = adRequest.isTestDevice(this); 

SetLogInfo.writeLog1("is Admob Test Device ? "+deviceId+" "+isTestDevice); 

interstitial = new InterstitialAd(this); 
interstitial.setAdUnitId(this.getText(R.string.full_screen_ad_unit_id).toString()); 
interstitial.loadAd(adRequest); 


if(interstitial.isLoaded()) 
{ 
interstitial.show(); 
} 

而且getMD5():

protected static String getMD5(String inputText) 
{ 
    String md5 = ""; 
    try 
    { 
     MessageDigest digester = MessageDigest.getInstance("MD5"); 
     digester.update(inputText.getBytes()); 
     md5 = new BigInteger(1, digester.digest()).toString(16); 
    } 
    catch(Exception e) 
    { 
     SetLogInfo.writeLog("Exception: "+e); 
    } 
    return md5; 
} 

至少这个解决方案是最好的,而不是使用 “AdRequest.DEVICE_ID_EMULATOR”。想法来自here