目次
AppTrackingTransparencyとは
Appleの公式サイトより引用
新規App、および既存Appのアップデートを提出するには、Appにおける特定のデータ収集方針に関する情報をプロダクトページに掲載する必要があります。また、iOS 14.5、iPadOS 14.5、tvOS 14.5以降では、他社が所有するAppやWebサイトでの行動をトラッキングする場合、ユーザーに許可を求めることが必要になります。
つまり、広告が表示されていて、iOS14.5以降にリリース、アップデートするアプリには必須の権限確認処理になります。
スポンサードリンク
「Info.plist」の設定
「Property List」での編集の場合、「Privacy - Tracking Usage Description」を追加して、値に任意の文言を設定します。
「Source Code」での編集の場合、以下を追加し、「<string>」内に任意の文言を設定します。
<key>NSUserTrackingUsageDescription</key> <string>ダイアログに表示される任意の文言</string>
広告パーミッション確認の表示方法
以下のインポートを記載し、「AppTrackingTransparency」のライブラリをインポートします。
import AppTrackingTransparency
以下の様に記述することで、広告が表示される前の時点で、権限確認ダイアログが表示されます。
ATTrackingManager.requestTrackingAuthorization(completionHandler: { status in
// ここで広告表示処理を実施
})
iOS14以前をサポートする場合
以下のようにiOS14以降と、以前とで広告表示処理を分ける事で対応が可能です。
if #available(iOS 14, *) {
ATTrackingManager.requestTrackingAuthorization(completionHandler: { status in
// ここで広告表示処理を実施
})
} else {
// ここで広告表示処理を実施
}
スポンサードリンク
広告表示処理周りのサンプル
以下、画面下部に表示されるバナー広告の表示処理周りのサンプルです。
「AD_MOB_BANNER_ID」は各自のバナーIDなので、それぞれで置き換えてください。
import Foundation
import UIKit
import GoogleMobileAds
import AppTrackingTransparency
class GoogleAdUtil {
class func addBannerAd(vc: UIViewController) -> GADBannerView {
let bannerView = GADBannerView(adSize: GADAdSizeBanner)
if #available(iOS 14, *) {
ATTrackingManager.requestTrackingAuthorization(completionHandler: { status in
DispatchQueue.main.async {
bannerView.adUnitID = AD_MOB_BANNER_ID
bannerView.rootViewController = vc
bannerView.translatesAutoresizingMaskIntoConstraints = false
vc.view.addSubview(bannerView)
vc.view.addConstraints(
[NSLayoutConstraint(item: bannerView,
attribute: .bottom,
relatedBy: .equal,
toItem: vc.view.safeAreaLayoutGuide,
attribute: .bottom,
multiplier: 1,
constant: 0),
NSLayoutConstraint(item: bannerView,
attribute: .centerX,
relatedBy: .equal,
toItem: vc.view,
attribute: .centerX,
multiplier: 1,
constant: 0)
])
bannerView.delegate = vc as? GADBannerViewDelegate
bannerView.load(GADRequest())
}
})
} else {
bannerView.adUnitID = AD_MOB_BANNER_ID
bannerView.rootViewController = vc
bannerView.translatesAutoresizingMaskIntoConstraints = false
vc.view.addSubview(bannerView)
vc.view.addConstraints(
[NSLayoutConstraint(item: bannerView,
attribute: .bottom,
relatedBy: .equal,
toItem: vc.view.safeAreaLayoutGuide,
attribute: .bottom,
multiplier: 1,
constant: 0),
NSLayoutConstraint(item: bannerView,
attribute: .centerX,
relatedBy: .equal,
toItem: vc.view,
attribute: .centerX,
multiplier: 1,
constant: 0)
])
bannerView.delegate = vc as? GADBannerViewDelegate
bannerView.load(GADRequest())
}
return bannerView
}
}
スポンサードリンク