我正在集成一个实现许多监听器的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进行了反编译,以更仔细地了解。程序包名称被硬编码为与非触发侦听器相关的某些条件。我在构建脚本中重构了它们的包名称,但是脚本忽略了字符串。因此,由于软件包名称已更改,因此自然不会触发。

10-07 22:23