首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Flutter - google_mobile_ads是否可以使用此插件设置应用程序跟踪透明度?

Flutter 的 google_mobile_ads 插件是用于在 Flutter 应用中集成 Google AdMob 广告的。关于应用程序跟踪透明度(App Tracking Transparency, ATT),这是苹果在 iOS 14.5 及以上版本中引入的一项功能,要求应用在追踪用户之前必须获得用户的明确许可。

基础概念

应用程序跟踪透明度(ATT)允许用户控制是否允许应用跨其他应用和网站追踪他们的数据。这主要是为了保护用户隐私。

相关优势

  • 用户隐私保护:用户可以明确知道哪些应用在追踪他们,并可以选择是否允许。
  • 透明度:应用开发者必须明确告知用户他们的追踪行为。

类型

  • 请求权限:应用需要向用户请求 ATT 权限。
  • 用户选择:用户可以选择允许或拒绝应用追踪。

应用场景

  • 广告追踪:广告平台需要用户同意才能追踪用户行为以提供个性化广告。
  • 数据分析:应用开发者需要用户同意才能收集跨应用的数据进行分析。

问题及解决方法

如果你在使用 google_mobile_ads 插件时遇到无法设置应用程序跟踪透明度的问题,可能是因为以下原因:

  1. iOS 版本:确保你的应用运行在 iOS 14.5 或更高版本。
  2. 权限请求:确保你在应用启动时正确请求了 ATT 权限。

示例代码

以下是一个示例代码,展示如何在 Flutter 应用中请求 ATT 权限:

代码语言:txt
复制
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 插件能够正常工作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券