AdMob
在 Google 的廣告投放服務之中,是以 AdSense 作為主軸,整合所有廣告相關的服務; 而 AdMob 則是其中一個專門針對行動裝置的部分。 所以若 iOS 的開發者想在其應用上放置廣告單元,則需要從 AdMob 著手。
建立廣告單元
首先,需要先到 AdMob 的控制台中,新建一個新的應用程式, 並將 app 的相關資訊填寫完整。
再者,則是建立一個廣告單元,而這篇所要分享的是「獎勵式廣告」的實作。
什麼是獎勵式廣告?
獎勵式廣告的意思就如其名,是一個可以在編輯時設定, 反饋給觀看玩廣告的使用者一些獎勵的一種廣告模式; 如大部分的手機遊戲,觀看影片後可以得到一些鑽石、金幣或者特殊加成等。
設定廣告獎勵
我們可以在這個畫面中,去設定使用者觀看頻率的限制以及獎勵數量。
而在後面程式實作的時候,會講解這邊設定會影響到什麼。
Framework 安裝
你可以透過 CocoaPods 或是直接下載拉進專案之中; 這邊由於我所加入廣告的 App 有整合 Firebase 的相關服務, 而 Firebase 官方並無支援 Carthage,所以在這就一併使用 CocoaPods 來做套件的管理。 因為使用 Firebase,所以只需要在原先的 Podfile 之中加上
pod 'Firebase/AdMob'
並且執行 pod install,即可完成安裝。
AppDelegate.swift
先在上方 import GoogleMobileAds,並需要在 FirebaseApp.configure() 之後,加上 AdMob 的廣告設定: GADMobileAds.configure(withApplicationID: Your_Ads_ApplicationID)
import Firebase
import GoogleMobileAds
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
FirebaseApp.configure()
GADMobileAds.configure(withApplicationID: Your_Ads_ApplicationID)
return true
}
這樣便可以在一開啟 app 時,和 AdMob 做連結。
獎勵式廣告的流程 獎勵式廣告和一般掛在下方的簽入式廣告不同,它的流程為 一、先和 AdMob 發送獎勵式廣告的 request
func loadAdMob() {
GADRewardBasedVideoAd.sharedInstance().delegate = self
let request = GADRequest()
GADRewardBasedVideoAd.sharedInstance().load(request, withAdUnitID: AdUnitID)
}
二、主動式地去詢問 AdMob 的獎勵式廣告是否就緒;
if GADRewardBasedVideoAd.sharedInstance().isReady {
GADRewardBasedVideoAd.sharedInstance().present(fromRootViewController: self)
} else {
//do something
}
三、影片完整備看完後,它會以 delegate 的方式告知你剛剛投放的獎勵式廣告,其相關內容設定
func rewardBasedVideoAd(_ rewardBasedVideoAd: GADRewardBasedVideoAd, didRewardUserWith reward: GADAdReward) {
//give user reward
}
func rewardBasedVideoAd(_ rewardBasedVideoAd: GADRewardBasedVideoAd, didFailToLoadWithError error: Error) {
print("Reward based video ad failed to load: \(error.localizedDescription)")
}
func rewardBasedVideoAdDidReceive(_ rewardBasedVideoAd: GADRewardBasedVideoAd) {
print("Reward based video ad is received.")
}
func rewardBasedVideoAdDidOpen(_ rewardBasedVideoAd: GADRewardBasedVideoAd) {
print("Opened reward based video ad.")
}
func rewardBasedVideoAdDidStartPlaying(_ rewardBasedVideoAd: GADRewardBasedVideoAd) {
print("Reward based video ad started playing.")
}
func rewardBasedVideoAdDidClose(_ rewardBasedVideoAd: GADRewardBasedVideoAd) {
print("Reward based video ad is closed.")
}
func rewardBasedVideoAdWillLeaveApplication(_ rewardBasedVideoAd: GADRewardBasedVideoAd) {
print("Reward based video ad will leave application.")
}
大致上的流程就是這樣,接著回到前面所說的設定; 若你有限制使用者觀看的頻率,在觀看完後的限制時間內,會在步驟二的地方得到 false, 所以在流程上需要稍作注意。 而獎勵數量則是會在廣告結束後的 delegate 之中,以 reward 這個物件回傳回來, 它底下會有 amount 這個的參數,便是剛剛所設定的獎勵數量。