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

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


Swift 5.3
Xcode 12.4

AdMob SDK の導入

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

GoogleMobileAds SDKのダウンロード

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



*バージョンは逐次変わります

SDKをダウンロードしてプロジェクトに追加

ダウンロードして解凍、frameworkがいくつかあります。


「Add Files to “project”…」を使ってこれをプロジェクトに追加します。

注意としてはファイルをコピーしてプロジェクトフォルダ内に持ってくること。
「Copy items if needed」
これを忘れると後で面倒なことになります。

–ObjC リンカー フラッグを追加

「TARGETS」「Build Settings」検索で「other linker」を探し
「-ObjC」 を記述

GADIsAdManagerApp

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

 

GADApplicationIdentifier

アプリIDをInfo.plistに追加
テスト用ID:ca-app-pub-3940256099942544~1458002511

 

 

SKAdNetworkIdentifier

iOS14からはIDFAを利用する場合はユーザー許可が必要になりました。
SKAdNetworkはAppleの広告ネットワークでこれに対応させます。

Google の SKAdNetworkIdentifier の値として cstr6suwn9.skadnetwork を含む SKAdNetworkItems キーをInfo.plistに追加

CocoaPodsを使う(Option)

今までのSDKをダウンロードする代わりにCocoaPodsを使う方法です。
上記ダウンロードでのframeworkが済んでいれば必要ありません。

推奨なのですが説明があまりありませんので、この辺りハマると結構面倒ですのでやめたほうがいいかもしれません(元々CocoaPodsが使える環境であれば問題ないのですが)

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

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


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


これでpod installします


Pod installation complete!

となれば成功です。
以降は.xcworkspaceを叩いて起動

サンプルコード

AppDelegate で startWithCompletionHandler: メソッドを呼び出します。

AppDelegate.swift

 

GADBannerViewDelegate で delegate を設定
GoogleMobileAds を import します

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です。


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

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