・リリースに必要なことは後にしてテストに必要な実装方法が知りたい!
・とりあえず広告を表示したい!
iOSアプリの開発をしているとこのようなことがあるのではないでしょうか。
Googleが提供しているSDKを使用すれば広告を実装することができるのですが、
今回はテスト用に必要な情報に絞った内容をご紹介します。
CocoapodsでGoogle-Mobile-Ads-SDKをインストール
まずは、Google-Mobile-Ads-SDKをインストールします。
ここでは、Cocoapodsを使った方法をご紹介します。
やり方は簡単!
Podfileに pod ‘Google-Mobile-Ads-SDK’ を追加して、 pod update を実行すればOKです。
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
target 'Sample' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
# Pods for Sample
pod 'Google-Mobile-Ads-SDK'
end
Google Ad Mob でアプリを登録
テスト用の広告には不要です。
リリース時に登録してください。
Google Ad Mob で広告を登録
テスト用の広告には不要です。
リリース時に登録してください。
User-Defined を設定
プロジェクトを選択し、 TARGETS の Build Settings タブ の中の User-Defined に次の内容を設定します。
ここにIDを設定することでデバッグとリリースでIDを自動で切り替えることができます。
BANNER_ID
Debug | ca-app-pub-3940256099942544/2934735716 |
Release | リリース時に設定してください。 ※Google Ad Mob で広告を登録したときに取得する広告ユニット IDを設定 |
GADApplicationIdentifier
Debug | ca-app-pub-3940256099942544~1458002511 |
Release | リリース時に設定してください。 ※Google Ad Mob でアプリを登録したときに取得するアプリIDを設定 |
「+」をクリックすることでUser-Definedの追加をすることができます。
Info.plist を設定
許諾ダイアログメッセージ
App Storeは、世界中の才能あふれるデベロッパが開発したアプリをユーザーが安心して見つけられる、安全かつ信頼できる…
iOS 14.5、iPadOS 14.5、tvOS 14.5以降では、他社が所有するAppやWebサイトでの行動をトラッキングする場合、ユーザーに許可を求めることが必要になります。
上記より、ユーザにトラッキングの許可を求めるダイアログを表示する必要があります。
そのダイアログのメッセージを NSUserTrackingUsageDescription で設定します。
<key>NSUserTrackingUsageDescription</key>
<string>「許可」するとお客様に最適化された広告が表示されます</string>
広告ユニット ID
User-Defined の BANNER_ID の値をプログラムから使用できるように設定します。
広告を複数対応できるように配列型にしておきます。
<key>AdUnitIDs</key>
<dict>
<key>banner</key>
<string>$(BANNER_ID)</string>
</dict>
アプリID
User-Defined の GADApplicationIdentifier の値をプログラムから使用できるように設定します。
<key>GADApplicationIdentifier</key>
<string>$(GADApplicationIdentifier)</string>
アドネットワークID
<key>SKAdNetworkItems</key>
<array>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>cstr6suwn9.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>4fzdc2evr5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>4pfyvq9l8r.skadnetwork </string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>2fnua5tdw4.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>ydx93a7ass.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>5a6flpkh64.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>p78axxw29g.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>v72qych5uu.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>ludvb6z3bs.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>cp8zw746q7.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>c6k4g5qg8m.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>s39g8k73mm.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>3qy4746246.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>3sh42y64q3.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>f38h382jlk.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>hs6bdukanm.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>prcb7njmu6.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>v4nxqhlyqp.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>wzmmz9fp6w.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>yclnxrl5pm.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>t38b2kh725.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>7ug5zh24hu.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>9rd848q2bz.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>y5ghdn5j9k.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>n6fk4nfna4.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>v9wttpbfk9.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>n38lu8286q.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>47vhws6wlr.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>kbd757ywx3.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>9t245vhmpl.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>a2p9lx4jpn.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>22mmun2rn5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>4468km3ulz.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>2u9pt9hc89.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>8s468mfl3y.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>av6w8kgt66.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>klf5c3l5u5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>ppxm28t8ap.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>424m5254lk.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>ecpz2srf59.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>uw77j35x4d.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>mlmmfzh3r3.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>578prtvx9j.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>4dzt52r2t5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>gta9lk7p23.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>e5fvkxwrpn.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>8c4e2ghe7u.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>zq492l623r.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>3rd42ekr43.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>3qcr597p9d.skadnetwork</string>
</dict>
</array>
アドネットワークIDの設定する内容は変わる可能性があるので、次のサイトを確認してください。
広告を表示するプログラムを実装
あとはプログラムを実装するだけです。
サンプルを載せておくので参考にしてください。
import SwiftUI
import GoogleMobileAds
@main
struct Sample2App: App {
@UIApplicationDelegateAdaptor (AppDelegate.self) var appDelegate
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
// GoogleMobileAdsのインスタンスを生成
GADMobileAds.sharedInstance().start(completionHandler: nil)
return true
}
}
import SwiftUI
import GoogleMobileAds
import AppTrackingTransparency
struct ContentView: View {
var body: some View {
VStack {
// 広告を表示
BannerAdView().frame(width: 320, height: 50)
}
.onReceive(NotificationCenter.default.publisher(for: UIApplication.didBecomeActiveNotification)) { _ in
// トラッキングの許諾ダイアログメッセージを表示
Task {
let result = await ATTrackingManager.requestTrackingAuthorization()
if result == .authorized {
GADMobileAds.sharedInstance().start(completionHandler: nil)
}
}
}
}
}
import SwiftUI
import GoogleMobileAds
// バナー表示用のクラス
struct BannerAdView: UIViewRepresentable {
func makeUIView(context: Context) -> GADBannerView {
let banner = GADBannerView(adSize: GADAdSizeBanner)
if let id = adUnitID(key: "banner") {
banner.adUnitID = id
let scenes = UIApplication.shared.connectedScenes
let windowScene = scenes.first as? UIWindowScene
banner.rootViewController = windowScene?.keyWindow?.rootViewController
let request = GADRequest()
request.scene = UIApplication.shared.connectedScenes.first as? UIWindowScene
banner.load(request)
}
return banner
}
func adUnitID(key: String) -> String? {
guard let adUnitIDs = Bundle.main.object(forInfoDictionaryKey: "AdUnitIDs") as? [String: String] else {
return nil
}
return adUnitIDs[key]
}
func updateUIView(_ uiView: GADBannerView, context: Context) {
}
}
お疲れ様でした。