Flutter广告标识符获取插件advertising_id的使用

发布于 1周前 作者 zlyuanteng 来自 Flutter

Flutter广告标识符获取插件advertising_id的使用

advertising_id

pub package

一个用于访问广告ID的Flutter插件。它封装了iOS上的 ASIdentifierManager.advertisingIdentifier 和Android上的 advertising ID

Getting Started

添加依赖

运行以下命令来添加advertising_id插件到你的Flutter项目中:

flutter pub add advertising_id

这将在你的pubspec.yaml文件中添加如下依赖项:

dependencies:
  ...
  advertising_id: ^2.7.1

Usage

获取广告ID

通过调用AdvertisingId.id方法来获取广告ID。需要注意的是,平台消息可能会失败,因此我们使用try/catch来捕获PlatformException异常。

String? advertisingId;
try {
  advertisingId = await AdvertisingId.id(true);
} on PlatformException {
  advertisingId = null;
}

检查用户是否启用了限制广告跟踪

通过调用AdvertisingId.isLimitAdTrackingEnabled来检查用户是否启用了限制广告跟踪功能。

bool? isLimitAdTrackingEnabled;
try {
  isLimitAdTrackingEnabled = await AdvertisingId.isLimitAdTrackingEnabled;
} on PlatformException {
  isLimitAdTrackingEnabled = false;
}

示例Demo

下面是一个完整的示例代码,展示了如何在Flutter应用中使用advertising_id插件来获取广告ID以及检查是否启用了限制广告跟踪。

import 'package:advertising_id/advertising_id.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String? _advertisingId = '';
  bool? _isLimitAdTrackingEnabled;

  @override
  void initState() {
    super.initState();
    initPlatformState();
  }

  // 初始化平台状态
  Future<void> initPlatformState() async {
    String? advertisingId;
    bool? isLimitAdTrackingEnabled;

    try {
      advertisingId = await AdvertisingId.id(true);
    } on PlatformException {
      advertisingId = 'Failed to get platform version.';
    }

    try {
      isLimitAdTrackingEnabled = await AdvertisingId.isLimitAdTrackingEnabled;
    } on PlatformException {
      isLimitAdTrackingEnabled = false;
    }

    if (!mounted) return;

    setState(() {
      _advertisingId = advertisingId;
      _isLimitAdTrackingEnabled = isLimitAdTrackingEnabled;
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Plugin example app'),
        ),
        body: Center(
          child: Column(
            mainAxisSize: MainAxisSize.min,
            children: <Widget>[
              Text('Advertising Id: $_advertisingId'),
              Text('isLimitAdTrackingEnabled : $_isLimitAdTrackingEnabled'),
            ],
          ),
        ),
      ),
    );
  }
}

以上就是关于advertising_id插件的介绍和使用方法,希望对你有所帮助!如果你有任何问题或需要进一步的帮助,请随时提问。


更多关于Flutter广告标识符获取插件advertising_id的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter广告标识符获取插件advertising_id的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用advertising_id插件来获取广告标识符的示例代码。这个插件允许你访问设备的广告标识符,这在广告追踪和个性化广告展示中非常有用。

首先,确保你已经在pubspec.yaml文件中添加了advertising_id插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  advertising_id: ^2.0.0  # 请检查最新版本号

然后,运行flutter pub get来安装依赖。

接下来,在你的Flutter项目中,你可以按照以下步骤使用advertising_id插件:

  1. 导入插件

在你的Dart文件中(比如main.dart),导入advertising_id插件:

import 'package:flutter/material.dart';
import 'package:advertising_id/advertising_id.dart';
  1. 请求广告标识符

使用AdvertisingIdClient来获取广告标识符。这是一个异步操作,所以你需要使用asyncawait关键字。

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('广告标识符示例'),
        ),
        body: AdvertisingIdScreen(),
      ),
    );
  }
}

class AdvertisingIdScreen extends StatefulWidget {
  @override
  _AdvertisingIdScreenState createState() => _AdvertisingIdScreenState();
}

class _AdvertisingIdScreenState extends State<AdvertisingIdScreen> {
  String? advertisingId;
  bool isLoading = true;
  String? errorMessage;

  @override
  void initState() {
    super.initState();
    _getAdvertisingId();
  }

  Future<void> _getAdvertisingId() async {
    try {
      final AdvertisingIdInfo info = await AdvertisingIdClient.advertisingIdInfo;
      setState(() {
        advertisingId = info.id;
        isLoading = false;
      });
    } catch (e) {
      setState(() {
        errorMessage = e.toString();
        isLoading = false;
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Center(
      child: isLoading
          ? CircularProgressIndicator()
          : Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                if (errorMessage != null)
                  Text(
                    '错误: $errorMessage',
                    style: TextStyle(color: Colors.red),
                  ),
                if (advertisingId != null)
                  Text(
                    '广告标识符: $advertisingId',
                    style: TextStyle(fontSize: 20),
                  ),
              ],
            ),
    );
  }
}

这个示例代码展示了如何在Flutter应用中获取广告标识符。它首先检查是否有广告标识符信息,如果有,则显示广告标识符;如果有错误,则显示错误信息。

请注意,在Android上,获取广告标识符通常需要适当的权限,并且用户可能需要授予这些权限。然而,advertising_id插件通常会处理这些权限请求,所以你不需要手动请求权限。

此外,请确保你的应用符合所有相关的隐私政策和法规,特别是在处理用户数据时。

回到顶部