iOS-使用GoogleAds播放视频广告
2019-03-29 本文已影响0人
神SKY
前言
最近小编写一个项目,拿到手的源码中包含有GoogleAds。这是一个谷歌关于广告的库,在这里简单的写一下怎么使用。如果想要更加深入的了解,可以点这里进入官方地址。小编在这个例子使用的是Swift,有需要OC或者安卓的朋友可以留下评论。
第一步,导入库并设置配置文件
这里小编使用的是CocoaPods
pod 'GoogleAds-IMA-iOS-SDK'
然后别忘了设置Info.plist,如下

第二步,添加库并设置相关控件
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!
这里的广告地址用的是官网demo的地址。为什么有定时器?因为在播放广告的时候,回到手机主页面再回到APP或者打开控制面板再回到APP会让广告卡住,因为增加了一个定时器保存广告的正常播放,如果有更好的办法,可以和小编讨论。
第三步,创建广告请求
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)
}
第四步,在代理中进行相应的操作
// 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()
}
}
这样就完成了,效果如下:

希望这篇文章对各位看官有所帮助,Demo下载地址:Demo