appstore Guideline 2.1 - AppTrackingTransparency
문제발생
Google Admob 광고를 앱에 넣고 심사 제출을 하였는데 제목처럼 AppTrackingTransparency 관련 내용을 업데이트 해야한다고 하였다. info.plist에는 넣었는데..재차 확인하고 관련 기록을 남긴다.
Warning ATT는 시뮬레이터에서는 표시 되지 않습니다. Real Device에서 개인정보 보호 > 추척에서 앱상태를 확인해야합니다.
package add dependencies: app_tracking_transparency: ^2.0.4
import 'package:app_tracking_transparency/app_tracking_transparency.dart';
Future<void> requestATT() async {
final status = await AppTrackingTransparency.trackingAuthorizationStatus;
if (status == TrackingStatus.notDetermined) {
await AppTrackingTransparency.requestTrackingAuthorization();
}
}
위 내용을 main.dart or splash or onboarding 등 app이 처음시작되는 지점에 넣어야한다. 그래서 필자는 아래와 같이 등록
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
await MobileAds.instance.initialize(); // ✅ AdMob 초기화
await initHive();
// ✅ ATT 권한 요청 (iOS only)
if (Platform.isIOS) {
final status = await AppTrackingTransparency.trackingAuthorizationStatus;
if (status == TrackingStatus.notDetermined) {
await AppTrackingTransparency.requestTrackingAuthorization();
}
}
runApp(const ProviderScope(child: MyApp()));
}
또, 필수적으로 info.plist 에도 기록해야한다.
<key>NSUserTrackingUsageDescription</key>
<string>앱은 맞춤 광고 제공을 위해 사용자의 광고 ID를 사용할 수 있습니다.</string>
ps. 필자가 사용하고 있는 info.plist
~~~
省略
~~~
<!-- 📈 url launch package -->
<key>LSApplicationQueriesSchemes</key>
<array>
<string>https</string>
</array>
<!-- 📈 Google AdMob 설정 -->
<key>GADApplicationIdentifier</key>
<string>ca-app-pub-본인appID넣기</string>
<key>NSAdvertisingAttributionReportEndpoint</key>
<string>https://adservice.google.com</string>
<!-- 🎯 SKAdNetwork 식별자 -->
<key>SKAdNetworkItems</key>
<array>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>cstr6suwn9.skadnetwork</string>
</dict>
</array>
<!-- 🔐 추적 관련 권한 설명 -->
<key>NSUserTrackingUsageDescription</key>
<string>사용자에게 맞춤형 광고를 제공하기 위해 광고 활동 정보를 수집합니다.</string>
<!-- 인터넷 사용 권한 (Flutter에서 asset 불러오기에 필요할 수 있음) -->
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<!-- 📡 네트워크 디버깅 -->
<key>NSBonjourServices</key>
<array>
<string>_dartobservatory._tcp</string>
</array>
<key>NSLocalNetworkUsageDescription</key>
<string>Flutter Devtools uses your local network for debugging.</string>
~~~
省略
~~~