初めてリワード広告を入れてみたいと思います!
まずはバナー、インタースティシャル、リワードをががっと入れてみましょう!
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.xcframeworkUserMessagingPlatform.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



コメント