【Swift】GoogleMobileAdsをSPMで導入する

# はじめに
>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://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/0d8a3ca0-a440-c434-2d8c-d4b1b2e0670d.png)

③ `https://github.com/googleads/swift-package-manager-google-mobile-ads.git`をコピペする
④ 「Add Package」を選択する
![スクリーンショット 2022-09-28 17.51.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/75b134ad-c428-7d84-c7e2-1915bdaa3674.png)
![スクリーンショット 2022-09-28 17.55.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/7cefe477-dd8f-9a85-4e51-1307b2904db7.png)

⑤ 「Add Package」を選択する
![スクリーンショット 2022-09-28 17.55.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/834daf94-bd8a-cb6e-e14f-9b2a564b2337.png)

## Info.plist を更新する

① プロジェクトを選択します
② ターゲットを選択します
③ 「Info」を選択します
![スクリーンショット 2022-05-15 19.44.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/33f71d01-b08f-8dae-21f0-3313f5e701ce.png)

一番下の列のプラスボタンを押してください。
その下に新しい項目が追加されます。
![スクリーンショット 2022-05-15 19.46.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/9ccd6773-8220-27c9-acc5-307c29355419.png)

追加する項目はこちらです。
|Key|Value|
|-|-|
|GADApplicationIdentifier|ca-app-pub-3940256099942544~1458002511|

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

![スクリーンショット 2022-05-15 19.48.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/1814875a-c10a-95a8-a53d-f16180171d74.png)

`Info`がファイルとして追加されます。
![スクリーンショット 2022-05-15 19.53.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/b1e94386-0d67-5455-6d19-51119b74d421.png)

`Info`を右クリックしてソースコードで表示します。
![スクリーンショット 2022-05-15 19.54.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/9e6312cf-d087-07cb-f9aa-71b7d6976f74.png)


このように表示されます。
![スクリーンショット 2022-05-15 19.57.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/0d79de96-fabe-8c4a-0c47-589d3be8354a.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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/c061a821-d484-0690-eeb7-466408ab4326.png)

```Swift
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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/69868f37-b287-31cd-2dad-c77cc42ffc8c.png)
⑤ 「Other Linker Flags」の「Debag」の「+」を選択する
⑥ 「Any Architecture|Any SDK」に`-ObjC`を追加する
![スクリーンショット 2022-09-28 18.04.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/0a8c691e-5afa-f9b0-9230-a9d17e6f4618.png)

⑦ 「Other Linker Flags」の「Release」の「+」を選択する
⑧ 「Any Architecture|Any SDK」に`-ObjC`を追加する
![スクリーンショット 2022-09-28 18.08.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/da9dd78b-1dca-08a9-4062-1bd3b9c2f913.png)

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