[iPhone] GoogleMobileAds SDKでAdMobをアプリに貼る

今までのSDKのみでAdMobを設定する方法です。FirebaseでのAdMobをGoogleは推奨していますが、古いSDKのみの方法も残っています。


Swift 5
Xcode 10.2.1

AdMob SDK の導入

 
最新のSDKをダウンロードします。
以前からのSDKによる設定を実装してみます。色々GoogleMobileAds SDKと言っても微妙にFirebaseに絡んだものもありますが、古いiOSは今までの方法を周到するしかありません。(SDKバージョンは随時アップされます)
 

 

GoogleMobileAds SDKのダウンロード

 
SDKをダウンロードせずにCocoaPodsを使うこともできますが、CocoaPodsがうまく使えないのであえてSDKでという理由もあると思いますのでダウンロードで設定します。
 
 

 
zipファイルをダウンロードしますが、バージョンは適宜合わせてください。
zipを解凍すると、
GoogleMobileAds.framework があり、「Add Files to “project”…」を使ってこれをプロジェクトに追加します。
 
注意としてはファイルをコピーしてプロジェクトフォルダ内に持ってくること。「Copy items if needed」
これを忘れると後で面倒なことになります。
 

SDK バージョン 7.42.0 以降

1)  Google Mobile Ads SDK バージョン 7.42.0 以降は設定が異なり、
以下3つを加えて4つのframesorkをプロジェクトに追加します

GoogleMobileAds.framework
GoogleAppMeasurement.framework
GoogleUtilities.framework
nanopb.framework

2) –ObjC リンカー フラッグを追加します。
「TARGETS」「Build Settings」検索で「other linker」を探し
「-ObjC」 を記述

3) Info.plist にGADIsAdManagerAppの項目を追加してYESに設定します。

CocoaPods

SDKをダウンロードする代わりにCocoaPodsを使う方法です。
推奨なのですが説明があまりありませんので、この辺りハマると結構面倒ですのでやめたほうがいいかもしれません(元々CocoaPodsが使える環境であれば問題ないのですが)

pod install:
ターミナルでprojectの .xcodeproj があるレベルに入ります。
linuxの”cd”や”ls”などのコマンドを使います。

podをinitするとPodfileが作成されます。Finderでプロジェクトを見てください。

 
作成されたPodfileファイルをエディターで開いて以下のように
pod ‘Google-Mobile-Ads-SDK’ を追加します。
targetはあなたのプロジェクト名です
 

 
これでpod installします

 
Pod installation complete!

となれば成功です。

後は、上と同様に Info.plist にGADIsAdManagerAppの項目を追加すれば設定は終わりです。
(以降は.xcworkspaceを叩いて起動)

 

サンプルコード

 
GoogleMobileAds を import します
GADBannerViewDelegate で delegate を設定
(個人的な好みで画像を入れました)
 
ViewController.swift

 
これでコードを実行すると「Test Ad」のテスト広告が表示されます。
 

AdMobを画面上に貼ることもできます。


 
広告の位置は決め打ちでやりましたが、実際はsafeareaや画面の回転も考慮する必要があります。
 

iPhone Xでは画面が 2:1 以上の横長になり、SafeAreaという概念が登場しました。四隅は角丸、上下左右のマージン、ステータスバ...
 

 

広告ユニット ID

 
AdMobに登録が済んでいない場合は申し込みをします。
AdMob に申し込む
 
広告ユニット ID は、AdMob で作成される各広告ユニットに割り当てられる一意の ID 番号で、バナー広告、インターステーシャル広告などアプリ内の広告を識別するためのものです。
 
広告ユニット ID の確認
から AdMob アカウントにログイン
サイドバーで [アプリ] をクリックします。
再びサイドバーで「広告ユニット」のアイコンをクリックすると広告ユニットのIDの一覧が表示されます。
 
ca-app-pub-9999999999999/99999999 のように「/」があるIDです。
 

 

実機での広告テスト

 
シミュレータの場合にはIDは、kGADSimulatorIDを使いますが、実機のテストモードでのIDは一度アプリを走らせ広告を出させると

こんなメッセージがでます。
ここで出てきた(これは例ですが) 2077ef9a63d2b398840261c8221a0c9b を
DEVICE_IDに置き換えてやります

let SimulatorTest = true はシミュレーターの場合で、実機では false に変更します。

最初はネットワークの関係で表示されるのに時間がかかることがあります。
 

 

公開前はテストモードで使用した方がよい理由

 
AdMob広告を自分でクリックするのは違反ですがそれ以外にもテストで本番広告を表示するのがよくないと思われる理由です。

広告がクリックされたかどうかはコンソールで確認できます。
 
スクリーンショット 2016-01-26 18.29.29 
これはAdMobのケースですが
見積もり収益額、表示回数、リクエストRPMと出ています
RPMは、表示回数 1,000 回あたりの見積もり収益額を表します。
この他にもCPCやCTRがあります。

CTR = (広告がクリックされた回数/表示された回数)
テストモードでなく本ちゃんで表示させることは、いたずらに表示回数を増やすことになります
 
見積もり収益額とあるのは、広告に対して無効なクリックがあった場合に
月末にまとめて収益額を差し引くために、「見積もり」とあります
見積もり額から無効クリックの収益を引き算したものが、未払い収益の確定額となります。月末にまとめているのは、何が無効クリックとしているか悟られないためでしょうね
 
また、Googleは広告をクリックした後のユーザーの動きをトレースしており、その後のアクションまで把握しているそうです。

クリックの品質を判断しCVR(成約率)の低いアカウントの報酬を下げる仕組みがあるらしいですので、間違ってクリックされやすい場所に広告を貼ることはお勧めできません。
また、本人や友達に依頼してクリックしたりすると、偽装とみなされる可能性があります
 
注意点として、
「推奨:AdMob アカウントを作成して、アプリを登録していること」と
スタートガイド – Google AdMobにはあります。
つまり始めてのアプリではこのテスト広告は実機で表示されないのかもしれません(推奨というのが必須ではないのですが)
既に登録されているIDを使って別のアプリのテストはできることはできます。
 
 

関連ページ:

References:
Get Started
Banner Ads