Google Mobile Ads SDK を設定する

アプリに Google Mobile Ads SDK を統合することは、広告を表示して収益を得るための第一歩です。SDK を組み込んだら、サポート対象広告フォーマットの実装作業に進めます。

前提条件

  • Xcode 16.0 以降を使用していること
  • iOS 13.0 以降をターゲットとしていること

Google Mobile Ads SDK をインポートする

次のいずれかの方法で Google Mobile Ads SDK をインポートします。

Swift Package Manager

プロジェクトにパッケージの依存関係を追加するには、次の手順を行います。

  1. Xcode で [File] > [Add Package Dependencies...] を開き、Google Mobile Ads の Swift パッケージをインストールします。

  2. 表示されたプロンプトで、Google Mobile Ads の Swift パッケージの GitHub リポジトリ(下記)を検索します。

    https://github.com/googleads/swift-package-manager-google-mobile-ads.git
    
  3. 使用する Google Mobile Ads の Swift パッケージのバージョンを選択します。新しいプロジェクトの場合は [Up to Next Major Version] を選択することをおすすめします。

CocoaPods

続行する前に、CocoaPods の使用で Podfile の作成と使用に関する情報をご確認ください。

CocoaPods を使用する手順は次のとおりです。

  1. プロジェクトの Podfile を開き、アプリの target ビルド設定に次の行を追加します。

    pod 'Google-Mobile-Ads-SDK'
  2. ターミナルで以下を実行します。

    pod install --repo-update

手動ダウンロード

  1. Google Mobile Ads SDKダウンロードし、次のフレームワークを Xcode プロジェクトに Embed & Sign します。

    • GoogleMobileAds.xcframework
    • UserMessagingPlatform.xcframework
  2. プロジェクトのビルド設定で、次の操作を行います。

    • [Runpath Search Paths] に /usr/lib/swift パスを追加します。
    • [Other Linker Flags] に -ObjC リンカーフラグを追加します。

Info.plist を更新する

アプリの Info.plist ファイルを更新し、次の 2 つのキーを追加します。

  1. アド マネージャーの管理画面で確認できるアド マネージャー アプリ ID の文字列値を含む、ca-app-pub-################~########## の形式の GADApplicationIdentifier キー。

  2. Google の SKAdNetworkIdentifier 値(cstr6suwn9.skadnetwork)を含む SKAdNetworkItems キー。これらの値を Google に提供したサードパーティの購入者を選択します。

スニペットを完成させる

<key>GADApplicationIdentif<ier/ke<y>
!-- Sample Ad Manager app ID: ca-app-pub-3940256099942544~1458002>5<11 --
string>SAMP<LE_APP_ID</string>
key>S<KAdNet<workItems</key>
a<rray>
  dict>
    k<ey>SKAd<NetworkIdentifier/key>
   < string><cstr6suwn<9.skadnetw<ork/string>
  /dict><;
  dict&g<t;
    key>SKAdNetworkIden<tifier/key&<gt;
    s<tring>4<fzdc2evr5.skadnetwork/str<ing>
  </dict>
  dict>
    key&<gt;SKAdNetw<orkIdenti<fier/key&g<t;
    string>2fnua5td<w4.skadnet<work/string>
  /dict>
 < dict>
 <   key><;SKAdNetwo<rkIdentifier/key>
    <string><ydx93a7ass.skadnetwork/string<>
  /dic<t>
  d<ict>
  <  key>SKAdNetworkIdent<ifier/key&<gt;
    string>p78axxw29g.<skadnetwork</string&g<t;
  /dict<>
  dict>
    key&g<t;SKAdNetw<orkIdentifier/key>
    str<ing>v72q<ych5uu.sk<adnetwork/<string>
  /dict>
  <dict>
 <   key>SKAdNetworkIdentifi<er/key>
<    strin<g>ludvb<6z3bs.skadnetwork/string&<gt;
  /dic<t>
  dict>
    key>S<KAdNetworkI<dentifier</key>
 <   string>cp8zw746q7.s<kadnetwork</string>
  /dict>
  dic<t>
    k<ey>SKA<dNetworkId<entifier/key>
    stri<ng>3sh4<2y64q3.skadnetwork/string><
  /dict><;
  dict&<gt;
    ke<y>;SKAdNetworkIdentifie<r/key>
<    string>c6k4g5qg8m.skad<network/str<ing>
 < /dict><
  dict>
    key>SK<AdNetworkI<dentifier/key>
    string&<gt;s39g8k73<mm.skadne<twork/stri<ng&gt;
  /dict>
  dict<>
    k<ey>SKAdNetworkIdentifier/k<ey>
    <string><;wg4vff78z<m.skadnetwork/string>
