首页
学习
活动
专区
工具
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 插件能够正常工作。

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

相关·内容

Flutter3.0新特性全接触

上传后,您的应用程序可以发布到TestFlight或App Store。在设置了最初的Xcode项目设置,如显示名称和应用程序图标后,您不再需要打开Xcode来发布您的应用程序。...Gradle version update 如果你用Flutter工具创建一个新的项目,你可能会注意到,现在生成的文件使用最新版本的Gradle和Android Gradle插件。...还没有使用package:flutter_lints的应用程序、软件包或插件可以按照迁移指南进行迁移。...你可以flutter运行传递--enable-impeller,或者将你的Info.plist文件中的FLTEnableImpeller标志设置为true,来尝试一下Impeller。...Ads 我们知道,对于出版商来说,为个性化广告征求同意和处理苹果公司的应用跟踪透明度(ATT)要求是很重要的。 为了支持这些要求,谷歌提供了用户信息平台(UMP)SDK,它取代了以前的开源同意SDK。

2.3K40

Flutter 3更新详解

注意: 在 Windows 7 和 8 上依然可以运行 Flutter 应用,更改只影响我们推荐使用的开发环境。...Gradle 版本更新 使用 Flutter 工具创建新项目时,您或许已经注意到,生成的文件现在使用了最新版本的 Gradle 和 Android Gradle 插件。...对于尚未使用 package:flutter_lints 的应用、package 或插件,建议开发者按照 迁移指南 迁移至最新版本。...我们 进一步提升 了简单用例中不透明度动画的性能。具体而言,当 Opacity widget 只包含单个渲染原语时,通常由 Opacity widget 调用的 saveLayer 方法可以省略。...Android 上的内联广 告 使用 google_mobile_ads package 时,您应该可以感受到用户关键交互 (如页面之间的滚动和切换) 的性能有所提升。

