我希望我的 Android 应用程序显示广告 –
InterstitialAd
。我希望它出现在欢迎屏幕之后。这意味着我在应用程序启动时出现了 WelcomeActicity,最近在这之后 - 显示了广告。
我创建
InterstitialAd
并开始在应用程序的 OnCreate()
方法中加载广告。如果应用程序关闭时间较长,广告加载时间将超过 13 秒。当然这是不合适的——用户不应该等待这么久。我做了这个测试,构建了直接安装在我的手机小米红米 4X 上的发布 apk。
所以问题是——是否应该以其他方式完成?或者广告总是加载很长时间,我只需要把它在用户的工作流程中向前移动?
在应用程序的
OnCreate()
我开始加载
public class MyApp extends Application {
private FullScreenAd mFullScreenAd;
@Override
public void onCreate() {
super.onCreate();
mFullScreenAd = new FullScreenAd(this);
mFullScreenAd.loadAd();
}
}
实现如下:
public class FullScreenAd{
private static final String APP_AD_ID = "ca-app-pub-3940256099942544~3347511713";
private static final String SCREEN_AD_ID = "ca-app-pub-3940256099942544/1033173712";
private String mAdAppId;
private String mAdScreenId;
private InterstitialAd mInterstitialAd;
private long mLoadStart;
public FullScreenAd(Context context) {
super();
DebugLogger.d();
mContext = context;
initAdIDs(null, null);
}
private void initAdIDs(String adAppId, String adScreenId) {
DebugLogger.d();
mAdAppId = (adAppId != null) ? adAppId : APP_AD_ID;
mAdScreenId = (adScreenId != null) ? adScreenId : SCREEN_AD_ID;
mInterstitialAd = new InterstitialAd(mContext);
mInterstitialAd.setAdUnitId(mAdScreenId);
setInterstitialAdListener();
}
public void loadAd() {
// Initialize the Mobile Ads SDK.
MobileAds.initialize(mContext, mAdAppId);
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.build();
// Start loading the ad in the background.
mAdIsLoaded.set(false);
mInterstitialAd.loadAd(adRequest);
mLoadStart = System.currentTimeMillis();
}
private void setInterstitialAdListener() {
DebugLogger.d();
mInterstitialAd.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
DebugLogger.d();
DebugLogger.d(String.format("Ad loaded in %d ms", System.currentTimeMillis() - mLoadStart));
mAdIsLoaded.set(true);
}
});
}
public void showAd(OnAdClosedAction action) {
DebugLogger.d();
mInterstitialAd.show();
}
}
加载
AddMob
插页式广告需要一些时间。通常只需几秒钟,但如果连接较差或广告包含动画/视频,可能长达 20-30 秒。它甚至可能根本无法加载!
一个好的做法是在应用程序启动时加载广告并将其保留在内存中,并在稍后的某个时刻显示它 - 使一切尽可能无缝。确保广告加载/显示不会干扰用户体验 - 不要让用户等待您的广告加载。
是的,加载插页式广告可能需要一些时间,建议提前加载广告:
mInterstitialAd.loadAd(adRequest);
并在需要时显示它
mInterstitialAd.show();
但正如您所说,您希望在启动时使用插页式广告来启动您的应用程序。这可能会导致 违反 Google 政策,因为它表示您无法在应用加载或退出时显示广告。
谢谢!实际上,我一直在寻找这个,因为我在我的网站上面临着相同的广告加载延迟https://nba2kapk.org.