Flutter 的 google_mobile_ads
插件是用于在 Flutter 应用中集成 Google AdMob 广告的。关于应用程序跟踪透明度(App Tracking Transparency, ATT),这是苹果在 iOS 14.5 及以上版本中引入的一项功能,要求应用在追踪用户之前必须获得用户的明确许可。
应用程序跟踪透明度(ATT)允许用户控制是否允许应用跨其他应用和网站追踪他们的数据。这主要是为了保护用户隐私。
如果你在使用 google_mobile_ads
插件时遇到无法设置应用程序跟踪透明度的问题,可能是因为以下原因:
以下是一个示例代码,展示如何在 Flutter 应用中请求 ATT 权限:
import 'package:flutter/foundation.dart' show kIsWeb;
import 'package:flutter/material.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('AdMob ATT Example'),
),
body: AdWidget(ad: _adController.value),
),
);
}
final AdController _adController = AdController();
@override
void initState() {
super.initState();
MobileAds.instance.initialize();
_loadAd();
_requestATT();
}
void _loadAd() {
AdWidget adWidget = AdWidget(ad: _adController);
AdRequest request = AdRequest(
keywords: <String>['flutterio', 'beautiful apps'],
contentUrl: 'https://flutter.io',
testDevices: <String>[], // Android: List<String> | iOS: nil
);
_adController.load(AdType.banner, request);
}
void _requestATT() async {
if (!kIsWeb && Platform.isIOS) {
try {
await ATTAuthorizationStatus.wait();
ATTAuthorizationStatus status = await ATTAuthorizationStatus.current;
if (status == ATTAuthorizationStatus.notDetermined) {
await ATTrackingManager.requestTrackingAuthorizationWithCompletionHandler(
(status) {
print('Tracking authorization status: $status');
},
);
}
} catch (e) {
print('Error requesting ATT: $e');
}
}
}
}
通过以上代码和步骤,你应该能够在 Flutter 应用中正确请求 ATT 权限,并确保 google_mobile_ads
插件能够正常工作。
领取专属 10元无门槛券
手把手带您无忧上云