7
4

More than 1 year has passed since last update.

【Swift】GoogleMobileAdsをSPMで導入する

Last updated at Posted at 2022-09-28

はじめに

Google Mobile Ads SDK はバージョン 9.0.0 から Swift Package Manager に対応しています。

Google Mobile Ads SDKがSPMで導入できるようになってました!!
しかし、躓きポイントがあったので記録しておきます。

SPMで導入する

① メニューバーから「File」を選択する
② 「Add Packages...」を選択する
スクリーンショット 2022-09-28 17.48.57.png

https://github.com/googleads/swift-package-manager-google-mobile-ads.gitをコピペする
④ 「Add Package」を選択する
スクリーンショット 2022-09-28 17.51.23.png
スクリーンショット 2022-09-28 17.55.22.png

⑤ 「Add Package」を選択する
スクリーンショット 2022-09-28 17.55.22.png

Info.plist を更新する

① プロジェクトを選択します
② ターゲットを選択します
③ 「Info」を選択します
スクリーンショット 2022-05-15 19.44.38.png

一番下の列のプラスボタンを押してください。
その下に新しい項目が追加されます。
スクリーンショット 2022-05-15 19.46.34.png

追加する項目はこちらです。

Key Value
GADApplicationIdentifier ca-app-pub-3940256099942544~1458002511

警告
ca-app-pub-3940256099942544~1458002511
こちらはサンプルのアプリIDです。
リリースの際は自分のアプリIDに置き換えてください。

スクリーンショット 2022-05-15 19.48.38.png

Infoがファイルとして追加されます。
スクリーンショット 2022-05-15 19.53.10.png

Infoを右クリックしてソースコードで表示します。
スクリーンショット 2022-05-15 19.54.11.png

このように表示されます。
スクリーンショット 2022-05-15 19.57.47.png
「ここに追加」の場所に下記のコードを追加します。

Info.plist
<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>

これでInfo.plistの更新は完了です。

Mobile Ads SDK を初期化する

スクリーンショット 2022-05-15 20.04.02.png

import SwiftUI
import GoogleMobileAds

class AppDelegate: NSObject, UIApplicationDelegate {
    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
    ) -> Bool {
        GADMobileAds.sharedInstance().start(completionHandler: nil)
        return true
    }
}

@main
struct AdMob_StartGuide_DemoApp: App {
    @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

リンカーフラグを設定する

① プロジェクトを選択する
② ターゲットを選択する
③ 「Build Settings」を選択する
Other Linker Flagsで検索する
スクリーンショット 2022-09-28 18.01.50.png
⑤ 「Other Linker Flags」の「Debag」の「+」を選択する
⑥ 「Any Architecture|Any SDK」に-ObjCを追加する
スクリーンショット 2022-09-28 18.04.55.png

⑦ 「Other Linker Flags」の「Release」の「+」を選択する
⑧ 「Any Architecture|Any SDK」に-ObjCを追加する
スクリーンショット 2022-09-28 18.08.01.png

おわり

リンカーフラグを設定するのは公式のドキュメントには書いていないのですが、
これをやらないとアプリがクラッシュしてしまいます。。。
公式ドキュメントは正しくあってほしい。。。。

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4