初めてリワード広告を入れてみたいと思います!
まずはバナー、インタースティシャル、リワードをががっと入れてみましょう!
2025.03時点 – Xcode16じゃないとダメでした!

- Xcode 16.0 以降を使用していること
- iOS 12.0 以降をターゲットとしていること
firebaseを使う場合は、
https://firebase.google.com/docs/admob/ios/quick-start?hl=ja
admob単体ではなくfirebaseから使用します。こちらは次の記事で
AdMobを入れる!
1. AdMob SDKのインストール
まず、Swift Package Managerを使ってAdMob SDKをプロジェクトに追加します。
- Xcodeで、
File
>Add Packages...
を選択します。 - 検索バーに
https://github.com/googleads/swift-package-manager-google-mobile-ads.git
と入力し、Add Package
をクリックします。 GoogleMobileAds
にチェックを入れ、Add Package
をクリックします。
うまくいかないので>_<;;;
手動ダウンロード
- Google Mobile Ads SDK をダウンロードし、次のフレームワークを Xcode プロジェクトに
Embed & Sign
します。GoogleMobileAds.xcframework
UserMessagingPlatform.xcframework
- プロジェクトのビルド設定で、次の操作を行います。
/usr/lib/swift
パスを [Runpath Search Paths] に追加します。- [Other Linker Flags] に
-ObjC
リンカー フラグを追加します。
https://developers.google.com/admob/ios/download?hl=ja
ダウンロードして
zipを開いてGoogleMobileAdsSdkiOS-12.2.0をプロジェクトのフォルダにいれました。

こんな感じでEmbed & Signになっていれば良いらしい。
2. AdMobの初期化
1. AppDelegateの統合(@UIApplicationDelegateAdaptor)
SwiftUIアプリで従来のAppDelegate
の機能(AdMobの初期化など)を使用するには、@UIApplicationDelegateAdaptor
を使用してAppDelegate
をApp
構造体と統合する必要があります。
import SwiftUI import GoogleMobileAds class AppDelegate: NSObject, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { MobileAds.shared.start(completionHandler: nil) return true } } @main struct YourAppNameApp: App { @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { ContentView() } } }
意識せずswiftuiで作成しましたが YouAppNameApp.swiftで @mainで定義されているところに
admobの初期化を入れることが必要ですね
Undefined symbols:
Linker command failed with exit code 1 (use -v to see invocation)
余裕でエラーとなりました。。。
サンプルでなんとかなりませんか。。。
サンプルをダウンロードして
$ pod install
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/dependency.rb:311:in `to_specs’: Could not find ‘ffi’ (>= 1.3.0) among 94 total gem(s) (Gem::MissingSpecError
3. Info.plistの設定
Info.plist
に、AdMobのアプリケーションIDを追加します。
Info.plist
を開き、Information Property List
を右クリックしてAdd Row
を選択します。- キーに
GADApplicationIdentifier
、値にAdMobのアプリケーションID(例:ca-app-pub-3940256099942544~1458002511
)を入力します。
admobの アプリ > アプリの設定 > アプリのIDですね
バナー広告
googleちゃんでも最新の状態のサンプルをくれません^^;
swiftUI x admob エラーが出なければ良いのですが、ちょこちょこ修正しつつ
import SwiftUI import GoogleMobileAds struct BannerAd: UIViewControllerRepresentable { let adUnitID: String func makeUIViewController(context: Context) -> UIViewController { let view = GADBannerViewController() return view } func updateUIViewController(_ uiViewController: UIViewController, context: Context) {} func makeCoordinator() -> Coordinator { Coordinator(self) } class Coordinator: NSObject, BannerViewDelegate { var parent: BannerAd init(_ parent: BannerAd) { self.parent = parent } func bannerViewDidReceiveAd(_ bannerView: GADBannerView) { print("Banner ad loaded.") } func bannerView(_ bannerView: GADBannerView, didFailToReceiveAdWithError error: Error) { print("Banner ad failed to load: \(error.localizedDescription)") } } class GADBannerViewController: UIViewController { var bannerView: GADBannerView! override func viewDidLoad() { super.viewDidLoad() bannerView = GADBannerView(adSize: GADAdSizeBanner) bannerView.adUnitID = adUnitID bannerView.rootViewController = self bannerView.load(GADRequest()) view.addSubview(bannerView) bannerView.translatesAutoresizingMaskIntoConstraints = false bannerView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true bannerView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor).isActive = true } } }
テスト用unit ID
テスト用広告ユニットID
- バナー広告:
ca-app-pub-3940256099942544/6300978111
- インタースティシャル広告:
ca-app-pub-3940256099942544/1033173712
- リワード広告:
ca-app-pub-3940256099942544/5224354917
コメント