ATT(App Tracking Transparency)は、個人情報の提供可否をユーザーに確認するものです。広告付きアプリ(GoogleAdmobなど)では、このATT対応をしていないとアプリ審査でリジェクトされてしまうので、広告付きアプリや会員制アプリは、ATTの設定必須です。
コードはQiitaの記事から引用させてもらいました→https://qiita.com/koooootake/items/e467be2c4f63ff605841
完成形はこれ

ViewController.swiftの編集
“viewDidLoad”に書いたら動作しなかったので”viewDidAppear”にコード書いてます。以下のコードをコピペでエラー出る人は「Command + “B”」で一旦ビルドして、新たにimportしたAppTrackingTransparency、AdSupportをアプリに認識させてください
import UIKit
import AppTrackingTransparency //追加
import AdSupport //追加
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//ここに書いたらATTが表示されないので注意(゚∀゚)
}
//ライフサイクルて最後の方のやつ ↓↓↓
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
//ATT対応
if #available(iOS 14, *) {
switch ATTrackingManager.trackingAuthorizationStatus {
case .authorized:
print("Allow Tracking")
print("IDFA: \(ASIdentifierManager.shared().advertisingIdentifier)")
case .denied:
print("拒否")
case .restricted:
print("制限")
case .notDetermined:
showRequestTrackingAuthorizationAlert()
@unknown default:
fatalError()
}
} else {// iOS14未満
if ASIdentifierManager.shared().isAdvertisingTrackingEnabled {
print("Allow Tracking")
print("IDFA: \(ASIdentifierManager.shared().advertisingIdentifier)")
} else {
print("制限")
}
}
}
///Alert表示
private func showRequestTrackingAuthorizationAlert() {
if #available(iOS 14, *) {
ATTrackingManager.requestTrackingAuthorization(completionHandler: { status in
switch status {
case .authorized:
print("🎉")
//IDFA取得
print("IDFA: \(ASIdentifierManager.shared().advertisingIdentifier)")
case .denied, .restricted, .notDetermined:
print("😥")
@unknown default:
fatalError()
}
})
}
}
}
Info.plistの編集
ポップアップに表示させる文字は、デベロッパーの好みで設定できますが「許可ボタンを押してください!」など、品の無いメッセージにするとリジェクトされるので注意・・・

最後に
このATTのポップアップですが、シミュレーターでは一度しか表示されません。もしテストでATTポップアップを何回も表示させたい場合、シミュレーター内のアプリを一度削除するか、シミュレーターの機種変更してください(iPhone7→iPhone8など)または、実機ビルドして自分のスマホでなら何回でもポップアップを表示確認できます
コメント