SDK8 AdMob Mediation Banner
於 2021年8月27日 (五) 08:47 由 imported>Wikiuser 所做的修訂 (→實作方式)
簡介
首先將 AdMob 和 TAMedia SDK 整合至專案中,AdMob SDK可以在這裡下載(https://developers.google.com/mobile-ads-sdk/download?#downloadios)
接著在 AdMob Mediation 新增 Custom Event (https://mediation.admob.com)
新增 Custom Event 的詳細說明可以參考 (https://developers.google.com/mobile-ads-sdk/docs/admob/mediation#ios)
最後,在專案中加入與 Custom Event 對應的 Class,其中 Custom Event 的 Class Name 需要和專案新增的 Class Name 保持一致
例如新增的 Class Name 為 TADCustomBanner,Custom Event 的 Class Name 則必須是 專案名稱.TADCustomBanner。(以 Swift 編寫的專案需加上專案名稱;若為以 OC編寫,則放入 Class Name)
TAMedia Banner 廣告支援格式
廣告格式 (寬度x高度) | AdMob 對應常數值 |
---|---|
BANNER 320x50 | kGADAdSizeBanner |
BANNER 1200x627 | GADAdSizeFromCGSize(相對應比例CGSize) |
BANNER 320x50 | kGADAdSizeMediumRectangle |
實作方式
- MediationViewController.swift
// MediationViewController.swift // 匯入 Admob SDK 定義 import GoogleMobileAds class MediationViewController: UIViewController, GADBannerViewDelegate { // 使用 GADBannerView 物件來介接 TADBannerView var bannerView: GADBannerView! func viewDidLoad() { super.viewDidLoad() // 初始化 bannerView,根據需求設定大小 bannerView = GADBannerView(adSize: kGADAdSizeBanner) // 自行定義method 將 bannerView addSubview 至畫面 addBannerViewToView(bannerView) self.bannerView.adUnitID = "ca-app-pub-adUnitID" self.bannerView.rootViewController = self self.bannerView.delegate = self } }
// MediationViewController 的 view 消失前, 將 bannerView 及其 delegate 設為 nil override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) if self.bannerView != nil { self.bannerView.delegate = nil self.bannerView = nil } }
- Custom Banner View
// TADCustomBanner.swift // 匯入 TAMedia SDK 定義 import TAMediaAdsFramework // 匯入 Admob SDK 定義 import GoogleMobileAds class TADCustomBanner: NSObject, GADCustomEventBanner, TADBannerViewDelegate { // 宣告 TADBannerView 物件 var bannerView: TADBannerView? // 宣告 GADCustomEventBannerDelegate 物件 var delegate: GADCustomEventBannerDelegate? required override init() { super.init() } func requestAd(_ adSize: GADAdSize, parameter serverParameter: String?, label serverLabel: String?, request: GADCustomEventRequest) { // 將 GADCustomEventRequest 物件裡的資訊轉入 TADRequest 物件 let tadRequest = TADRequest() tadRequest.showLog = true tadRequest.isTesting = request.isTesting tadRequest.location = request.userLocationDescription tadRequest.setLocationWithLatitude(request.userLatitude, longitude: request.userLongitude, accuracy: request.userLocationAccuracyInMeters) // 必須將 bannerView 物件初始化 // 若是你使用banner 1200 627, 請記得要使用 TADAdSize1200x627RatioBannerWithWidth 或 TADAdSize1200x627RatioBannerWithHeight // 因為此為 TAMedia 特別定義的格式 // e.g. // self.bannerView = TADBannerView(adSize: TADAdSize1200x627RatioBannerWithWidth(adSize.size.width)) // self.bannerView = TADBannerView(adSize: TADAdSizeFromCGSize(adSize.size)) // 必須設定delegate self.bannerView?.delegate = self // 必須設定 adUnitID,serverParameter 為在 Admob 裡設定的 AD Unit ID self.bannerView?.adUnitID = serverParameter // 必需設定rootViewController self.bannerView?.rootViewController = UIApplication.shared.keyWindow?.rootViewController?.presentedViewController // 設定廣告若為影片時的聲音開關 self.bannerView?.turnOnMicrophone = false // 必須載入廣告 self.bannerView?.load(tadRequest) } // Custom物件消失前, 要將 bannerView 及其 delegate 設為 nil deinit { if self.bannerView != nil { self.bannerView.delegate = nil self.bannerView = nil } } }
//MARK: TADBannerViewDelegate extension TADCustomBanner { func adViewDidReceiveAd(_ view: TADBannerView!) { print("CustomBanner - adViewDidReceiveAd!!") delegate?.customEventBanner(self, didReceiveAd: view) } func adView(_ view: TADBannerView!, didFailToReceiveAdWithError error: TADRequestError!) { print("CustomBanner - didFailToReceiveAdWithError!! error: \(String(describing: error))") } func adViewWillPresentScreen(_ adView: TADBannerView!) { print("CustomBanner - adViewWillPresentScreen!!") delegate?.customEventBannerWillPresentModal(self) } func adViewWillDismissScreen(_ adView: TADBannerView!) { print("CustomBanner - adViewWillDismissScreen!!") delegate?.customEventBannerWillDismissModal(self) } func adViewDidDismissScreen(_ adView: TADBannerView!) { print("CustomBanner - adViewDidDismissScreen!!") delegate?.customEventBannerDidDismissModal(self) } func adViewWillLeaveApplication(_ adView: TADBannerView!) { print("CustomBanner - adViewWillLeaveApplication!!") delegate?.customEventBannerWillLeaveApplication(self) } }
Banner 畫面展示
320x50 | 1200x627 |