ATT対応とは?

ATT(App Tracking Transparency)は、個人情報の提供可否をユーザーに確認するものです。広告付きアプリ(GoogleAdmobなど)では、このATT対応をしていないとアプリ審査でリジェクトされてしまうので、広告付きアプリや会員制アプリは、ATTの設定必須です。

コードはQiitaの記事から引用させてもらいました→https://qiita.com/koooootake/items/e467be2c4f63ff605841

広告無しアプリやユーザー情報をサーバーに送らない単独アプリはATT対応不要です

完成形はこれ

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など)または、実機ビルドして自分のスマホでなら何回でもポップアップを表示確認できます

コメント

タイトルとURLをコピーしました