このガイドは、AdMob で iOS アプリを収益化することをご希望のパブリッシャー様のうち、Firebase を使用されていない方を対象としています。アプリで Firebase を使用する予定がある場合(または使用を検討している場合)は、このガイドの Firebase を使った AdMob 向けのバージョンをご覧ください。
アプリに Google Mobile Ads SDK を統合することは、広告を表示して収益を得るための第一歩です。SDK を組み込んだら、サポート対象広告フォーマットの実装作業に進めます。
前提条件
- Xcode 13.2.1 以降を使用していること
- iOS 10.0 以降をターゲットとしていること
- 推奨: AdMob アカウントを作成して、アプリを登録します。
Mobile Ads SDK をインポートする
CocoaPods(推奨)
iOS プロジェクトに SDK を簡単にインポートするには、CocoaPods を使う方法がおすすめです。プロジェクトの Podfile を開き、アプリのターゲットに次の行を追加します。
pod 'Google-Mobile-Ads-SDK'
コマンドラインから次のコマンドを実行します。
pod install --repo-update
CocoaPods を初めてご利用の場合は、CocoaPods の公式ドキュメントで Podfile の作成方法と使用方法をご確認ください。
Swift Package Manager
Google Mobile Ads SDK はバージョン 9.0.0 から Swift Package Manager に対応しています。Swift パッケージをインポートする手順は次のとおりです。
Xcode で File > Add Packages... を開き、Google Mobile Ads の Swift パッケージをインストールします。
表示されたプロンプトで、Google Mobile Ads の Swift パッケージの GitHub リポジトリ(下記)を検索します。
https://github.com/googleads/swift-package-manager-google-mobile-ads.git
使用する Google Mobile Ads の Swift パッケージのバージョンを選択します。新しいプロジェクトの場合は [Up to Next Major Version] を選択することをおすすめします。
完了すると、Xcode はパッケージの依存関係の解決とバックグラウンドでのダウンロードを開始します。パッケージの依存関係の追加について詳しくは、Apple の記事を参照してください。
手動ダウンロード
SDK フレームワークを直接ダウンロードして解凍し、Xcode のプロジェクトに次のフレームワークをインポートします。
GoogleAppMeasurement.xcframework
GoogleAppMeasurementIdentitySupport.xcframework
GoogleMobileAds.xcframework
GoogleUtilities.xcframework
nanopb.xcframework
PromisesObjC.xcframework
UserMessagingPlatform.xcframework
プロジェクトのビルド設定で、次のように [Other Linker Flags] に
-ObjC
リンカーフラグを追加します。
Info.plist を更新する
アプリの Info.plist
ファイルを更新し、次の 2 つのキーを追加します。
- AdMob アプリ ID(AdMob の UI で確認)の文字列値を含む
GADApplicationIdentifier
キー。 - Google の
SKAdNetworkIdentifier
値(cstr6suwn9.skadnetwork
)を含むSKAdNetworkItems
キー。これらの値を Google に提供したその他の購入者を選択します。
<key>GADApplicationIdentifier</key> <string>ca-app-pub-3940256099942544~1458002511</string> <key>SKAdNetworkItems</key> <array> <dict> <key>SKAdNetworkIdentifier</key> <string>cstr6suwn9.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>4fzdc2evr5.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>2fnua5tdw4.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>ydx93a7ass.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>5a6flpkh64.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>p78axxw29g.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>v72qych5uu.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>c6k4g5qg8m.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>s39g8k73mm.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>3qy4746246.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>3sh42y64q3.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>f38h382jlk.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>hs6bdukanm.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>prcb7njmu6.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>v4nxqhlyqp.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>wzmmz9fp6w.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>yclnxrl5pm.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>t38b2kh725.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>7ug5zh24hu.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>9rd848q2bz.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>n6fk4nfna4.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>kbd757ywx3.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>9t245vhmpl.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>4468km3ulz.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>2u9pt9hc89.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>8s468mfl3y.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>av6w8kgt66.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>klf5c3l5u5.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>ppxm28t8ap.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>424m5254lk.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>uw77j35x4d.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>578prtvx9j.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>4dzt52r2t5.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>e5fvkxwrpn.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>8c4e2ghe7u.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>zq492l623r.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>3qcr597p9d.skadnetwork</string> </dict> </array>
AdMob アカウントの作成とアプリの登録が済んでいない場合は、ここで行います。
Mobile Ads SDK を初期化する
広告を読み込む前に、GADMobileAds.sharedInstance
で startWithCompletionHandler:
メソッドを呼び出します。このメソッドは SDK を初期化し、初期化が完了(または 30 秒間のタイムアウトが経過)した時点で完了ハンドラをコールバックします。この処理が必要なのは 1 回のみで、アプリの起動時に行うのが理想的です。できるだけ早く startWithCompletionHandler:
を呼び出してください。
AppDelegate
で startWithCompletionHandler:
メソッドを呼び出す方法について、次に例を示します。
サンプル AppDelegate.m(抜粋)
Swift
import GoogleMobileAds @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { GADMobileAds.sharedInstance().start(completionHandler: nil) return true } }
Objective-C
@import GoogleMobileAds; @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [GADMobileAds.sharedInstance startWithCompletionHandler:nil]; return YES; } @end
メディエーションを使用している場合は、完了ハンドラが呼び出されるまで待ってから広告を読み込むことをおすすめします。これにより、すべてのメディエーション アダプタが確実に初期化されます。
広告フォーマットを選択する
Mobile Ads SDK がインポートされて初期化が完了したら、いよいよ広告を実装します。AdMob には多様な広告フォーマットがあり、アプリのユーザー エクスペリエンスに合わせて最適なものを選べます。
バナー
デバイス画面の上部か下部に表示される長方形の広告です。アプリの操作中は画面に表示され続けますが、一定時間が経過すると自動的に更新されるよう設定できます。モバイル広告を初めてお使いの場合は、この広告から始めるのが最適です。
インタースティシャル
ユーザーが閉じるまでアプリのインターフェース上に全画面表示される広告です。ゲームのレベルが切り替わる合間やタスクが完了した直後など、アプリの実行の流れが自然に一時停止するタイミングでの使用に適しています。
ネイティブ
アプリのデザインに合わせてカスタマイズできる広告です。広告の配置場所やスタイルを指定できるため、アプリのデザインに溶け込んだレイアウトが可能になります。
リワード広告
短い動画を視聴し、体験プレイ広告やアンケートを操作したユーザーに報酬を進呈する広告です。無料利用のユーザーの収益化に効果的です。
リワード広告を実装する | リワード広告を実装する(新しい API の場合) |