目次
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 } }
スポンサードリンク