前言
最近小編寫一個(gè)項(xiàng)目,拿到手的源碼中包含有GoogleAds。這是一個(gè)谷歌關(guān)于廣告的庫(kù),在這里簡(jiǎn)單的寫一下怎么使用。如果想要更加深入的了解,可以點(diǎn)這里進(jìn)入官方地址。小編在這個(gè)例子使用的是Swift,有需要OC或者安卓的朋友可以留下評(píng)論。
第一步,導(dǎo)入庫(kù)并設(shè)置配置文件
這里小編使用的是CocoaPods
pod 'GoogleAds-IMA-iOS-SDK'
然后別忘了設(shè)置Info.plist,如下

第二步,添加庫(kù)并設(shè)置相關(guān)控件
import GoogleInteractiveMediaAds
--------------------------------------
var adTagUrl = "https://pubads.g.doubleclick.net/gampad/ads?sz=640x480&iu=/124319096/external/single_ad_samples&ciu_szs=300x250&impl=s&gdfp_req=1&env=vp&output=vast&unviewed_position_start=1&cust_params=deployment%3Ddevsite%26sample_ct%3Dlinear&correlator="
var adsLoader: IMAAdsLoader!
var contentPlayhead: IMAAVPlayerContentPlayhead!
var adsManager: IMAAdsManager!
var adTimer: Timer!
這里的廣告地址用的是官網(wǎng)demo的地址。為什么有定時(shí)器?因?yàn)樵诓シ艔V告的時(shí)候,回到手機(jī)主頁(yè)面再回到APP或者打開(kāi)控制面板再回到APP會(huì)讓廣告卡住,因?yàn)樵黾恿艘粋€(gè)定時(shí)器保存廣告的正常播放,如果有更好的辦法,可以和小編討論。
第三步,創(chuàng)建廣告請(qǐng)求
func requestAd() {
self.adsLoader = IMAAdsLoader(settings: nil)
self.adsLoader.delegate = self
let adDisplayContainer = IMAAdDisplayContainer(adContainer: self.view, companionSlots: nil)
let request = IMAAdsRequest(
adTagUrl: self.adTagUrl,
adDisplayContainer: adDisplayContainer,
contentPlayhead: self.contentPlayhead,
userContext: nil)
self.adsLoader.requestAds(with: request)
}
第四步,在代理中進(jìn)行相應(yīng)的操作
// MARK: IMAAdsLoaderDelegate - 廣告代理
extension ViewController: IMAAdsLoaderDelegate {
func adsLoader(_ loader: IMAAdsLoader!, adsLoadedWith adsLoadedData: IMAAdsLoadedData!) {
self.adsManager = adsLoadedData.adsManager
self.adsManager.delegate = self
let adsRenderingSettings = IMAAdsRenderingSettings()
self.adsManager.initialize(with: adsRenderingSettings)
}
func adsLoader(_ loader: IMAAdsLoader!, failedWith adErrorData: IMAAdLoadingErrorData!) {
}
}
extension ViewController: IMAAdsManagerDelegate {
func adsManager(_ adsManager: IMAAdsManager!, didReceive event: IMAAdEvent!) {
if event.type == IMAAdEventType.LOADED {
self.adsManager.start()
openTimer()
} else if event.type == IMAAdEventType.COMPLETE {
} else if event.type == IMAAdEventType.SKIPPED {
} else if event.type == IMAAdEventType.RESUME {
} else if event.type == IMAAdEventType.LOG {
}
}
func adsManager(_ adsManager: IMAAdsManager!, didReceive error: IMAAdError!) {
}
func adsManagerDidRequestContentPause(_ adsManager: IMAAdsManager!) {
}
func adsManagerDidRequestContentResume(_ adsManager: IMAAdsManager!) {
}
func openTimer() {
closeTimer()
adTimer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(resumeADS), userInfo: nil, repeats: true)
RunLoop.current.add(adTimer, forMode: .common)
}
@objc func closeTimer() {
if adTimer != nil {
adTimer.invalidate()
adTimer = nil
}
}
@objc func resumeADS() {
if adsManager != nil {
adsManager.resume()
}
}
deinit {
closeTimer()
}
}
這樣就完成了,效果如下:

效果圖.gif
希望這篇文章對(duì)各位看官有所幫助,Demo下載地址:Demo