👣

【Flutter】ATT(App Tracking Transparency)を作成し、iOSのリジェクトを回避しよう!

2023/12/14に公開

ATT(App Tracking Transparency)とは

これ

リジェクトを解消する

リジェクト内容

The app uses the AppTrackingTransparency framework, but we are unable to locate the App Tracking Transparency permission request when reviewed on iPadOS 18.1.

ユーザーの情報を取得しているとATTを入れないと審査でリジェクトされる。

解決方法はシンプルでATTを追加するだけ。

info.plistに下記のコードを追加

<key>NSUserTrackingUsageDescription</key>
<string>This app uses tracking data to show you personalized ads.</string>

インストール

https://pub.dev/packages/app_tracking_transparency

flutter pub add app_tracking_transparency

ATTのダイアログを表示する処理

Future<void> initATT() async {
  if (await AppTrackingTransparency.trackingAuthorizationStatus ==
      TrackingStatus.notDetermined) {
    await Future.delayed(const Duration(milliseconds: 200));
    await AppTrackingTransparency.requestTrackingAuthorization();
  }
}

splash画面でATTを表示

インストール

https://pub.dev/packages/flutter_native_splash

実装

splash画面を表示してそこでinitATT()を表示する。その処理が終了したらsplash画面を閉じる。

void main() {
  WidgetsBinding widgetsBinding = WidgetsFlutterBinding.ensureInitialized();
  await initATT();
  FlutterNativeSplash.remove();
  runApp(const MyApp());
}

Future<void> initATT() async {
  if (await AppTrackingTransparency.trackingAuthorizationStatus ==
      TrackingStatus.notDetermined) {
    await Future.delayed(const Duration(milliseconds: 200));
    await AppTrackingTransparency.requestTrackingAuthorization();
  }
}

Discussion