3.6K20
  • Flutter 2.8 的新特性【flutter专题17】

    中进行了, Google Pay 作为一个主流的大型应用程序,代码超过 100 万行,使用它进行测试可以确保这些更改所产生的影响是可以被感知的。...Profiling 以便更好地了解应用程序中的性能问题,在应用程序启动时启用,2.8 版本现在会将跟踪事件发送到 Android systrace 记录器,即使 Flutter 应用程序构建在发布模式下也会发送这些事件...此外为了创建更少卡顿的动画效果,开发者可能会想要更多关于光栅缓存行为的性能跟踪信息,因为这个行为对于 Flutter 来说是比较昂贵的,可以重复使用的图片进行 blit, 而不是在每一帧上重新绘制它们,...在按下 “Profile app start up” 按钮并加载应用程序启动配置文件后,开发者将看到为配置文件选择的 “AppStartUp” 用户标签,另外还可以通过在可用用户标签列表中,选择用户标签过滤器...如果开发者使用的是 google_maps_flutter 插件或 video_player 插件的 web 版本,或者你已经遵循了 Flutter 团队关于如何优化网络上显示图像的建议,那么您其实已经在使用

    2.4K10

    Flutter 1.17版本重磅发布

    可以通过 flutter run --fast-start -d 访问选项。选项将安装仅取决于您的插件代码(不包括任何Dart代码)的通用Android应用。...选项将您的应用程序捆绑到实际上并未在您的设备上安装的通用Android“包装器”中,这与我们正常的启动选项不同。此外,在某些情况下,例如, 当您使用访问后台执行的插件时。...虽然可以继续使用Flutter编译不使用AndroidX的现有应用程序,但现在是迁移到新库的绝佳时机。 如果您是Android Studio或IntelliJ用户,则会发现“热重装”功能更具弹性。...如果您希望在Android Studio或IntelliJ的Flutter插件中更早地访问此类更改,我们现在为IntelliJ插件提供了一个开发通道,您可以选择该通道以更快地进行更新。...对于Visual Studio Code用户,我们建议使用新的Dart:运行新的“pub outdated”命令。 命令旨在帮助您跟踪依赖项中的版本控制问题。

    2.5K10

    谷歌 Flutter 1.17 发布

    应用程序准备发布时,开发人员将决定用户是否通过从API下载字体来接收字体,或者它与应用程序包预先捆绑在一起。...选项将您的应用程序捆绑到实际上未在您的设备上安装的通用Android“包装器”中,这与正常的启动选项不同。此外,在某些情况下它不起作用,例如,当您使用访问后台执行的插件时。...在此版本中,- androidx标志到flutter create现在是唯一可用的选项。尽管不使用AndroidX的现有应用程序可以继续使用Flutter进行编译,但现在是迁移到新库的好时机。...如果您希望在Android Studio或IntelliJ的Flutter插件中更早地访问此类更改,Flutter团队现在为IntelliJ插件提供了一个开发通道,您可以选择该通道以更快地进行更新。...对于Visual Studio Code用户,建议使用新的Dart:列出过期的软件包命令,该命令将运行新的“ pub outdated”命令。 命令旨在帮助您跟踪依赖项中的版本控制问题。

    3.5K10

    Flutter 2.8 release 发布,快来看看新特性吧

    Profiling 以便更好地了解应用程序中的性能问题,在应用程序启动时启用,2.8 版本现在会将跟踪事件发送到 Android systrace 记录器,即使 Flutter 应用程序构建在发布模式下也会发送这些事件...image.png 此外为了创建更少卡顿的动画效果,开发者可能会想要更多关于光栅缓存行为的性能跟踪信息,因为这个行为对于 Flutter 来说是比较昂贵的,可以重复使用的图片进行 blit, 而不是在每一帧上重新绘制它们...在按下 “Profile app start up” 按钮并加载应用程序启动配置文件后,开发者将看到为配置文件选择的 “AppStartUp” 用户标签,另外还可以通过在可用用户标签列表中,选择用户标签过滤器...如果开发者使用的是 google_maps_flutter 插件或 video_player 插件的 web 版本,或者你已经遵循了 Flutter 团队关于如何优化网络上显示图像的建议,那么您其实已经在使用...HelloPluginWindows 使用这个配置后,即使没有任何 native 代码,也已将包指定为仅支持某些平台,另外还必须提供 Dart 插件类;可以flutter.dev 上的 Dart-only

    4.2K20

    【老孟FlutterFlutter 2 新增的功能

    此外,由于Scrollbar是使用新ScrollbarTheme类的主题,因此您可以设置其样式以使其与应用程序的外观和风格相匹配。...在尝试使用Flutter桌面Beta时,您可以通过按预期方式切换到Beta通道并根据flutter.dev上的指导为目标平台设置配置标志来访问它。此外,我们还制作了稳定通道上可用的beta比特的快照。...我们一直在与一些早期客户一起在私人Beta版程序中试用插件,其中许多人已成功使用这些新格式启动了他们的应用程序。...支持功能的新API可以在beta通道上预览,并在flutter.dev上进行了记录,以及一系列演示新模式的示例项目。通过更改,我们不再犹豫建议在本机应用程序中创建Flutter引擎的多个实例。...图片发布 DevTools中的红点可帮助您专注于出现错误的应用程序部分 DevTools的另一个新功能是能够轻松查看分辨率比显示的图像高的图像,这有助于跟踪过多的应用程序大小和内存使用情况。

    7.9K20

    浅谈Flutter(一):搭建Flutter开发环境

    注意: 镜像为临时镜像,并不能保证一直可用,读者可以参考详情请参考 Using Flutter in China 以获得有关镜像服务器的最新动态。...” 在“用户变量”下检查是否有名为“Path”的条目: 如果该条目存在, 追加 flutter\bin的全路径,使用 ; 作为分隔符....master 带"*"号的分支即你本地的Flutter SDK 跟踪的分支, 要切换分支,可以使用flutter channel beta 或 flutter channel master,Flutter...官方建议跟踪稳定分支, 但你也可以跟踪master分支,这样可以查看最新的变化,但这样稳定性要低的多。...六、flutter doctor  查看依赖是否齐全 可以看到 红色X 标记的使我们还需要对应处理的 依次看: ?

    1.3K10

    Google IO Extended | Flutter 游戏和全平台正式版支持下 Flutter 的现状

    其实 Flame 仓库创建于在 2017,并且之前也有一些使用 Flame 开发的样例子,只是这次 I/O 官方通过 Pinball 游戏,给 Flame 做了一些背书。...全平台 Flutter 3.0 另外一个重点就是增加了对 macOS 和 Linux 应用程序的稳定支持,这是 Flutter 的一个里程碑,现在借助 Flutter 3.0,开发者可以通过一个代码库为六个平台构建应用...注意:目前还会继续为在 Windows 7 和 Windows 8 上能够正常运行 Flutter 提供支持;更改仅影响开发环境。...可以帮助你在多个平台上实现自动构建和定制化的发布 类似 leanflutter 等作者已经在 Pub 发布了很多关于 PC 端能力拓展的插件,所以大家对于 PC 端支持的忧虑可以开始放下,尝试一些...最后,目前 Flutter PC 端在国内也开始被越来越多的大厂所接纳,比如知名的钉钉、字节、企业微信都在 Flutter PC 端进行投入开发,它们的投入使用可以反向推动 Flutter PC 端的健康成长

    1.3K40

    Flutter 2.5正式版发布,带来重大更新

    过时API提示 在此版本的 Flutter 中,Flutter 团队提供的每个相应插件都带有类似 【Battery】的提示,用于表示插件是否过时。...现在,使用DevTools,我们可以更好地将跟踪事件与特定框架相关联,这有助于开发人员在出现问题后分析问题产生的原因。...借助DevTools,我们可以Frames图表中看到页面被渲染的完整渲染过程,并且可以应用程序呈现时填充到此图表中,从此图表中选择一个帧就可以导航到该帧的时间线事件,我们可以使用这些事件来帮助诊断应用程序中的着色器编译卡顿问题...此外,在跟踪应用程序中的 CPU 性能问题时,可能会被来自 Dart 和 Flutter 库或引擎本机代码的分析数据淹没,如果想关闭其他干扰,只专注于您自己的代码,您可以使用新的 CPU Profiler...放弃对市场份额不到 1% 的 iOS 8 的支持,使 Flutter 团队能够专注于更广泛使用的新平台,弃用意味着这些平台可以工作,但我们不会在这些平台上进行功能的更新和插件的支持。

    4.4K50

    【译】Profiling Flutter Applications Using the Timeline

    使用Timeline可以查找和解决应用程序中的特定性能问题。...它也是一个很好的工具,可以识别出Flutter所提供的所有特性的相对性能成本,并允许您做出更明智的决定,确定哪些地方需要避免某些特性,哪些地方需要使用可能会让您的应用程序脱颖而出的效果 ....Flutter应用程序以一种异步的方式与它们的插件进行交互,并且插件不应该去够阻塞任何由Flutter管理的线程. 除了上述四个线程之外,Dart VM还管理一个线程池。...因此,Flutter引擎仅在debug或profile模式中收集跟踪。profile模式与用户在运行应用程序时所期望的性能最为相似。模式使用AOT编译您的Dart代码,与release模式类似。...虽然只有在profile模式下才能收集到可靠的仪表号,但是我喜欢在debug模式下使用热重载来推测性地添加跟踪,以查看我是否离隔离瓶颈越来越近了.

    2.3K62

    Flutter 2.5正式版发布,带来多项重大更新

    过时API提示 在此版本的 Flutter 中,Flutter 团队提供的每个相应插件都带有类似 【Battery】的提示,用于表示插件是否过时。...现在,使用DevTools,我们可以更好地将跟踪事件与特定框架相关联,这有助于开发人员在出现问题后分析问题产生的原因。...[在这里插入图片描述] 借助DevTools,我们可以Frames图表中看到页面被渲染的完整渲染过程,并且可以应用程序呈现时填充到此图表中,从此图表中选择一个帧就可以导航到该帧的时间线事件,我们可以使用这些事件来帮助诊断应用程序中的着色器编译卡顿问题...此外,在跟踪应用程序中的 CPU 性能问题时,可能会被来自 Dart 和 Flutter 库或引擎本机代码的分析数据淹没,如果想关闭其他干扰,只专注于您自己的代码,您可以使用新的 CPU Profiler...然后,再启动后,运行测试,包括设置断点、步进、跳过等。 此外,Flutter 最新的 IJ/AS 插件允许查看单元测试和集成测试运行的覆盖率信息,可以从“调试”右边的按钮来查看测试覆盖率的信息。

    3.6K00

    Flutter 应用性能优化最佳实践

    以下文章来源于Flutter社区,作者talisk 通常来说,Flutter 技术构建的应用程序在默认情况下都是高性能的。...所以你只需要避开常见的陷阱,就可以获得优异的性能,而不需要使用复杂的分析工具对细节做优化。这些最佳建议将ben 1. 最佳实践 如何设计一个能最有效地渲染页面的 Flutter 应用程序?...陷阱 如果你需要调整应用程序的性能,或者 UI 顺畅度没达到你的预期,那么 IDE 的 Flutter plugin 可以提供帮助。...在 Flutter Performance 窗口中,勾选 Show widget rebuild information 复选框。功能可帮助你检测帧的渲染和显示时间是否超过 16ms。...在可能的情况下,插件提供指向相关提示的链接。 以下行为可能会对您应用的性能产生负面影响。 避免使用 Opacity widget,尤其是在动画中避免使用

    2.4K20

    Flutter 1.22 正式发布

    可以在iOS 14上尝试使用Flutter的另一个功能是App Clips,它是iOS 14的一项新功能,它支持10MB以下轻量级应用程序的快速,无安装应用程序执行。...仍在使用v1 API的旧版应用程序在构建过程中将显示弃用警告,该警告指向支持新的Android插件API文档 同时,如果您仍然有基于v1 Android API的Flutter应用程序,它将继续运行。...通过PR,Flutter使用字符包来正确处理这些复杂字符。例如,当使用具有maxLength限制的TextField时,像?‍?‍?这样的字符现在可以正确地计为单个字符。...此时,Android将终止并恢复您的应用程序,因此您可以查看一切是否按预期工作。 ? 尽管我们很高兴将状态恢复的预览版放在您的手中,但还有更多工作要做。...应用程式大小分析工具 作为Flutter 1.22的一部分发布的工具包括一个新的输出大小分析实用程序。工具可帮助诊断Flutter,您的应用大小细分是否会随着时间变化。

    7.5K20

    Flutter】监听滚动动作 控制组件 透明度渐变 ( 移除顶部状态栏空白 | 帧布局组件 | 透明度组件 | 监听滚动组件 )

    插件 | Swiper 组件 ) 基础上进行开发 ; 一、移除顶部状态栏空白 ---- 在 Flutter 界面上方 , 默认有个状态栏 , 显示时间 , 电量 , 网络 , 信号强度等信息 , 这个状态栏是半透明的...; 可以使用 MediaQuery 组件移除顶部状态栏空白部分 ; 调用 MediaQuery.removePadding 方法 , 第一个参数 context 设置成 BuildContext context...Swiper 组件 ; 三、透明度组件 ---- Opacity 组件可以控制该组件的透明度改变 , 修改 opacity 属性 , 可以改变组件的透明度效果 , 0 是完全透明 , 1 是完全不透明...0 ~ 1 变化 , 如果滚动距离 >= 100 , 则透明度组件为 1 , 如果滚动距离小于 0 , 则透明度为 0 ; 注意 : 在最后设置完毕后 , 调用 setState 方法 , 更新 UI...官网 : https://flutter.dev/ Flutter 插件下载地址 : https://pub.dev/packages Flutter 开发文档 : https://flutter.cn

    1K10

    Flutter性能优化

    Flutter运行模式 Debug模式 调试页面开发时使用 Profile模式 调试性能 开发时使用 Release模式 部署发包时使用 Debug Debug模式可以在真机和模拟器上同时运行,模式会打开所有的断言...我们可以在 Android Studio 中通过菜单栏点击 Run=>Profile=>main.dart 选项启动应用, 也可以通过命令行参数 flutter run --profile 运行 Flutter...那先来了解一下 Flutter 中的4个主要线程分别承担了什么职责。 Platform线程:插件代码运行的线程;即Android/iOS的主线程, UI线程:在Dart虚拟机中执行Dart代码。...比如要实现一个混合图层的半透明效果:如果把透明度设置在顶层控件上,CPU会把每个子控件图层渲染出来,再执行saveLayer操作保存为一个图层,最后给这个图层设置透明度。...而saveLayer开销很大,这里官方给出了一个建议:首先确认这些效果是否真的有必要;如果有必要,我们可以透明度设置到每个子控件上,而不是父控件。裁剪操作也是类似。

    2.4K31
    领券