第0部: スタートガイド
第1部: リワード広告
第2部: インタースティシャル広告
第3部: ネイティブ広告
第4部: バナー広告 ← イマココ
第5部: アプリ起動広告
はじめに
AdMob広告シリーズ第3部です
今回はバナー広告です。
実装準備
実装の前にスタートガイドに記載してある事を行います
①: Mobile Ads SDK のインポート
②: Info.plist の更新
③: Mobile Ads SDK の初期化
こちらで詳しく解説してあります。
これが終われば準備は完了です。
実装
Banner.swift
import GoogleMobileAds
import SwiftUI
struct BannerView: UIViewControllerRepresentable {
func makeUIViewController(context _: Context) -> UIViewController {
let viewController = GADBannerViewController()
return viewController
}
func updateUIViewController(_: UIViewController, context _: Context) {}
}
class GADBannerViewController: UIViewController, GADBannerViewDelegate {
var bannerView: GADBannerView!
let adUnitID = "ca-app-pub-3940256099942544/2934735716"
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
loadBanner()
}
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
coordinator.animate(alongsideTransition: nil) { [weak self] _ in
guard let self else { return }
self.loadBanner()
}
}
private func loadBanner() {
bannerView = GADBannerView(adSize: GADAdSizeBanner)
bannerView.adUnitID = adUnitID
bannerView.delegate = self
bannerView.rootViewController = self
let bannerWidth = view.frame.size.width
bannerView.adSize = GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(bannerWidth)
let request = GADRequest()
request.scene = view.window?.windowScene
bannerView.load(request)
setAdView(bannerView)
}
func setAdView(_ view: GADBannerView) {
bannerView = view
self.view.addSubview(bannerView)
bannerView.translatesAutoresizingMaskIntoConstraints = false
let viewDictionary = ["_bannerView": bannerView!]
self.view.addConstraints(
NSLayoutConstraint.constraints(
withVisualFormat: "H:|[_bannerView]|",
options: NSLayoutConstraint.FormatOptions(rawValue: 0), metrics: nil, views: viewDictionary
)
)
self.view.addConstraints(
NSLayoutConstraint.constraints(
withVisualFormat: "V:|[_bannerView]|",
options: NSLayoutConstraint.FormatOptions(rawValue: 0), metrics: nil, views: viewDictionary
)
)
}
}
ContentView.swift
import SwiftUI
struct ContentView: View {
var body: some View {
BannerView()
.frame(height: 60)
}
}
おわり
サンプルプロジェクト置いときます。