【Swift UI】AdMobのインタースティシャル広告の実装方法!画面遷移時に表示

この記事からわかること
- Swift UIでインタースティシャル広告の実装方法
- AdMobを導入
- 画面遷移で広告を表示するには?
- GADInterstitialAdやGADFullScreenContentDelegateの使い方
- GADInterstitialAdクラスのloadメソッドやpresentメソッドの使い方
index
[open]
\ アプリをリリースしました /
インタースティシャル広告とは?
インタースティシャル広告とはアフィリエイト(成功報酬型)広告の1種で画面遷移時や自然な切れ目に配置するフルスクリーンタイプの広告です。
iOSアプリに広告を掲載するには「Google AdMob」を導入します。「Google AdMob」はGoogleが提供しているiOSやAndroidなどのモバイルアプリに広告を設置できるサービスで、バナー広告をはじめリワード広告、インタースティシャル広告の実装も簡単に実装可能になっています。

Swift UIでインタースティシャル広告を実装する方法
流れ
- AdMobへ登録と広告ユニットの作成
- プロジェクトへAdMobの導入
- AdMob用のファイルを作成
- インタースティシャルクラスの作成
- 広告を読み込むメソッドの実装
- 読み込んだ広告を表示するメソッドの実装
- GADFullScreenContentDelegateで結果を取得する
- Swift UIで表示させる
今回はフレームワークにSwift UIを使用している場合のインタースティシャル広告の実装方法を見ていきます。AdMobが未登録の場合や広告ユニットが未作成、プロジェクトへ未導入の場合は下記記事をご覧ください。
AdMobでは開発途中のテスト実装の際は本番用の広告ユニットIDを使用せずテスト用の広告ユニットIDを使用することを推奨しています。テスト実装の際は以下のIDを然るべき箇所に記述してください。
インタースティシャルクラスの作成
広告ユニットの作成とプロジェクトへAdMobの導入が完了したら実際にコードを書いていきます。まずは必要なフレームワークとライブラリのimport
を忘れずに記述しておき、作成するAdmobInterstitialView
クラスは必要なプロトコルに準拠させるように定義していきます。
準拠させたプロトコルと意味
- NSObject:スーパークラス
- ObservableObject:クラス変更を観測
- GADFullScreenContentDelegate:SDKから通知を受け取るデリゲートメソッドを実装
定義されたinterstitialAd
プロパティには実際に読み込まれたインタースティシャル広告が格納されるのでGADInterstitialAd
型でnil
も許容できるようにしておきます。
広告を読み込むメソッドの実装
インタースティシャル広告を実際に読み込むためのメソッドを定義します。
GoogleMobileAds
ライブラリをimport
したことでGADInterstitialAd
クラスが使えるようになっているのでその中のload
メソッドを呼び出します。
格納された広告(GADInterstitialAd
オブジェクト)は使用されると破棄されてしまうので何回も視聴できるように最後にfullScreenContentDelegate
プロパティに自身を設定して終了です。
読み込んだ広告を表示するメソッドの実装
続いて読み込んだ広告を表示させるメソッドを実装していきます。表示させるにはGADRewardedAd
クラスのpresent
メソッドを使用します。
引数rootViewController
には広告を表示するビューをUIViewController
形式で渡します。
これで表示するための準備が整いました。その前におまけとしてSDKから通知(表示の成功/失敗など)を受け取れるようにしていきます。
GADFullScreenContentDelegateで結果を取得する
既にGADFullScreenContentDelegate
には準拠させているのでデリゲートメソッドを実装するだけで任意のイベント結果を取得することができます。
Swift UIで表示させる
最後にSwift UIで表示させます。本来は画面遷移するタイミングに差し込みますが、今回はボタンクリックで表示されるようにしていきます。
全体のコード
最後に全体のコードを載せておきます。
アプリに入れ込む実装例
インタースティシャル広告は画面が遷移した際になどに表示するのが理想です。Swift UIで画面遷移を実装する際はNavigationView
またはNavigationStack
のNavigationLink
などを使用します。
ですがNavigationLink
などを実装した場合はインタースティシャル表示の発火イベントと画面遷移の発火イベントをどちらも実行できるようにしないといけません。
そのような際は以下のようにsimultaneousGesture
を使用することで解決できます。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。