Google Mobile Ads SDK のアプリへの統合は、広告を表示して収益を得るための第一歩です。SDK を統合したら、サポートされている広告フォーマットを 1 つ以上実装できます。
前提条件
- Xcode 14.1 以降を使用する
- iOS 11.0 以降をターゲットとする
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 Package GitHub リポジトリを検索します。
https://github.com/googleads/swift-package-manager-google-mobile-ads.git
使用する Google Mobile Ads Swift パッケージのバージョンを選択します。 新しいプロジェクトの場合は、[Up to Next メジャー バージョン] を使用することをおすすめします。
完了すると、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 つのキーを追加します。
GADApplicationIdentifier
キーとAd Manager app ID found in the Ad Manager UI and of the formca-app-pub-################~##########
の文字列値。SKAdNetworkItems
キーと Google の値(cstr6suwn9.skadnetwork
)のSKAdNetworkIdentifier
値。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>4pfyvq9l8r.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>ludvb6z3bs.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>cp8zw746q7.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>3sh42y64q3.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>f38h382jlk.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>hs6bdukanm.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>gta9lk7p23.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>vutu7akeur.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>y5ghdn5j9k.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>n6fk4nfna4.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>v9wttpbfk9.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>n38lu8286q.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>47vhws6wlr.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>eh6m2bh4zr.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>a2p9lx4jpn.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>22mmun2rn5.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>klf5c3l5u5.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>ppxm28t8ap.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>ecpz2srf59.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>uw77j35x4d.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>pwa73g5rt2.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>mlmmfzh3r3.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>3rd42ekr43.skadnetwork</string> </dict> <dict> <key>SKAdNetworkIdentifier</key> <string>3qcr597p9d.skadnetwork</string> </dict> </array>
初期化のパフォーマンスを最適化するには、収益グループと、そのグループが使用されるアプリを関連付けることが重要です。特定のアプリに関連付けられていない iOS をターゲットとする収益グループの設定は、アカウント内のすべての iOS アプリに送信されるため、初期化に必要な時間が長くなる可能性があります。
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 がインポートされ、初期化されました。これで広告を実装できます。 Ad Manager 広告にはさまざまな広告フォーマットが用意されているため、アプリのユーザー エクスペリエンスに最適なものを選択できます。
バナー
デバイス画面の上部か下部に表示される長方形の広告です。アプリの操作中は画面に表示され続けますが、一定時間が経過すると自動的に更新されるよう設定できます。モバイル広告を初めてお使いの場合は、この広告から始めることをおすすめします。
インタースティシャル
ユーザーが閉じるまでアプリのインターフェース上に全画面表示される広告です。ゲームのレベルが切り替わる合間やタスクが完了した直後など、アプリの実行の流れが自然に一時停止するタイミングでの使用に適しています。
ネイティブ
アプリのデザインに合わせてカスタマイズできる広告です。広告の配置場所やスタイルを指定できるため、アプリのデザインに溶け込んだレイアウトが可能になります。
Google アド マネージャーでは、ネイティブ広告を実装する方法として、ネイティブ スタイルとカスタム レンダリングの 2 種類が用意されています。
ネイティブ スタイルは、ネイティブ広告をできるだけ簡単に実装できるように設計されているため、このフォーマットを初めて使用する場合に最適です。カスタム レンダリングは、プレゼンテーションをより自由に作成できるよう設計されています。
ネイティブ スタイルを実装する | カスタム レンダリングを実装する |
特典
短い動画を視聴したり体験プレイ広告やアンケートを操作したユーザーに特典を提供する広告。無料ユーザーの収益化に適しています。
リワード広告を実装する | リワード広告を実装する(新しい API) |