Closed1

macOSでiOSアプリを実行している場合、ATTrackingManager.requestTrackingAuthorizationを実行しても許諾ダイアログが表示されない

Kenji Wada (さくさん)Kenji Wada (さくさん)

iOSで下記のコードを実行するとATT(App Tracking Transparency)の許諾ダイアログが表示される。[許可する]ボタンを押せば authorized が出力される。これは多くの人が似たようなコードを書いているので知っている人も多いだろう。

if #available(iOS 14.0, *) {
	// IDFAの未確認のみ許可ダイアログを表示する
	ATTrackingManager.requestTrackingAuthorization { (status) in
		switch status {
		case .notDetermined:
			print("notDetermined")
		case .restricted:
			print("restricted")
		case .denied:
			print("denied")
		case .authorized:
			print("authorized")
		@unknown default:
			print("unknown")
		}
		DispatchQueue.main.async {
			completeHandler?()
		}
	}
} else {
	completeHandler?()
}

Appleシリコン搭載のMac(ここではM1 Macと記す)では、macOS上でiOSアプリを実行することができる。

M1 Macで ATTrackingManager.requestTrackingAuthorization を実行すると、ATT許諾ダイアログが表示されずに notDetermined が返ってくる。notDeterminedはまだ許諾のリクエストを行なっていない状態と理解していたため、許諾リクエストをおこなっているのに notDetermined が返ってくるパターンを想定しておらず、M1 Macで自作アプリを実行すると意図しない状態になっていた。つまりバグっていた。

M1 Macで僕のアプリを動かすような物好きが存在しているかはわからないが、これからはM1 Macでもアプリのテストをしたいと思う。

このスクラップは2022/05/09にクローズされました