很多app(如淘寶、美團(tuán)等)在啟動(dòng)圖加載完畢后,還會(huì)顯示幾秒的廣告,一般都有個(gè)跳過(guò)按鈕可以跳過(guò)這個(gè)廣告,有的app在點(diǎn)擊廣告頁(yè)之后還會(huì)進(jìn)入一個(gè)廣告頁(yè)面,點(diǎn)擊返回進(jìn)入首頁(yè)。就像下面的效果。這個(gè)功能現(xiàn)在很常見(jiàn),那么它是如何實(shí)現(xiàn)的呢?

思路
1.廣告頁(yè)加載思路。廣告頁(yè)的內(nèi)容要實(shí)時(shí)顯示,在無(wú)網(wǎng)絡(luò)狀態(tài)或者網(wǎng)速緩慢的情況下不能延遲加載,或者等到首頁(yè)出現(xiàn)了再加載廣告頁(yè)。所以設(shè)置廣告頁(yè)時(shí)需要設(shè)置一個(gè)時(shí)間進(jìn)行網(wǎng)絡(luò)請(qǐng)求,在時(shí)間結(jié)束后如果沒(méi)有請(qǐng)求到數(shù)據(jù)就直接到首頁(yè),請(qǐng)求到則加載數(shù)據(jù)。
2.廣告頁(yè)的顯示方法有兩種。
一種是直接新建一個(gè)自定義view添加到self.window上。
[self.window addSubview:adView];
另一種方法是新建一個(gè)廣告controller。通過(guò)設(shè)置rootviewcontroller來(lái)更換界面。
[[UIApplication sharedApplication].delegatewindow].rootViewController = [[UINavigationController alloc] initWithRootViewController:[HomeViewControllernew]];
3.實(shí)現(xiàn)例子
只說(shuō)不寫(xiě)例子沒(méi)有直觀的感受。
我寫(xiě)的Demo鏈接:ADLauncher.zip
新版demo:FinalADLauncher.zip修改點(diǎn)擊活動(dòng)進(jìn)行跳轉(zhuǎn)(兩種方法)。
補(bǔ)充:在返回的圖片為gif時(shí),會(huì)出現(xiàn)第二次進(jìn)入后動(dòng)態(tài)圖不播放的情況。可以做以下修改。(在銷(xiāo)毀的時(shí)候清除sd的緩存。)在只有靜態(tài)圖的情況下不需要。

下面的是兩個(gè)寫(xiě)的比較不錯(cuò)的三方庫(kù)。
https://github.com/Running2snail/LLFullScreenAd(只能顯示圖片)
https://github.com/CoderZhuXH/XHLaunchAd(圖片、視頻)
4.廣告頁(yè)的顯示代碼可以放在AppDeleate中,也可以放在首頁(yè)的控制器中。如果代碼是在AppDelegate中,可以通過(guò)發(fā)送通知的方式,讓首頁(yè)push到廣告詳情頁(yè)。直接Push的方法由于水平有限未實(shí)現(xiàn),暫時(shí)未想到。
注意點(diǎn)
1.廣告頁(yè)面的底部和啟動(dòng)圖的底部一般都是相同的,給我們的感覺(jué)就是啟動(dòng)圖加載完之后把廣告圖放在了啟動(dòng)圖上,而且不能有偏差,比如淘寶啟動(dòng)畫(huà)面。美工在制作廣告圖的時(shí)候要注意這點(diǎn)。
2.研究了一下淘寶的廣告顯示機(jī)制,刪除淘寶之后重新打開(kāi)不會(huì)顯示廣告圖片,第二次打開(kāi)才會(huì)顯示。美團(tuán)的廣告圖有時(shí)候顯示有時(shí)候不顯示,所以后臺(tái)在開(kāi)發(fā)廣告api的時(shí)候可以增加一個(gè)字段來(lái)判斷是否啟用廣告