requestTrackingAuthorizationWithCompletionHandlerでATTダイアログが表示されない

image

アプリ起動時にATTダイアログを表示していたのですが、iOS15になって、
requestTrackingAuthorizationWithCompletionHandler
を呼び出しても表示されなくなってしまったのでその対処法を説明します。

これまでの実装

何も考えずアプリ起動時に表示させていたため、AppDelegatedidFinishLaunchingWithOptionsに実装していました。
しかし、iOS15からrequestTrackingAuthorizationWithCompletionHandlerdidFinishLaunchingWithOptionsで実装すると、ATTダイアログが表示されなくなってしまいました。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    ...
    if (@available(iOS 14, *)) {
        ATTrackingManagerAuthorizationStatus status = [ATTrackingManager trackingAuthorizationStatus];
        if (status == ATTrackingManagerAuthorizationStatusNotDetermined) {
            [ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
                // ad request
            }];
        } else {
            // ad request
        }
    }
    ...
}

iOS15以降に対応した実装

引き続き、アプリ起動時に表示させたい場合、applicationDidBecomeActiveに実装しましょう。
アプリケーションのステータスがUIApplicationStateActiveの時に実行させる必要があるため、ここに実装する事で無事ATTダイアログが表示されるようになります。

- (void)applicationDidBecomeActive:(UIApplication *)application {
    ...
    if (@available(iOS 14, *)) {
        ATTrackingManagerAuthorizationStatus status = [ATTrackingManager trackingAuthorizationStatus];
        if (status == ATTrackingManagerAuthorizationStatusNotDetermined) {
            [ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
                // ad request
            }];
        } else {
            // ad request
        }
    }
    ...
}

さいごに

ATTダイアログは、トラッキング許可を押してもらった方が広告の収益が上がりますので、アプリ起動時ではなく別のタイミングで許可を押してもらうように誘導してから出すのがベストだとは思います。
そのように実装されている方は今回のように急にATTダイアログが表示されなくなった、というような現象は起きないと思いますが、同様にアプリ起動時に実装していて急に表示されなくなったという方は是非参考にしてください!
サンプルはObjective-CのコードですがSwiftでも同様なはずです。

参考

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

お知らせ

11月5日開催のアプリ開発講座の参加者募集中!!

11月5日開催のアプリ開発講座の参加者募集中!!

11月5日にアプリ開発講座を開催します!会場は岐阜県美濃加茂市のコワーキングスペース「こやぁね」です。興味のある方は是非ご参加ください!

Read More
可茂IT塾ではFlutterインターンを募集しています!

可茂IT塾ではFlutterインターンを募集しています!

可茂IT塾ではFlutterインターンを募集しています!可茂IT塾のエンジニアの判断で、一定以上のスキルをを習得した方には有給でのインターンも受け入れています。

Read More

関連の記事

お知らせ

11月5日開催のアプリ開発講座の参加者募集中!!

11月5日開催のアプリ開発講座の参加者募集中!!

11月5日にアプリ開発講座を開催します!会場は岐阜県美濃加茂市のコワーキングスペース「こやぁね」です。興味のある方は是非ご参加ください!

Read More
可茂IT塾ではFlutterインターンを募集しています!

可茂IT塾ではFlutterインターンを募集しています!

可茂IT塾ではFlutterインターンを募集しています!可茂IT塾のエンジニアの判断で、一定以上のスキルをを習得した方には有給でのインターンも受け入れています。

Read More