Xcodeで、SwiftUIでバナー広告を導入する
それでは、AdMobのバナー広告をiPhoneアプリに組み込んで行きましょう。

AdMobのバナー広告の設定をテスト用IDに変更する。
AdMobバナー広告の実装を急ぐがあまり、本番の設定をしたままテストを実施すると、不正利用と判断され垢BANされてしまうと言われています。そのため、まずはテスト用の広告が表示されるよう設定しましょう。
デモ広告ユニットのIDを調べる
テストを有効にする最も簡単な方法は、Google が提供するデモ広告ユニットを使用することです。
これらの広告ユニットは AdMob アカウントと関連付けられていないため、クリックしてもアカウントで無効なトラフィックが発生する恐れがありません。
重要なポイント: テストで使用するテスト ID は、アプリを公開する前に必ずご自身の広告ユニット ID に置き換えてください。
各フォーマットのテスト クリエイティブを参照するデモ広告ユニットを次に示します。
広告フォーマット | デモ広告ユニット ID |
---|---|
アプリ起動 | ca-app-pub-3940256099942544/ |
バナー | ca-app-pub-3940256099942544/ |
インタースティシャル | ca-app-pub-3940256099942544/ |
インタースティシャル動画 | ca-app-pub-3940256099942544/ |
リワード | ca-app-pub-3940256099942544/ |
リワード インタースティシャル | ca-app-pub-3940256099942544/ |
ネイティブ アドバンス | ca-app-pub-3940256099942544/ |
ネイティブ アドバンス動画 | ca-app-pub-3940256099942544/ |

ソースコードを書いてみましょう。
ようやくソースコードを書く段階にきました。
ここからは、試してはエラー、試してはエラー。
ググってみると色々な実装があって、どれを使えば良いかわからない。
こんなループに入ります。
ソースコードの条件導入の条件は、独立して、アプリのコードに個別に織り込むのではなく、1ファイルに独立してコード部を定義しておき、利用したいところだけ、Callすることで表示するという方法にします。
この様に実装しておく事で色々な画面で広告表示の指示を出すだけの簡単な実装にする事が出来ます。
前述した通り、課金をしてもらった時は表示させないという方針を取りたいので、共通関数化しておき、その中で、課金だったらバナーを表示しない、非課金であればバナーを表示するというロジックを組みたいと思うからです。
色々な画面の部分にバラバラと入れてしまうと、修正漏れをしてしまうということでなるべくシンプルな設計を心がけたいと思っています。

Google AdMobに関係するロジックのみを1つのファイルに書き出し、本流のロジックが書いてあるのは、関数をCallするだけ。
そのため、抜き出したファイルだけ見れば、Google AdMobのバナーに関するロジックだけがあるという実装をしています。
探していたのは、この実装方法でした!!
でも注意してください。
この動画は、iOS15の実装方法ではエラーが発生します。
Googleの仕様が変わっているため、あくまでも実装のイメージを使って欲しいと思います。
バナーのサイズ
標準のバナーサイズについては、以下の表をご覧ください。
AdSizeの定数は以下のGADAdSizeBannerを選んでみたいと思います。
サイズ(単位はポイント、幅×高さ) | 説明 | 対応デバイス | AdSize の定数値 |
---|---|---|---|
320×50 | バナー | スマートフォン、タブレット | GADAdSizeBanner |
320×100 | バナー(大) | スマートフォン、タブレット | GADAdSizeLargeBanner |
300×250 | IAB レクタングル(中) | スマートフォン、タブレット | GADAdSizeMediumRectangle |
468×60 | IAB フルサイズ バナー | タブレット | GADAdSizeFullBanner |
728×90 | IAB ビッグバナー | タブレット | GADAdSizeLeaderboard |
指定された幅 × 最適な高さ | アダプティブ バナー | スマートフォン、タブレット | なし |
Cannot find ‘kGADAdSizeBanner’ in scopeのエラー解決方法
iOS15でのSwiftUIで実装サンプルを探しました。
Cannot find ‘kGADAdSizeBanner’ in scopeというエラーが出て、スペルも合っている状態でした。
なぜ他の人が成功しているサンプルコードをそのまま写したにもかかわらずエラーのCannot find ‘kGADAdSizeBanner’ in scopeが出てしまったのでしょうか?
答えは、GoogleのAdSizeの仕様が変わっており、kGADAdSizeBannerという変数が使えなくなり、GADAdSizeBannerという変数名に変わっているということでした。
ということで、なんとかバナー広告は完成しました。
次の広告にチャレンジしてみたいと思います。
Useful Resources: The Android test ads guide →

The iOS test ads guide →

The Unity test ads guide →

The Mobile Ads SDK support forum →
Watch more episodes of Mobile Ads Garage here →

【SwiftUI】Extra argument in call エラーの対処法
バナー広告を表示する際、Spacer()を入れて行間を取ろうと考えました。
バナー、バナー大、レクタングルの3つのサイズを、1つの関数をCallするだけで呼び出せるようになったので、あとは表示の工夫が課題になりました。
原因は、Spacer()が多すぎて、表示の問題になっていることが分かりましたので、Spacer()の数を減らして3つともに表示できることが確認できました。
以下のように、テスト広告として黒い箱(Test Mode)が表示されている状況でテスト・動作評価してくださいね。
さて、どうやって、スペース作ろうかなぁ。。。

コメント