<  /dict><;
  dict>
    key>SKAdN<etworkIdent<ifier/key<>
    s<tring>3qy4746246.skadn<etwork/str<ing>
  /dict>
  dict><;
    key&g<t;SKAdNet<workIdenti<fier/key>
    string&g<t;f38h382j<lk.skadnetwork/string>
  /<dict>
  <dict>
<    key><;SKAdNetworkIdentifier/ke<y>
    <string>hs6bdukanm.skadnetw<ork/string&<gt;
  /di<ct>
  d<ict&gt;
    key>SKAdNe<tworkIdent<ifier/key>
    string>m<lmmfzh3r3.s<kadnetwor<k/string&g<t;
  /dict>
  dict><
    key&g<t;SKAdNetworkIdentifier/key&g<t;
    stri<ng>v4n<xqhlyqp.sk<adnetwork/string>
  /d<ict>
  <dict>
    key>SKAdNetwo<rkIdentifie<r/key><
    strin<g>;wzmmz9fp6w.skadnetwo<rk/string&<gt;
  /dict>
  dict>
  <  key>SK<AdNetwork<Identifier</key>
    string>su<67r6k2v3.s<kadnetwork/string>
  /dict<>
  dict<>
    <key>SKA<dNetworkIdentifier/key><;
    stri<ng>yclnxrl5pm.skadnetwork/<string>
<  /dict&g<t;
  dict&<gt;
    key>SKAdNetwor<kIdentifie<r/key>
    string>t38b2<kh725.skadn<etwork/st<ring>
 < /dict>
  dict>
   < key>SK<AdNetworkIdentifier/key>
 <   string&g<t;7ug5zh2<4hu.skadne<twork/string>
  /dict&<gt;
  dict<>
    key>SKAdNetworkId<entifier/ke<y>
   < string><;gta9lk7p23.skadnetwork/s<tring>
<  /dict>
  dict>
    ke<y>SKAdNe<tworkIden<tifier/key<>
    string>vutu7a<keur.skadn<etwork/string>
  /dict><
  dict><
    key&<gt;SKAdNet<workIdentifier/key>
  <  string&g<t;y5ghdn5j9k.skadnetwork/stri<ng>
  /d<ict>
 < dict>
<    key>SKAdNetworkIde<ntifier/ke<y>
    string>v9wttpbfk<9.skadnetwo<rk/string<>
  /di<ct&gt;
  dict>
    key<>SKAdNe<tworkIdentifier/key>
    s<tring>n3<8lu8286q.<skadnetwor<k/string>
  /dict>
<  dict><
    key>SKAdNetworkIdenti<fier/key><;
    str<ing>47v<hws6wlr.skadnetwork/strin<g>
  /d<ict>
  dict>
    key><;SKAdNetwor<kIdentifi<er/key><
    string>kbd757ywx3<.skadnetwo<rk/string>
  /dict>
  d<ict>
   < key>S<KAdNetwork<Identifier/key>
    st<ring>9t<245vhmpl.skadnetwork/string&g<t;
  /dict&<gt;
  dic<t>
    <key&gt;SKAdNetworkIdentif<ier/key><;
    string>a2p9lx4jpn.sk<adnetwork/s<tring><
  /dict&g<t;
  dict>
    key><SKAdNetwor<kIdentifier/key>
    strin<g>22mmun<2rn5.skad<network/st<ring>
  /dict>
  di<ct>
   < key>SKAdNetworkIdentifier</key>
  <  string&<gt;44jx675<5aq.skadnetwork/string><;
  /dict&<gt;
  dict>
    key>SKA<dNetworkIde<ntifier/k<ey>
   < string>k674qkevps.ska<dnetwork/s<tring>
  /dict>
  dict&<gt;
    key<>SKAdN<etworkIden<tifier/key>
    string<>4468km<3ulz.skadnetwork/string>
 < /dict>
<  dict><;
    key&<gt;SKAdNetworkIdentifier/<key>
  <  string>2u9pt9hc89.skadne<twork/strin<g>
  /<dict>
 < dict>
    key>SKAd<NetworkIde<ntifier/key>
    string><;8s468mfl3y<.skadnetw<ork/string<>
  /dict>
  dict&g<t;
    key<>SKAdNetworkIdentifier/key<>
    st<ring>k<lf5c3l5u5.<skadnetwork/string>
  </dict>
<  dict>
    key>SKAdNet<workIdentif<ier/key&g<t;
    str<ing&gt;ppxm28t8ap.skadnet<work/strin<g>
  /dict>
  dict>
