[iPhone] アプリにAdMob広告を貼る(Firebase)

アプリの広告としてiAdがなくなった以上はiOSでもGoogleのAdMobを選択せざるえないでしょうか。更にGoogleではFirebaseを使って詳細な解析ができるサービスを提供しています。
 

 

Swift 4.0
Xcode 9.0

 

AdMob Firebase

 
今までAdMobはSDKを入れて設定するだけでしたが、Googleはより詳細な解析ができるFirebase版を提供しています。
ただ元々のSDKによるAdMobもまだ使えます。選択肢としては、

  1. Firebaseを利用したAdMobをCocoaPodsを使って設定
    • こちらがGoogleの推奨です。CocoaPods の使用を前提としていますので、別途設定が必要な場合がありちょっと面倒かもしれません。
  2. Firebaseを利用したAdMobをSDKで設定
    • CocoaPodsを使えないケース
  3. 今までのSDKのみで設定
    • FirebaseのAdMob導入はiOS7以降です、iOS6以下ではSDKを使った今までの方法にする必要がありますが、iOSのシェアを見ると問題ないでしょう。

またAdMob IDもFirebaseへのリンクが必要です。

 

Firebase Consoleでプロジェクト作成

 
新規の場合と既存のケースです

  • 新規FirebaseのAdMob IDを取得
  • 既存のAdMob IDをFirebaseにリンク

新規FirebaseのAdMob IDを取得
設定は公式のスタートガイドに沿って進めてみます。
XcodeでProjectを作成。この時作成されている「Bundle Identifier」は後で使います。
例:com.example.TestAdMobBannerFireBase
 
Firebase Consoleに入り、新規プロジェクトをクリックしてプロジェクトの作成を始めます。これ以降はプロジェクトにアプリを追加していきます。またAndroidのプロジェクトも作成できるので、わかりやすい名前にするといいでしょう。
 
プロジェクト名と国/地域を入力
 

 
iOSを選択
 

 
iOS バンドル名に先に作成したprojectのBundle Identifierを設定
App Store IDは分からないのでそのまま
 

 
GoogleService-Info.plistがダウンロードされるのでプロジェクトに取り込みます。
プロジェクトのInfo.plistがあるところにコピペです。
 

 
後で設定しますので、これ以降は説明だけ読んで流れを理解しておくだけで大丈夫です。
 

 
AppDelegateに FIRApp.configure() の初期化コードを追加しないといけないようです。
 

 
Firebaseの設定は終了です。追加アプリはプロジェクトを選択すると、ここから「+」で作成することになります。
 

 
既存のAdMob IDをFirebaseにリンクするケース:
AdMob homeから「アプリ管理」をクリック
 

 
Firebaseに変えたいアプリの「Firebaseへリンク」をクリック
 
ss2016-11-28-18-59-36
 
先に作成したプロジェクト、あるいは新規にプロジェクトを作成してアプリをまとめて設定します。iOS, Android共存できます。
 

 
このあとはGoogleService-Info.plistがダウンロードできるリンクをクリックしてファイルを落として終わりです。
プロジェクトに追加しないとSIGABRTになりますので忘れないように!
 

CocoaPodsの設定

 
CocoaPodsが設定されていない場合は、設定を行います
 
まずcocapodsのインストールができるかです。ターミナルで

これが以下のように通れば問題ないです。
 

 
このようなエラーとなった場合、

これを試してみてください

それでも解決しない場合は、こちらで設定をしてください。
CocoaPods を導入、rubyを設定をする
 
pod install:
CocoaPodsが使えるようであれば、ターミナルを開きprojectの.xcodeprojがあるレベルに入ります。
ここでpodをinitするとPodfileが作成されます。
 

 
screen-shot-2016-09-29-at-16-41-21
 
このファイルをエディターで開いて以下のように記述しなおします。
‘ TestAdMobBannerFireBase’ の部分はproject名に合わせてください。
 

 
これで「pod install」します。
 

 
成功するとこのようになります。
[!]にあるように今後は「.xcworkspace」から起動することになります。
 
screen-shot-2016-09-29-at-16-50-20

 

Xcodeへの記述

 
コードの記述は今までとあまり変わりませんが、iPhone Xに対応するためにはsafe area内にいれるため上44pix, 下34pixの調整が必要になるかもしれません。

ViewController.swift

 
Firebaseで初期化が必要だと言っていた箇所です。
AppDelegate.swift

 
ところで、

