PR

Google AdMobといふもの 〜 iOSで使ってみた話

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

スタートガイド  |  iOS  |  Google for Developers
前提条件、設定の詳細、広告タイプの概要など、iOS 向け SDK の使用方法を学べます。

Mobile Ads SDK(iOS)のインポート

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

CocoaPodsを使うのはやめとく

スタートガイド  |  iOS  |  Google for Developers
前提条件、設定の詳細、広告タイプの概要など、iOS 向け SDK の使用方法を学べます。
CocoaPods Guides
The Dependency Manager for iOS & Mac projects

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

Swift Package Managerを使ってみる

スタートガイド  |  iOS  |  Google for Developers
前提条件、設定の詳細、広告タイプの概要など、iOS 向け SDK の使用方法を学べます。

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

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

Info.plistの更新

スタートガイド  |  iOS  |  Google for Developers
前提条件、設定の詳細、広告タイプの概要など、iOS 向け SDK の使用方法を学べます。

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

Mobile Ads SDKを初期化する

スタートガイド  |  iOS  |  Google for Developers
前提条件、設定の詳細、広告タイプの概要など、iOS 向け SDK の使用方法を学べます。
Swift
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ファイルに追加します。

広告フォーマットの選択と追加

スタートガイド  |  iOS  |  Google for Developers
前提条件、設定の詳細、広告タイプの概要など、iOS 向け SDK の使用方法を学べます。

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

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

バナー広告

SwiftUI  |  iOS  |  Google for Developers

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

バナー広告  |  iOS  |  Google for Developers
AdMob のバナー広告を iOS アプリに組み込む方法を学びましょう。その他のリソースへのリンクも記載されています。

テスト用の広告ID(Unit ID)を利用するのと表示時に高さがおかしくなるので、ネットで見つけた回避策を追加しています。

Swift
    var adWidth: CGFloat = UIScreen.main.bounds.width
    var adSize: CGSize {
        return GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(adWidth).size
    }
    
    BannerView()
      .frame(height: adSize.height)   //work around for unknown height

インタースティシャル広告

SwiftUI  |  iOS  |  Google for Developers

こちらは完全なマジコピペ(広告ID以外)で正しく表示されました。View側では「onAppear」でロードして、画面遷移時に「adMobFullScreen.presentAd()」するだけ。

Swift
.onAppear(perform: {
    adMobFullScreen.loadAd()
})

adMobFullScreen.presentAd()

雑感

アカウントが6ヶ月非アクティブだとアカウントが無効になり、再開手続きが必要になるらしい。1月29日に「AdMobへようこそ」メールを受信しているので、7月29日までに広告が配信されないと無効になるって事か。今が7月12日でこれからアプリ仕上げてApp Storeに登録申請して…間に合うのか!?

※2024年7月30日追記:出来はともかく速攻リリースしてAdMobの「非アクティブ警告」はなんとか消えました。よかったです(*°∀°)=3

コメント

タイトルとURLをコピーしました