アプリ起動時にATTダイアログを表示していたのですが、iOS15になって、
requestTrackingAuthorizationWithCompletionHandler
を呼び出しても表示されなくなってしまったのでその対処法を説明します。
何も考えずアプリ起動時に表示させていたため、AppDelegate
のdidFinishLaunchingWithOptions
に実装していました。
しかし、iOS15からrequestTrackingAuthorizationWithCompletionHandler
をdidFinishLaunchingWithOptions
で実装すると、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
}
}
...
}
引き続き、アプリ起動時に表示させたい場合、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でも同様なはずです。
可茂IT塾ではFlutterインターンを募集しています!可茂IT塾のエンジニアの判断で、一定以上のスキルをを習得した方には有給でのインターンも受け入れています。
Read More可茂IT塾ではFlutterインターンを募集しています!可茂IT塾のエンジニアの判断で、一定以上のスキルをを習得した方には有給でのインターンも受け入れています。
Read More