我正在集成一个实现许多监听器的Android广告SDK。其中一些监听器未在我的应用中触发。例如,将触发onAdLoaded,但不会触发。在SDK随附的示例应用程序中,此功能运行良好,导致人们认为这是集成问题。但是,我找不到导致此故障的任何原因。这是我从未见过的绝对奇怪的行为。我知道我在这里抓住稻草,但是假设地说,是什么原因导致某些听众无法注册而其他听众却没有注册呢?我该如何调试?
这是一些代码:
ad = new InterstitialAd(lastActivity, placementId);
ad.setAdListener(new InterstitialAdListener() {
//doesn't fire
@Override
public void onInterstitialDisplayed(Ad ad) {
Log.e(TAG, "INTERSTITIAL DISPLAYED");
Toast.makeText(lastActivity, "onInterstitialDisplayed", Toast.LENGTH_SHORT).show();
}
//doesn't fire
@Override
public void onInterstitialDismissed(Ad ad) {
Log.e(TAG, "INTERSTITIAL DISMISSED");
Toast.makeText(lastActivity, "onInterstitialDismissed", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(Ad ad, AdError adError) {
Log.e(TAG, "ERROR! " + adError.getErrorMessage());
Toast.makeText(lastActivity, "onError", Toast.LENGTH_SHORT).show();
}
@Override
public void onAdLoaded(Ad ad) {
Log.e(TAG, "AD LOADED!");
AdAdapter.this.ad.show();
Toast.makeText(lastActivity, "onAdLoaded", Toast.LENGTH_SHORT).show();
}
//doesn't fire
@Override
public void onAdClicked(Ad ad) {
Log.e(TAG, "AD CLICKED!");
Toast.makeText(lastActivity, "onAdClicked", Toast.LENGTH_SHORT).show();
}
});
ad.loadAd();
最佳答案
我终于明白了为什么。我对SDK进行了反编译,以更仔细地了解。程序包名称被硬编码为与非触发侦听器相关的某些条件。我在构建脚本中重构了它们的包名称,但是脚本忽略了字符串。因此,由于软件包名称已更改,因此自然不会触发。