
iOSのアプリ開発を開始して実績を積んでから案件を受注するべくお勉強中のMittyです。皆さま如何お過ごしでしょうか。自作アプリの収益化はあまり期待していませんが、利用の解析含めて広告を導入する事にしました。広告は本ブログでも導入しているGoogle Adsをベースにアプリ版SDKとして導入ができそうなGoogle AdMobという環境を使ってみます。

Mobile Ads SDK(iOS)のインポート
半年ほど前に導入しようとしてアカウント作成して忙しくて放置していたら「半年間アカウントが非アクティブな人はヤッちゃうよ」的なメールが来て慌てて準備を開始した次第です。
CocoaPodsを使うのはやめとく

「pod install」でエラーが出て解決するにはRubyに関連するライブラリたちのVersionコントロールが必要そう(2024年7月現在)なのでこれ使うのやめました(汗。Googleが推奨しているので、これを使う予定で進めてましたが、各種インストールやエラー調査で数時間無駄にしてしまった。いつか落ち着いたら検討してみようと思います。※このケースは大概放置したままという(汗
Swift Package Managerを使ってみる

CocoaPods設定に負けたので「Swift Package Manager」なるものでもセットアップが可能とあったから、これを使ってみます。CocoaPodとの差異として記載があるのが「メディエーションが使えない」との事でした。現在の所、広告の優先度は低いので簡単な広告が実装できればOKと考えて「Swift Package Manager」を使う事とします。

上の記載をそのままやっただけでGoogle Mobile Ads Swiftパッケージの設定が完了しました(汗。
Info.plistの更新


ここも言われるままに追加していきます。info.plistは「完全なスニペット」をコピーして、Xcodeのファイルブラウザでinfo.plistを右クリック→Open As→Source Codeで開いてペーストして「GADApplicationIdentifier」をGoogle AdMobのサイトで作成したIDに変更しました。
Mobile Ads SDKを初期化する

import SwiftUI
import GoogleMobileAds
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
GADMobileAds.sharedInstance().start(completionHandler: nil)
return true
}
}
@main
struct TableCreatorApp: App {
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
var body: some Scene {
DocumentGroup(newDocument: TableCreatorDocument()) { file in
ContentView(document: file.$document)
}
}
}
AppDelegateの例(抜粋)とある所の「SwiftUI」を選択(他にはSwift, Objective-Cがある)コードをコピペして自アプリのAppファイルに追加します。
広告フォーマットの選択と追加


上記の「SwfitUIのガイド」を御覧くださいでクリックすると…

何も表示がない…と思って、ネットの旅に出かけたのですが「Switch to English」にすると表示が現れました。ネットの旅の時間を返して欲しい(ぉぃ。
バナー広告




コードはマジコピペなので割愛してます(汗。SwiftUI用のページが見つからない時に色々と試していましたが、SwiftUI用のコードはそのままで動作しました。今後のテストで修正が入るかもしれませんが。

テスト用の広告ID(Unit ID)を利用するのと表示時に高さがおかしくなるので、ネットで見つけた回避策を追加しています。
var adWidth: CGFloat = UIScreen.main.bounds.width
var adSize: CGSize {
return GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(adWidth).size
}
BannerView()
.frame(height: adSize.height) //work around for unknown height
インタースティシャル広告



こちらは完全なマジコピペ(広告ID以外)で正しく表示されました。View側では「onAppear」でロードして、画面遷移時に「adMobFullScreen.presentAd()」するだけ。
.onAppear(perform: {
adMobFullScreen.loadAd()
})
adMobFullScreen.presentAd()
雑感
アカウントが6ヶ月非アクティブだとアカウントが無効になり、再開手続きが必要になるらしい。1月29日に「AdMobへようこそ」メールを受信しているので、7月29日までに広告が配信されないと無効になるって事か。今が7月12日でこれからアプリ仕上げてApp Storeに登録申請して…間に合うのか!?
※2024年7月30日追記:出来はともかく速攻リリースしてAdMobの「非アクティブ警告」はなんとか消えました。よかったです(*°∀°)=3
コメント