Flutter广告追踪与分析插件journify_analytics_plugin_idfa的使用

Flutter广告追踪与分析插件journify_analytics_plugin_idfa的使用

journify_analytics_plugin_idfa 是一个用于获取 iOS 广告标识符(IDFA)数据的插件。IDFA 数据将包含在事件(event)的有效负载中,并出现在 event.context.device 下。

注意:此插件仅适用于 iOS,Android 调用将返回空操作(no-op)。


安装

手动将该包添加到你的 pubspec.yaml 文件中:

dependencies:
  analytics_plugin_idfa:
    git:
      url: https://github.com/journifyio/journify-flutter-sdk
      ref: main
      path: packages/plugins/plugin_idfa

同时,确保在 Info.plist 文件中添加了 NSUserTrackingUsageDescription 的描述,否则应用可能会崩溃。


使用

按照主 Journify 客户端的 插件添加说明 进行操作:

在初始化 Journify 客户端时,调用 .add(plugin) 方法并传入 PluginIdfa 实例。

以下是一个完整的示例代码:

import 'package:flutter/material.dart';
import 'package:journify_analytics/client.dart';
import 'package:journify_analytics_plugin_idfa/plugin_idfa.dart' show PluginIdfa;

const writeKey = 'JOURNIFY_WRITE_KEY'; // 替换为你的 Write Key

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

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final analytics = createClient(Configuration(writeKey)); // 初始化 Journify 客户端

  [@override](/user/override)
  void initState() {
    super.initState();

    // 添加 IDFA 插件
    analytics.addPlugin(PluginIdfa());

    // 发送测试事件
    analytics.track('Test Event', properties: {'key': 'value'});
  }
}

自定义 IDFA 插件初始化

如果需要延迟 IDFA 插件的初始化(例如避免与推送通知提示发生竞争),可以按以下方式实现:

import 'package:journify_analytics/client.dart';
import 'package:journify_analytics_plugin_idfa/plugin_idfa.dart' show PluginIdfa;

const writeKey = 'JOURNIFY_WRITE_KEY'; // 替换为你的 Write Key

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

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final analytics = createClient(Configuration(writeKey)); // 初始化 Journify 客户端

  [@override](/user/override)
  void initState() {
    super.initState();

    // 创建 IDFA 插件实例并禁用自动请求权限
    final idfaPlugin = PluginIdfa(shouldAskPermission: false);

    // 将插件添加到客户端
    analytics.addPlugin(idfaPlugin);

    // 延迟请求权限
    idfaPlugin.requestTrackingPermission().then((enabled) {
      if (enabled) {
        print('用户已授权 IDFA');
      } else {
        print('用户未授权 IDFA');
      }
    });
  }
}

更多关于Flutter广告追踪与分析插件journify_analytics_plugin_idfa的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter广告追踪与分析插件journify_analytics_plugin_idfa的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


journify_analytics_plugin_idfa 是一个用于 Flutter 的广告追踪与分析插件,主要用于在 iOS 设备上获取 IDFA(Identifier for Advertisers,广告标识符)。IDFA 是苹果公司提供的一种用于广告追踪的标识符,允许广告商跨应用追踪用户行为,以便进行精准广告投放和效果分析。

安装插件

首先,你需要在 pubspec.yaml 文件中添加 journify_analytics_plugin_idfa 插件的依赖:

dependencies:
  journify_analytics_plugin_idfa: ^1.0.0

然后运行 flutter pub get 来安装插件。

配置 iOS 项目

在 iOS 项目中,你需要确保已经启用了 IDFA 的追踪功能。打开 ios/Runner/Info.plist 文件,并添加以下内容:

<key>NSUserTrackingUsageDescription</key>
<string>We use your data to provide a better experience</string>

这个键值对用于向用户请求追踪权限,描述信息可以根据你的应用需求进行修改。

使用插件

在你的 Flutter 代码中,你可以通过以下方式使用 journify_analytics_plugin_idfa 插件来获取 IDFA:

import 'package:journify_analytics_plugin_idfa/journify_analytics_plugin_idfa.dart';

void getIDFA() async {
  try {
    String? idfa = await JournifyAnalyticsPluginIDFA.getIDFA();
    if (idfa != null) {
      print("IDFA: $idfa");
    } else {
      print("IDFA is null or permission denied");
    }
  } catch (e) {
    print("Failed to get IDFA: $e");
  }
}

处理用户权限

在 iOS 14 及以上版本中,用户可以选择是否允许应用追踪其 IDFA。因此,在获取 IDFA 之前,你需要检查用户是否已经授予了追踪权限。你可以使用 AppTrackingTransparency 框架来请求权限:

import 'package:app_tracking_transparency/app_tracking_transparency.dart';

void requestTrackingPermission() async {
  final status = await AppTrackingTransparency.requestTrackingAuthorization();
  if (status == TrackingStatus.authorized) {
    // 用户已授权,可以获取 IDFA
    getIDFA();
  } else {
    // 用户未授权,无法获取 IDFA
    print("Tracking permission denied");
  }
}

完整示例

以下是一个完整的示例,展示了如何请求追踪权限并获取 IDFA:

import 'package:flutter/material.dart';
import 'package:journify_analytics_plugin_idfa/journify_analytics_plugin_idfa.dart';
import 'package:app_tracking_transparency/app_tracking_transparency.dart';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('IDFA Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () {
              requestTrackingPermission();
            },
            child: Text('Get IDFA'),
          ),
        ),
      ),
    );
  }
}

void requestTrackingPermission() async {
  final status = await AppTrackingTransparency.requestTrackingAuthorization();
  if (status == TrackingStatus.authorized) {
    getIDFA();
  } else {
    print("Tracking permission denied");
  }
}

void getIDFA() async {
  try {
    String? idfa = await JournifyAnalyticsPluginIDFA.getIDFA();
    if (idfa != null) {
      print("IDFA: $idfa");
    } else {
      print("IDFA is null or permission denied");
    }
  } catch (e) {
    print("Failed to get IDFA: $e");
  }
}
回到顶部