Skip to content

iOS15でAppTrackingTransparencyのダイアログが表示されない場合の対応方法

iOS15でAppTrackingTransparencyの確認ダイアログが表示されない場合があります。表示されないとGuideline 2.1 – Information Neededでリジェクトされることもあるようです。

原因

iOS15で表示されない原因としては、AppDelegateのdidFinishLaunchingWithOptionsでAppTrackingTransparencyの実装をしていることです。iOS15からアプリがアクティブな状態でないとダメになったようです。

https://developer.apple.com/documentation/apptrackingtransparency/attrackingmanager/3547037-requesttrackingauthorizationwith

解決方法

解決方法は、アプリがアクティブな状態の時にAppTrackingTransparencyの実装をすることです。AppDelegateだと、didFinishLaunchingWithOptionsでなくapplicationDidBecomeActiveで実装すれば大丈夫です。

    func applicationDidBecomeActive(_ application: UIApplication) {
        if #available(iOS 14, *) {
            if ATTrackingManager.trackingAuthorizationStatus == .notDetermined {
                ATTrackingManager.requestTrackingAuthorization { _ in }
            }
        }
    }

SceneDelegateを使用している場合は、sceneDidBecomeActiveに実装します。

    func sceneDidBecomeActive(_ scene: UIScene) {
        if #available(iOS 14, *) {
            if ATTrackingManager.trackingAuthorizationStatus == .notDetermined {
                ATTrackingManager.requestTrackingAuthorization { _ in }
            }
        }
    }

それでも表示されない場合は、delayを入れることで解決するかと思います。

DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
    ATTrackingManager.requestTrackingAuthorization { _ in }
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です