AdMob開屏廣告
開屏廣告是一種特殊的廣告格式,適合希望通過應(yīng)用加載屏幕獲利的發(fā)布商。開屏廣告在用戶將您的應(yīng)用切換為在前臺(tái)運(yùn)行時(shí)展示,用戶可隨時(shí)關(guān)閉。
開屏廣告會(huì)自動(dòng)顯示一個(gè)較小的區(qū)域并在其中展示品牌信息,讓用戶知道他們?cè)谑褂媚膽?yīng)用。以下是一個(gè)開屏廣告示例:
需要執(zhí)行的重要步驟包括:
1.擴(kuò)展Application類以初始化GMA SDK。
2.創(chuàng)建實(shí)用工具類,用于先加載廣告,以備需要展示時(shí)使用。
3.加載廣告。
4.監(jiān)聽ActivityLifecycleCallbacks.
5.展示廣告并處理回調(diào)。
6.實(shí)現(xiàn)并注冊(cè)LifecycleObserver接口,以便在出現(xiàn)前臺(tái)事件期間展示廣告。
集成AdMob SDK
//開屏廣告需要19.4.0以上版本
implementation'com.google.android.gms:play-services-ads:19.5.0'
初始化SDK
MobileAds.initialize(this,new OnInitializationCompleteListener(){
Override
public void onInitializationComplete(InitializationStatus initializationStatus){
}
});
加載廣告
/**
* Request an ad
*/
public void fetchAd() {
AppOpenAd.AppOpenAdLoadCallback loadCallback = new AppOpenAd.AppOpenAdLoadCallback() {
/**
* Called when an app open ad has loaded.
*
* @param ad the loaded app open ad.
*/
@Override
public void onAppOpenAdLoaded(AppOpenAd ad) {
Log.e(LOG_TAG, "---onAppOpenAdLoaded---");
}
/**
* Called when an app open ad has failed to load.
*
* @param loadAdError the error.
*/
@Override
public void onAppOpenAdFailedToLoad(LoadAdError loadAdError) {
// Handle the error.
Log.e(LOG_TAG, "---onAppOpenAdFailedToLoad---" + loadAdError);
}
};
AdRequest request = new AdRequest.Builder().build();
AppOpenAd.load(myApplication, AD_UNIT_ID, request, AppOpenAd.APP_OPEN_AD_ORIENTATION_LANDSCAPE, loadCallback);
}
展示廣告并處理全屏回調(diào)事件
/**
* Shows the ad if one isn't already showing.
*/
public void showAdIfAvailable() {
FullScreenContentCallback fullScreenContentCallback =
new FullScreenContentCallback() {
@Override
public void onAdDismissedFullScreenContent() {
// Set the reference to null so isAdAvailable() returns false.
}
@Override
public void onAdFailedToShowFullScreenContent(AdError adError) {
}
@Override
public void onAdShowedFullScreenContent() {
isShowingAd = true;
}
};
appOpenAd.show(currentActivity, fullScreenContentCallback);
}
注意:load()和show()必須在主線程中調(diào)用,否則會(huì)出現(xiàn)異常。
考慮廣告有效期
開屏廣告Beta版中的廣告引用會(huì)在4小時(shí)后超時(shí)。如果廣告在請(qǐng)求4小時(shí)后呈現(xiàn),則相應(yīng)廣告將不再有效且可能無法創(chuàng)收。為確保您不會(huì)展示過期的廣告,請(qǐng)?jiān)贏ppOpenManager中添加一個(gè)方法,用于檢查廣告引用加載后經(jīng)過了多長時(shí)間。然后,使用該方法檢查廣告是否仍然有效。
/**
* Utility method to check if ad was loaded more than n hours ago.
*/
private boolean wasLoadTimeLessThanNHoursAgo(long numHours) {
long dateDifference = (new Date()).getTime() - this.loadTime;
long numMilliSecondsPerHour = 3600000;
return (dateDifference < (numMilliSecondsPerHour * numHours));
}
/**
* Utility method that checks if ad exists and can be shown.
*/
public boolean isAdAvailable() {
return appOpenAd != null && wasLoadTimeLessThanNHoursAgo(4);
}
冷啟動(dòng)和加載屏幕
用戶啟動(dòng)應(yīng)用,但該應(yīng)用之前未在內(nèi)存中掛起,這種情況就稱為“冷啟動(dòng)”。
例如,用戶首次打開您的應(yīng)用便屬于冷啟動(dòng)。對(duì)于冷啟動(dòng),您沒有之前已加載的開屏廣告可供立即展示。請(qǐng)求廣告和收到相應(yīng)廣告之間的延遲會(huì)導(dǎo)致出現(xiàn)以下情況:用戶能夠暫時(shí)使用您的應(yīng)用,然后突然看到一條無關(guān)廣告。應(yīng)避免出現(xiàn)這種情況,因?yàn)檫@會(huì)導(dǎo)致用戶體驗(yàn)不佳。
在冷啟動(dòng)時(shí)使用開屏廣告的首選方法是,使用加載屏幕來加載游戲或應(yīng)用素材資源,并且僅在加載屏幕展示廣告。如果您的應(yīng)用已加載完畢,并且用戶已經(jīng)訪問應(yīng)用的主要內(nèi)容,則不要展示廣告。
最佳做法
借助開屏廣告,您可以在用戶首次啟動(dòng)應(yīng)用和切換應(yīng)用期間通過應(yīng)用的加載屏幕獲利,不過,還請(qǐng)務(wù)必考慮一些最佳做法,以便用戶喜歡使用您的應(yīng)用。最佳做法如下所示:
·在用戶使用幾次您的應(yīng)用后展示第一個(gè)開屏廣告。
·在用戶等待您的應(yīng)用加載時(shí)展示開屏廣告。
·如果開屏廣告位于加載屏幕上,并且加載屏幕在用戶關(guān)閉廣告之前已加載完畢,您可能需要通過onAdDismissedFullScreenContent()方法關(guān)閉加載屏幕。