1,087
社区成员
发帖
与我相关
我的任务
分享
public class MainActivity extends Activity implements InterstitialAdListener {
private static final String tag = "tag";
private InterstitialAd interstitialAd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
someTest(true);
loadInterstitialAd();
}
private void someTest(boolean test) {
if(test){
String device_hash="你的设备的hash值,测试的log中会打印出来的";//k860i
AdSettings.addTestDevice(device_hash);
Log.i(tag, "device_hash "+device_hash);
Log.i(tag, "KeyHash "+printKeyHash(this));
}
}
private void loadInterstitialAd() {
interstitialAd = new InterstitialAd(this,
"你的广告版本编号");
interstitialAd.setAdListener(this);
interstitialAd.loadAd();
}
private static String printKeyHash(Activity context) {
PackageInfo packageInfo;
String key = null;
try {
//getting application package name, as defined in manifest
String packageName = context.getApplicationContext().getPackageName();
//Retriving package info
packageInfo = context.getPackageManager().getPackageInfo(packageName,
PackageManager.GET_SIGNATURES);
Log.e("Package Name=", context.getApplicationContext().getPackageName());
for (Signature signature : packageInfo.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
key = new String(Base64.encode(md.digest(), 0));
// String key = new String(Base64.encodeBytes(md.digest()));
Log.e("Key Hash=", key);
}
} catch (PackageManager.NameNotFoundException e1) {
Log.e("Name not found", e1.toString());
} catch (NoSuchAlgorithmException e) {
Log.e("No such an algorithm", e.toString());
} catch (Exception e) {
Log.e("Exception", e.toString());
}
return key;
}
/**
* 处理加载故障
*/
@Override
public void onError(Ad paramAd, AdError paramAdError) {
// Ad failed to load
Log.i(tag, "onError " + paramAdError.getErrorCode() + " "
+ paramAdError.getErrorMessage());
}
/**
* 构建广告
*/
@Override
public void onAdLoaded(Ad paramAd) {
// Ad is loaded and ready to be displayed
// You can now display the full screen ad using this code:
Log.i(tag, "onAdLoaded ");
interstitialAd.show();
}
@Override
public void onInterstitialDisplayed(Ad ad) {
// Where relevant, use this function to pause your app's flow
Log.i(tag, "onInterstitialDisplayed ");
}
@Override
public void onInterstitialDismissed(Ad ad) {
// Use this function to resume your app's flow
Log.i(tag, "onInterstitialDismissed ");
}
@Override
public void onAdClicked(Ad ad) {
// Use this function as indication for a user's click on the ad.
Log.i(tag, "onAdClicked ");
}
@Override
protected void onDestroy() {
if (interstitialAd != null) {
interstitialAd.destroy();// 释放 interstitialAd 使用的资源
}
super.onDestroy();
}
}
测试线上广告时,出现“1001 no fill”的错误提示,这意味着什么?
这意味着我们无法向此用户展示广告。出现这种错误的原因如下:
测试的用户未在移动设备上登陆原生 Facebook 应用
测试的用户在设备设置中启用了“限制广告追踪”(仅限 iOS),或者选择了“退出根据兴趣的广告”(仅限 Android)。
我们没有可向此用户展示的广告库存
请注意,如果您能看到测试广告,就证明您的嵌入运行正常,并且广告投放后用户能在您的应用中看到广告。
于是我就安装facebook客户端,并且登录再测试,还是一样的错误。