LoginSignup
3
6

More than 1 year has passed since last update.

SwiftUIでAdMobを導入する方法(Test編)

Last updated at Posted at 2021-03-30

更新

バナーサイズの表記に変更がありましたので更新しました。
詳細知りたい方はコチラもご覧ください。

今回作成するアプリ

はじめに

今回はSwiftUIで作成したアプリにAdMobを導入する方法についてです。
公式からも出ていますが、公式だけでは分からない人用に(自分の事ですw)この記事一本で作成できるように掲載しておこうと思いますので良ければ参考にしてみてください。

環境

・ /macOS Big Sur 11.3
・ SwiftUI : 2.0
・ Xcode : 12.0

手順

今回はSwiftUIでAdMob導入のTestを行うだけなので、FireBaseやAdMobの登録方法はありません。
次回実践編を書く予定なので実践方法を知りたい方はそちらをご覧下さい!
では下記手順になります。
1.アプリ作る
2.ターミナルで
・cocoapodsインストール
・pod file作成
・Pod file内の use_frameworks! 直下にpod ‘Google-Mobile-Ads-SDK’の追加してターミナルでpod install
・.xcworkspaceでプロジェクトを開いて
・Info.plistに
GADApplicationIdentifier
ca-app-pub-3940256099942544~1458002511
を追加(このIDはテスト用)
・プロジェクトのビルド設定で、-ObjCを追加(ここ分かりづらい)
・SwiftUIだとXcode 12からAppDelegate.swiftがないのでApp.swiftを修正する
・ファイル内にAdMobを表示するViewを作成

これでTest表示程度ならできます。それぞれの手順の詳細は以下です。

アプリを作る

今回はAdMobを表示させたいだけなのでSwiftUIのプロジェクトを新規作成するだけで問題ないです。(既存のアプリで試したい場合は既に作成されたアプリをご使用ください)

ターミナル操作

まずターミナルを起動してcocoapodsをインストールします。
sudo gem install cocoapods

次にxcodeプロジェクト(.xcodeprojのファイルがある場所)のディレクトリまで移動します。
(以下イメージです)
cd /Users/okayuuji/AdMobTest

次にPodfileを追加します。
pod init

するとファイル内にPodfileが追加されます。
スクリーンショット 2021-03-30 21.43.14.jpg
このPodfileを開き
use_frameworks!
の下に
pod 'Google-Mobile-Ads-SDK'
を追加し、閉じます。

その後
pod install
を実行しエラーがなければ成功です!(エラーは赤字で出ます)

成功するとファイル内に.xcworkspaceの拡張子がついたファイルが追加されているのでそちらを開きます。
スクリーンショット 2021-03-30 21.48.22.jpg

ここまでがターミナルでの操作になります。

Info.plist

ここからはプロジェクト内での編集になります。
まず、Info.plistにて
GADApplicationIdentifier
ca-app-pub-3940256099942544~1458002511
を追加します。(このca-app-pub-3940256099942544~1458002511というIDはテスト用のID)
スクリーンショット 2021-03-30 21.51.59.jpg

スクリーンショット 2021-03-30 21.52.08.jpg

プロジェクトのビルド設定で、-ObjCを追加

筆者はここでつまづきました。
ここは詳細にどこにも掲載がなかったので、正直ここを詳細に掲載する為に今回記事を書いたようなものなので細かくスクショを掲載していきます。
まずは一番上にあるファイルをクリックし、Build settingsを選択し、以下の画面に行きます。
スクリーンショット 2021-03-30 20.24.56.jpg
続いて以下の部分をダブルクリックで選択リストを表示させ、リストの下にある+を選択し、-ObjCと入力し-ObjCを追加します。
スクリーンショット 2021-03-30 20.25.06.jpg
ここまできたら後は楽勝です。

App.swift

・SwiftUIだとXcode 12からAppDelegate.swiftがないのでApp.swiftを修正します。

import SwiftUI
import UIKit
import GoogleMobileAds

class AppDelegate: NSObject, UIApplicationDelegate {
    func application(_ application: UIApplication,didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
        // Mobile Ads SDKを初期化する
        GADMobileAds.sharedInstance().start(completionHandler: nil)
        return true
    }
}

@main
struct DemoApp: App {
    
    @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate

    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

ContentView.swift

import SwiftUI
import GoogleMobileAds

struct ContentView: View {
    var body: some View {
        VStack{
            Spacer()
        AdMobView()
            .frame(width: 150, height: 60)
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}


struct AdMobView: UIViewRepresentable {
    func makeUIView(context: UIViewRepresentableContext<AdMobView>) -> GADBannerView{
        let banner = GADBannerView(adSize: GADAdSizeBanner)
        
        banner.adUnitID = "ca-app-pub-3940256099942544/2934735716"
        banner.rootViewController = UIApplication.shared.windows.first?.rootViewController
        banner.load(GADRequest())
        return banner
    }
    
    func updateUIView(_ uiView: GADBannerView, context:  UIViewRepresentableContext<AdMobView>) {
    }
}

シュミレータ起動でいかが表示されます。(できなければ気軽にTwitterとかで連絡ください)
Simulator Screen Shot - iPhone 11 Pro - 2021-03-30 at 20.24.04.png

まとめ

今回はtest表示だけなのでFireBaseやAdMobの登録については記載してませんが、基本上記の事ができれば実践は簡単にできると思います。(後日実践編をUPします)
またGitも掲載しておきますので必要な方はどうぞ。

また参考にした記事や動画もいくつか貼っておきますので良ければそちらもご覧下さい。

動画

3
6
2

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
3
6