iOSアプリを開発・公開した後、次の課題になるのが収益化です。
私自身、SwiftUIで開発したiPhoneアプリ「営業マン勝ちナビ」にGoogle AdMobを導入し、広告配信の承認まで進めました。
実際に取り組んでみると、広告SDKの追加だけでなく、Info.plistの設定、テスト広告、app-ads.txt、App Store側の登録情報など、確認すべき項目が複数ありました。
今回は、SwiftUIアプリへAdMobを導入する際の基本的な実装方法と、承認までに整理しておきたいポイントをまとめます。
※コードは理解しやすいように整理したサンプルです。実際のアプリからそのまま抜粋したものではありません。
1. 開発環境
今回の開発で使用した環境は以下のとおりです。
| 項目 | 内容 |
|---|---|
| 開発言語 | Swift |
| UIフレームワーク | SwiftUI |
| 開発ツール | Xcode |
| 対象 | iOSアプリ |
| 広告サービス | Google AdMob |
| 検証端末 | iPhone実機 |
| 公開先 | App Store |
AdMobはSDKのバージョンによってAPI表記が変更されることがあるため、実装時には公式ドキュメントを確認してください。
2. Google Mobile Ads SDKを導入する
まず、Xcodeで対象プロジェクトを開きます。
- File → Add Package Dependencies を選択
- 以下のURLを入力
https://github.com/googleads/swift-package-manager-google-mobile-ads.git
- Google Mobile Ads SDKを追加
- アプリのターゲットにライブラリが追加されていることを確認
これでSDKを使用する準備ができます。
3. Info.plistの設定
AdMobを使用するには、アプリの設定情報にAdMobアプリIDを登録します。
<key>GADApplicationIdentifier</key>
<string>ca-app-pub-XXXXXXXXXXXXXXXX~YYYYYYYYYY</string>
ここで注意したいのが、アプリIDと広告ユニットIDは別物という点です。
- アプリID:
ca-app-pub-...~... - 広告ユニットID:
ca-app-pub-.../...
この2つを取り違えないようにします。
また、利用するSDKや広告ネットワークに応じて、SKAdNetworkItemsなどの設定も公式資料に沿って確認する必要があります。
4. SDKを初期化する
SwiftUIアプリの場合は、アプリ起動時にSDKを初期化できます。
import SwiftUI
import GoogleMobileAds
@main
struct SampleApp: App {
init() {
MobileAds.shared.start()
}
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
これは基本構成の例です。
実際のアプリでは、ユーザーのプライバシー設定や同意取得が必要な場合、広告リクエスト前に適切な処理を行う必要があります。
5. SwiftUIでバナー広告を表示する
Google Mobile Ads SDKの新しいAPIでは、BannerViewとRequestを使用できます。
SwiftUIからUIKitの広告ビューを表示する場合は、UIViewRepresentableを利用できます。
import SwiftUI
import GoogleMobileAds
struct AdBannerView: UIViewRepresentable {
func makeUIView(context: Context) -> BannerView {
let banner = BannerView()
// Google公式のテスト広告ユニットID
banner.adUnitID =
"ca-app-pub-3940256099942544/2435281174"
banner.adSize = AdSizeBanner
banner.load(Request())
return banner
}
func updateUIView(
_ uiView: BannerView,
context: Context
) {}
}
上記は基本的な固定サイズのバナー例です。
実際の画面幅に合わせる場合は、Googleが推奨するアダプティブバナーの利用を検討します。また、導入するSDKのバージョンに対応したAPIを選択してください。
画面側では次のように配置できます。
struct ContentView: View {
var body: some View {
VStack {
Text("アプリのメイン画面")
.font(.title)
Spacer()
AdBannerView()
.frame(width: 320, height: 50)
}
}
}
広告を表示する場所は、操作ボタンとの距離や画面全体の使いやすさを考慮して決めます。
6. テスト広告と本番広告を切り替える
開発時に注意しているのが、テスト広告と本番広告の切り替えです。
enum AdConfig {
static var bannerUnitID: String {
#if DEBUG
return "ca-app-pub-3940256099942544/2435281174"
#else
return "本番用の広告ユニットID"
#endif
}
}
このように設定を分離しておくと、開発中に本番広告を誤って使用するリスクを減らせます。
ただし、Releaseビルドを使って検証する場合もあるため、ビルド構成だけに依存せず、テスト端末登録なども含めた確認が重要です。
本番広告の不適切な操作は、広告配信制限などにつながる可能性があります。
7. app-ads.txtの設定
今回、SDKの実装とあわせて対応したのがapp-ads.txtです。
app-ads.txtは、アプリの広告枠を販売できる正規の事業者を宣言する仕組みです。
ファイルの内容は次の形式になります。
google.com, pub-0000000000000000, DIRECT, f08c47fec0942fa0
pub-0000000000000000の部分には、自分のAdMobパブリッシャーIDを設定します。
例えば以下のURLで公開します。
https://example.com/app-ads.txt
ここで重要なのは、単にファイルを公開するだけでは不十分な場合があることです。
App Storeに登録したデベロッパーWebサイトのドメインから、AdMobがapp-ads.txtを確認できる必要があります。
私はホスティングも含めて構成を確認しながら対応しました。
Firebase Hostingを利用する場合は、次のようなURLで公開できます。
https://PROJECT_ID.web.app/app-ads.txt
公開後は、実際にブラウザでアクセスして内容が表示されるか確認します。
AdMob側の検証結果が反映されるまで時間がかかるため、公開直後にステータスが変化しなくても、まずはファイルの公開状態を確認します。
8. AdMobの承認までに確認したこと
営業マン勝ちナビでは、広告の実装とあわせて、次の項目を整理しました。
- AdMobアプリIDの設定
- 広告ユニットIDの設定
- テスト広告の表示確認
- DebugとReleaseの切り替え
- app-ads.txtの公開先
- App Store側の情報
- 実機での動作確認
最終的に、Google AdMobの承認を確認できました。
ただし、承認されたことと、すべての利用者に広告が必ず表示されることは別です。
実際の広告配信状況、表示回数、収益については、公開後も継続して確認する必要があります。
また、アプリ自体にクラッシュなどの問題がある場合は、広告承認とは別に修正対応が必要です。
9. 今回の開発で学んだこと
アプリの収益化は、広告SDKを入れれば完了するものではありませんでした。
開発側では正常に表示されていても、広告サービス側の設定やストア側の登録内容によって、想定どおりに運用できない場合があります。
そのため、私は次の3点を重視しています。
① 広告実装と広告配信の確認を分ける
SDKの動作確認と、AdMob側の配信状態を混同しないこと。
② 設定情報を一元管理する
アプリID、広告ユニットID、公開ドメインなどを整理し、設定ミスを減らすこと。
③ 公開後の運用を前提に実装する
広告導入だけでなく、アプリの安定性、ユーザー体験、収益状況も継続的に確認すること。
アプリを作る技術と、公開後に運用・収益化する技術は、それぞれ重要だと感じています。
10. まとめ
SwiftUIアプリへのGoogle AdMob導入で押さえておきたいのは、次のポイントです。
- SDKの導入と初期化
- Info.plistへの適切な設定
- バナー広告の実装
- テスト広告と本番広告の分離
- app-ads.txtの公開と検証
- プライバシー・同意取得への対応
- 実機での動作確認
- 公開後の広告配信状況の確認
今回はバナー広告を中心に紹介しましたが、今後は広告配置の改善や、アプリ内課金との使い分けについても検証していきたいと考えています。
個人開発・アプリ制作について
LikeSeaDiveでは、Swift・SwiftUIによるiPhoneアプリ開発やmacOSアプリ開発、Webサイト制作などに取り組んでいます。
自社アプリの企画・開発・App Store公開を通じて得た知識を、今後も技術記事として共有していきます。
開発事例やサービスについては、以下からご覧いただけます。
LikeSeaDive
参考資料
Google AdMob公式:iOSバナー広告
Google AdMob公式:app-ads.txt
Google AdMob公式:Firebase Hostingによるapp-ads.txt公開