ですが、GADMobileAds Classによると
Configures the SDK using the settings associated with the given application ID
とあります。
「application ID」とは何か?サンプルコードではこうなってますが、なんか中途半端なIDと思っていましたが、AdMobの「アプリ管理」にあるアプリIDのようです。
 
admob_firebase_reg_2
 
これでビルドテストしてみると
 
simulator-screen-shot-sep-29-2016-18-04-36
 

Trouble shoot

 
NSCalendarsUsageDescription:
NSBluetoothPeripheralUsageDescription:

iTunes Connectへアップロードしてほっとした後にメールが届きました。

The app’s Info.plist must contain an NSCalendarsUsageDescription key with a string value explaining to the user how the app uses this data.

しかし、Googleの Release Note によれば

Apps no longer need to provide text for NSCalendarsUsageDescription and NSBluetoothPeripheralUsageDescription when updating apps for iOS 10.

ということでとっくの昔に解決しているはずなのに…

とりあえず、NSCalendarsUsageDescription他をInfo.plistにこんな感じで設定しましょう。

 

CocoaPodsを使わずにFirebase SDKでの設定

 
GoogleではCocoaPodsなどがうまくいかない場合は、直接SDKフレームワークを直接統合する方法があるとは言っていますが、昔ながらのSDKでの広告でもいいのではと個人的には思います。
…がとりあえず、
 
CocoaPodsでの設定で説明してありますが、Firebase ConsoleでGoogleService-Info.plistを作成します。
 
その後は、https://firebase.google.com/docs/ios/setup#frameworks の説明に沿っていいきたいと思います。このリンクや内容は今後変わるかもしれません。
 
フレームワーク SDK の zip ファイルをダウンロードします。この中にあるREADME.mdも重要な情報です。
 
projectにこのダウンロードしたファイル内にあるframeworkを「コピーして持ってきて」projectに追加します。必ず実体ファイルを取り込みます。

  • GoogleMobileAds.framework
  • FirebaseAnalytics.framework
  • FirebaseInstanceID.framework
  • GoogleInterchangeUtilities.framework
  • GoogleSymbolUtilities.framework
  • GoogleUtilities.framework

Objective-CのヘッダーファイルとそれをSwiftで読めるように以下の2つをprojectに追加

  • Firebase.h
  • module.modulemap

 
firebase_sdk_1

Firebase.hを読めるように、更に「Build Settings」「Swift Compiler – General」
「Objective-C Bridging Header」にファイルのパスを設定します。

例えば以下のようにFirebase.hがある場合は

screen-shot-2016-09-30-at-16-57-31

$(SRCROOT)/$(PROJECT)/Firebase.h
と設定します。

screen-shot-2016-09-30-at-16-54-34

また「Linking」「Other Linker Flags」に
-ObjC
を設定します

screen-shot-2016-09-30-at-16-59-56
 
コードはCocoaPodsで記述したものと同じで大丈夫です。
以上で設定は終わりです。後はBuildして実行してください。
 
simulator-screen-shot-sep-29-2016-18-04-36

できましたでしょうか

 

広告ユニットID を取得

 
初めての場合はAdMob – Google.co.jpにアクセスして「申し込む」をクリック
(以下内容は古いものですので公式の説明に沿ってやってください)
 
スクリーンショット 2016-01-26 18.38.02

 

アカウントの開設をします

AdMobのお申し込みこちらからもできます

 
アカウントが開設できたら、新しく広告IDを発行です
(表示画面は微妙に変化しますので注意してください)
 

 

アプリを選択
まだ公開していないのであれば手入力

広告フォーマットの選択
バナー/インターステーシャルなど、背景色の選択など
広告ユニットは後で自分がわかるように名前をつけます
 

Firebaseにリンクさせます。

screen-shot-2016-09-29-at-18-51-34 

広告ユニットIDが発行されます
IDの形式は
ca-app-<publisherId>/<slotname>
のようになります
(2013/8以前の古いIDはaxxxx 的なものでした)
 
admob_b4
 
後から広告ユニットIDを確認したい時は
https://apps.admob.com
から入り
「収益化」->「すべてのアプリ」
でアプリを選択して確認できます
このアプリ名は1度作ると削除できないので
メンテが困る…
 
admob_new

また、一旦作成して後からFirebaseにリンクすることもできます。

admob_firebase_reg_2
 

関連ページ:


ページのトップへ戻る

シェアする

  • このエントリーをはてなブックマークに追加

フォローする