iOS14.5からIDFA対応しておかないとデフォルトで取得できなくなります!!!
iOS14.4までの動作はこちら
https://qiita.com/rd0501/items/4cd65ac973cc2736908f
環境
iOS 14.5 Developer Beta 2, 14.4 (実機)
Xcode Version 12.5 beta 2 (12E5234g)
検証結果
OS | isAdvertisingTrackingEnabled | trackingAuthorizationStatus | uuidString |
---|---|---|---|
iOS14.5 | false | notDetermined | 00000000-0000-0000-0000-000000000000 |
iOS14.5 | false | denied | 00000000-0000-0000-0000-000000000000 |
iOS14.5 | false | authorized | 取得できた |
iOS14.4 | true | notDetermined | 取得できた |
iOS14.4 | true | denied | 00000000-0000-0000-0000-000000000000 |
iOS14.4 | true | authorized | 取得できた |
iOS14.4 | false | authorized | 取得できた |
iOS14.4 | false | denied | 00000000-0000-0000-0000-000000000000 |
14.5以降の場合のみ許可を求めるのが一番コスパよさそう
備考
- iOS14.5から
isAdvertisingTrackingEnabled
がfalse
になってました - iOS14.5の設定アプリから
Privacy > Tracking > Allow Apps to Request to Track
をOFFにするとtrackingAuthorizationStatus
がdefaultでdenied
になる(14.4と一緒)(アラートは出ない) - iOS14.5 でアラートが出ている状態で端末の電源を切ると
denied
になる(14.4と一緒) - simulatorでは問答無用で
00000000-0000-0000-0000-000000000000
になるので注意(14.4と一緒) - restricted はよくわかりませんでしたが denied と同じ扱いで良さそう?(14.4と一緒)
その他
@available(iOS, introduced: 6, deprecated: 14, message: "This has been replaced by functionality in AppTrackingTransparency's ATTrackingManager class.")
open var isAdvertisingTrackingEnabled: Bool { get }
isAdvertisingTrackingEnabledが非推奨になってて何してもfalseになるようになった
14.4まではtrueも返ってきてた気がします
コード
if #available(iOS 14, *) {
print(ATTrackingManager.trackingAuthorizationStatus.rawValue)
ATTrackingManager.requestTrackingAuthorization(completionHandler: { status in
print(status.rawValue)
print(ATTrackingManager.trackingAuthorizationStatus.rawValue)
print(ASIdentifierManager.shared().isAdvertisingTrackingEnabled)
print(ASIdentifierManager.shared().advertisingIdentifier)
})
} else {
// Fallback on earlier versions
}
print(ASIdentifierManager.shared().isAdvertisingTrackingEnabled)
print(ASIdentifierManager.shared().advertisingIdentifier)