しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

Admobのネイティブアドバンス広告を試してみる

Admobのネイティブアドバンス広告というフォーマットを試してみました。
これは他社でよくあるネイティブ同様、渡された文字列や画像で広告画面を作っていくもののようです。

ネイティブアドバンス広の広告ユニット作成

まずはAdmobの画面から広告ユニットを作成します。
下のネイティブを選択して、「ネイティブ広告アドバンスに切り替える」リンクをクリックします。

注) こちらのリンクですが、2017/10/23現在アカウントによって出たり出なかったりしているようです。
もしかすると一部ユーザーにしか開放されていないのかもしれません。

f:id:llcc:20171023152841p:plain

切り替えたら広告の種類を選んで作成完了です。

f:id:llcc:20171023153140p:plain

ネイティブアドバンス広告の実装

まずはCocoaPodsでAdmobをインストールします。

target 'MyApp' do
  use_frameworks!

  pod 'Google-Mobile-Ads-SDK'
end

ネイティブアドバンス広告のデータ取得は下の通りです。
adUnitIDは先程登録したものを利用してください。

import UIKit
import GoogleMobileAds

class ViewController: UIViewController {
    var adLoader: GADAdLoader?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        adLoader = GADAdLoader(adUnitID: "AD UNIT ID", rootViewController: self, adTypes: [.nativeAppInstall], options: nil)
        adLoader?.delegate = self
        adLoader?.load(GADRequest())
    }
}

extension ViewController: GADNativeAppInstallAdLoaderDelegate {
    func adLoader(_ adLoader: GADAdLoader, didReceive nativeAppInstallAd: GADNativeAppInstallAd) {
        
    }
    
    func adLoader(_ adLoader: GADAdLoader, didFailToReceiveAdWithError error: GADRequestError) {
        
    }
}

Delegateメソッドでは、広告のタイトル・アイコン・本文などが渡されるので、それを使って広告を組み立てます。

extension ViewController: GADNativeAppInstallAdLoaderDelegate {
    func adLoader(_ adLoader: GADAdLoader, didReceive nativeAppInstallAd: GADNativeAppInstallAd) {
        nativeAppInstallAd.headline // → タイトル
        nativeAppInstallAd.body // → 説明文
    }
    
    func adLoader(_ adLoader: GADAdLoader, didFailToReceiveAdWithError error: GADRequestError) {
        
    }
}

実際の広告表示はXibファイルを利用します。

f:id:llcc:20171023173501p:plain

Xibファイルを作り、そのViewをGADNativeAppInstallAdViewにします。

f:id:llcc:20171023173536p:plain

その上にラベルを配置して、GADNativeAppInstallAdViewのheadlineViewなど、各プロパティーに紐付けていきます。

f:id:llcc:20171023173730p:plain

ここまで終わったら、Xibを使って広告を表示します。
下では、Xibを読み込んでheadlineとcallToActionをセットしています。

extension ViewController: GADNativeAppInstallAdLoaderDelegate {
    func adLoader(_ adLoader: GADAdLoader, didReceive nativeAppInstallAd: GADNativeAppInstallAd) {
        let adView = Bundle.main.loadNibNamed("View", owner: self, options: nil)?.first as! GADNativeAppInstallAdView
        adView.backgroundColor = UIColor.lightGray
        adView.frame = CGRect(x: 0, y: view.frame.height - 50, width: view.frame.width, height: 50)
        adView.nativeAppInstallAd = nativeAppInstallAd
        view.addSubview(adView)
        
        (adView.headlineView as? UILabel)?.text = nativeAppInstallAd.headline
        (adView.callToActionView as? UILabel)?.text = nativeAppInstallAd.callToAction
    }
    
    func adLoader(_ adLoader: GADAdLoader, didFailToReceiveAdWithError error: GADRequestError) {
        
    }
}

実行すると広告を表示する事ができます。
ラベルをタップすればAppStoreのページに遷移します。

f:id:llcc:20171023173851p:plain

今回は試してないのですが、広告タイプはインストール型以外にもあるようです。

GAD_EXTERN GADAdLoaderAdType const kGADAdLoaderAdTypeNativeAppInstall;
GAD_EXTERN GADAdLoaderAdType const kGADAdLoaderAdTypeNativeContent;
GAD_EXTERN GADAdLoaderAdType const kGADAdLoaderAdTypeNativeCustomTemplate;
GAD_EXTERN GADAdLoaderAdType const kGADAdLoaderAdTypeDFPBanner;