我正在尝试设置adMob广告.我有两个问题:
1)我是否正确使用adListener接口?
2)为什么看不到广告插页式广告?
让我们从adListener开始.据我从说明中了解到的,adListener是一个接口.所以我创建了一个界面.
import com.Google.ads.AdRequest;import com.Google.androID.gms.ads.AdVIEw;public interface AdListener { public voID onReceiveAd(AdVIEw ad); public voID onFailedToReceiveAd(AdVIEw ad, AdRequest.ErrorCode error); public voID onPresentScreen(AdVIEw ad); public voID ondismissScreen(AdVIEw ad); public voID onLeaveApplication(AdVIEw ad);}
然后,在我的主类中实现了AdListener,一旦完成,系统将提示我添加未实现的方法(接口中的所有方法).
public class MainActivity extends Activity implements AdListener {// other code for the body (here). Just showing the methods and implement@OverrIDe public voID onReceiveAd(AdVIEw ad) { Log.d(TAG, "onReceiveAd"); Toast.makeText(this, "onReceiveAd", Toast.LENGTH_SHORT).show(); } @OverrIDe public voID onFailedToReceiveAd(AdVIEw ad, ErrorCode error) { Log.d(TAG, "onFailedToReceiveAd"); Toast.makeText(this, "onFailedToReceiveAd", Toast.LENGTH_SHORT).show(); } @OverrIDe public voID onPresentScreen(AdVIEw ad) { Log.d(TAG, "onPresentScreen"); } @OverrIDe public voID ondismissScreen(AdVIEw ad) { Log.d(TAG, "ondismissScreen"); } @OverrIDe public voID onLeaveApplication(AdVIEw ad) { Log.d(TAG, "onLeaveApplication"); }}
我之所以认为这无能为力,是因为我没有收到日志.我加了敬酒,以再次确认我没有错过任何东西.我认为,要实现这一目标我还缺少下一步.
现在是广告部分.我以为我很好地遵循了指示,实际上我的横幅也可以.但是我的广告插页式广告无效.这就是横幅广告和插页式广告的用途.
从我的xml的横幅广告代码片段开始
<com.Google.androID.gms.ads.AdVIEw androID:ID="@+ID/adVIEw" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" ads:adUnitID="I_ADDED_CORRECT_ADUNIT_ID" ads:adSize="BANNER" />
在我的主要活动中,我有以下代码.同样,我想查看测试广告:
// setup ad banner and interstitial final TelephonyManager tm = (TelephonyManager)getBaseContext() .getSystemService(Context.TELEPHONY_SERVICE); String testdeviceid = tm.getdeviceid(); Log.d(TAG, "testdeviceid retrIEved(" + testdeviceid + ")"); // create interstitial interstitial = new InterstitialAd(this); interstitial.setAdUnitID("I_ADDED_CORRECT_ADUNIT_ID"); // ad banner adVIEw = (AdVIEw)this.findVIEwByID(R.ID.adVIEw); // request test interstitial ads AdRequest adRequestInterstitial = new AdRequest.Builder() .addTestDevice(AdRequest.DEVICE_ID_EMulATOR) .addTestDevice(testdeviceid) .build(); // request test banner ads AdRequest adRequestBanner = new AdRequest.Builder() .addTestDevice(AdRequest.DEVICE_ID_EMulATOR) .addTestDevice(testdeviceid) .build(); //load interstitial ads interstitial.loadAd(adRequestInterstitial); displayInterstitial(); // load banner ads adVIEw.loadAd(adRequestBanner); //NOTE: the above code is all in onCreate(). //diaplayInterstitial is outsIDe of onCreate() public voID displayInterstitial() { if (interstitial.isLoaded()) { Log.d(TAG, "displayInterstitial()"); interstitial.show(); } }
让我们看看还有什么要告诉你的吗?噢,是的!我还具有清单中已设置的权限.权限= INTERNET,ACCESS_NETWORK_STATE,ACCESS_WIFI_STATE,READ_PHONE_STATE.
我去了项目属性,并添加了Google-play-services_lib
这是我的整个设置!我尝试了很多事情,因为我对可能的问题有一些“感觉”.首先,我认为也许不能同时请求测试广告横幅和广告插页式广告.因此,我将非页内广告代码移至onStart().但是后来,我不确定这是否是必要的,有益的或更糟的(并且没有用!).我的第二个想法是,一切正常,一旦发布应用,一切都会很好.但是无论如何,我的日志不适用于AdListener.如果我能够做到这一点,我想我可以更有把握地开始进行验证.
预先感谢您的帮助.
日志SS
解决方法:
好的,这里有几个问题.
1)不,您没有正确使用AdListener界面.
不要创建自己的界面. AdMob已经提供了AdListener接口.但是,您确实需要实现它.
注意:个人而言,我会创建AdListener的匿名实现,而不是将其添加到Activity中,但这是您自己的设计设计.
接下来,您需要将侦听器附加到AdVIEw.因此,在您的#onCreate中
// load banner adsadVIEw.setAdListener(new AdListener() { ...});adVIEw.loadAd(adRequestBanner);
2)您不太可能在上面的代码中看到任何非页内广告,因为您尝试在请求后立即显示.在这样短的时间内下载插页式广告的可能性极小.而且无论如何,您实际上都不希望每次创建Activity时都显示插页式广告,这是糟糕的用户体验.
将您对displayInterstitial()的调用移至应用生命周期中的某个较晚时间,例如在游戏会话结束时或在关卡之间等.
总结以上是内存溢出为你收集整理的android-如何获取适用于adMob的测试广告横幅和插页式广告?全部内容,希望文章能够帮你解决android-如何获取适用于adMob的测试广告横幅和插页式广告?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)