iOS-使用GoogleAds播放視頻廣告

前言

最近小編寫一個(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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容