<    key><SKAdNetwo<rkIdentifi<er/key>
    string><kbmxgpxpgc<.skadnetwork/string>
  /di<ct>
  di<ct>
  <  key>S<KAdNetworkIdentifier/key&<gt;
    st<ring>uw77j35x4d.skadnetwor<k/string><;
  /dict<>
  dic<t>;
    key>SKAdNetw<orkIdentif<ier/key>
    string>578<prtvx9j.ska<dnetwor<k/string>
  /dict>
  dict>
    key>SKAdNetworkIdentifier/key>
    string>4dzt52r2t5.skadnetwork/string>
  /dict>
  dict>
    key>SKAdNetworkIdentifier/key>
    string>tl55sbb4fm.skadnetwork/string>
  /dict>
  dict>
    key>SKAdNetworkIdentifier/key>
    string>c3frkrj4fj.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>3rd42ekr43.skadnetwork/string>
  /dict>
  dict>
    key>SKAdNetworkIdentifier/key>
    string>97r2b46745.skadnetwork/string>
  /dict>
  dict>
    key>SKAdNetworkIdentifier/key>
    string>3qcr597p9d.skadnetwork/string>
  /dict>
/array>

SAMPLE_APP_ID は、ご自身のアド マネージャー アプリ ID に置き換えてください。テスト中は、前の例に示したサンプルアプリ ID を使用してください。

初期化のパフォーマンスを最大限に高めるには、ご利用の収益グループとそのグループを使うアプリを関連付けることが重要です。iOS をターゲットとして、どのアプリにも関連付けられていない収益グループは、アカウント内のすべての iOS アプリに送られるため、初期化に必要な時間が長くなる可能性があります。

Google Mobile Ads SDK を初期化する

広告を読み込む前に、GADMobileAds.sharedInstancestart() メソッドを呼び出します。このメソッドは SDK を初期化し、初期化が完了(または 30 秒間のタイムアウトが経過)した時点で完了ハンドラをコールバックします。できるだけ早く start() を呼び出してください。

Swift

// Initialize the Google Mobile Ads SDK.
MobileAds.shared.start()

SwiftUI

// Initialize the Google Mobile Ads SDK.
MobileAds.shared.start()

Objective-C

// Initialize the Google Mobile Ads SDK.
[GADMobileAds.sharedInstance startWithCompletionHandler:nil];

広告フォーマットを選択する

Google Mobile Ads SDK がインポートされて初期化が完了したら、いよいよ広告を実装します。アド マネージャーではさまざまな広告フォーマットが用意されており、アプリのユーザー エクスペリエンスに最適なものを選択できます。

バナー広告は、アプリの画面の一部に表示される長方形の広告です。設定した時間が経過すると自動的に更新されます。そのため、アプリで同じ画面を表示していても、ユーザーには定期的に新しい広告が表示されます。また、バナー広告は最も簡単に実装できる広告フォーマットでもあります。

バナー広告を実装

インタースティシャル

インタースティシャル広告ユニットでは、アプリに全画面広告が表示されます。この広告ユニットは、アプリの流れが自然に途切れるタイミングや画面の切り替え時(ゲームアプリでレベルをクリアした後など)に配置します。

インタースティシャル広告を実装

ネイティブ

ネイティブ広告では、広告見出しや行動を促すフレーズなどのアセットをアプリに表示する方法を自由にカスタマイズできます。広告のスタイルを自分で設定することで、コンテンツの邪魔にならないように広告を表示でき、ユーザー エクスペリエンスの向上につながります。

Google アド マネージャーでは、ネイティブ広告を実装する方法として、ネイティブ スタイルとカスタム レンダリングによる標準ネイティブ広告の 2 種類が用意されています。

ネイティブ スタイルは、ネイティブ広告の実装を簡素化するために設計されており、このフォーマットにまだ慣れていないユーザーにとって最適な選択肢です。カスタム レンダリングは、より自由に内容を構成できるよう設計されています。

ネイティブ スタイルを実装 ネイティブ広告(カスタム レンダリング)を実装

リワード

リワード広告ユニットを使用すると、ユーザーの行動(ゲームのプレイ、アンケートへの回答、動画の視聴など)に応じて、コインや追加ライフ、ポイントなどのアプリ内アイテムを報酬として付与できます。広告ユニットごとに異なる報酬を設定し、報酬の値やユーザーが受け取るアイテムを指定できます。

リワード広告を実装

リワード インタースティシャル

リワード インタースティシャルは、アプリの画面が変わる自然なタイミングで自動的に表示される広告に対して報酬(例: コイン、追加ライフ)を提供できる、新しいタイプのインセンティブ広告フォーマットです。

リワード広告とは異なり、ユーザーはリワード インタースティシャルを表示するためにオプトインする必要はありません。

リワード広告のオプトイン プロンプトの代わりに、リワード インタースティシャルでは、報酬について通知し、ユーザーが希望する場合にはオプトアウトできる選択肢を提示する導入画面が必要です。

リワード インタースティシャル広告を実装

アプリ起動時

アプリ起動時広告は、ユーザーがお客様のアプリを開いたりお客様のアプリに切り替えりした際に表示される広告フォーマットです。これは、読み込み画面に重ねて表示されます。

アプリ起動時広告を実装