Admobのネイティブアドバンス広告を試してみる
Admobのネイティブアドバンス広告というフォーマットを試してみました。
これは他社でよくあるネイティブ同様、渡された文字列や画像で広告画面を作っていくもののようです。
ネイティブアドバンス広の広告ユニット作成
まずはAdmobの画面から広告ユニットを作成します。
下のネイティブを選択して、「ネイティブ広告アドバンスに切り替える」リンクをクリックします。
注) こちらのリンクですが、2017/10/23現在アカウントによって出たり出なかったりしているようです。
もしかすると一部ユーザーにしか開放されていないのかもしれません。
切り替えたら広告の種類を選んで作成完了です。
ネイティブアドバンス広告の実装
まずは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ファイルを利用します。
Xibファイルを作り、そのViewをGADNativeAppInstallAdViewにします。
その上にラベルを配置して、GADNativeAppInstallAdViewのheadlineViewなど、各プロパティーに紐付けていきます。
ここまで終わったら、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のページに遷移します。
今回は試してないのですが、広告タイプはインストール型以外にもあるようです。
GAD_EXTERN GADAdLoaderAdType const kGADAdLoaderAdTypeNativeAppInstall; GAD_EXTERN GADAdLoaderAdType const kGADAdLoaderAdTypeNativeContent; GAD_EXTERN GADAdLoaderAdType const kGADAdLoaderAdTypeNativeCustomTemplate; GAD_EXTERN GADAdLoaderAdType const kGADAdLoaderAdTypeDFPBanner;