AdMob 獎勵式廣告實作

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 這個的參數,便是剛剛所設定的獎勵數量。

comments powered by Disqus