我正在尝试设置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的横幅广告代码片段开始
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