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

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

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

概述

adtrace_sdk_flutter 是 AdTrace 提供的用于 Flutter 应用的广告追踪和分析插件。本文将介绍如何在 Flutter 项目中集成并使用该插件。

快速入门

添加 SDK 到项目

首先,在 pubspec.yaml 文件中添加 adtrace_sdk_flutter 依赖:

dependencies:
  adtrace_sdk_flutter: ^1.5.0

然后运行以下命令安装依赖:

flutter packages get

Android 配置

添加 Google Play Services

在 Android 的 build.gradle 文件中添加以下依赖:

implementation 'com.google.android.gms:play-services-ads-identifier:18.0.1'

添加权限

AndroidManifest.xml 中添加以下权限:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <!-- 如果不针对 Google Play Store -->
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/> <!-- 对于 Android 12 及以上版本 -->

Proguard 设置

如果使用 Proguard,需要添加以下规则:

-keep class io.adtrace.sdk.** { *; }
-keep class com.google.android.gms.common.ConnectionResult {
    int SUCCESS;
}
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient {
    com.google.android.gms.ads.identifier.AdvertisingIdClient$Info getAdvertisingIdInfo(android.content.Context);
}
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient$Info {
    java.lang.String getId();
    boolean isLimitAdTrackingEnabled();
}
-keep public class com.android.installreferrer.** { *; }

iOS 配置

确保链接以下框架:

  • iAd.framework
  • AdServices.framework
  • AdSupport.framework
  • CoreTelephony.framework
  • StoreKit.framework
  • AppTrackingTransparency.framework

这些框架可以在 Xcode 的 Project Settings → Build Phases → Link Binary With Libraries 中设置为可选。

集成 SDK 到应用

基本设置

在 Flutter 应用启动时初始化 AdTrace SDK:

import 'package:adtrace_sdk_flutter/adtrace.dart';
import 'package:adtrace_sdk_flutter/adtrace_config.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> with WidgetsBindingObserver {
  @override
  void initState() {
    super.initState();
    WidgetsBinding.instance.addObserver(this);
    initPlatformState();
  }

  void initPlatformState() {
    AdTraceConfig config = AdTraceConfig('YourAppToken', AdTraceEnvironment.sandbox);
    config.logLevel = AdTraceLogLevel.verbose;

    AdTrace.start(config);
  }

  @override
  void dispose() {
    WidgetsBinding.instance.removeObserver(this);
    super.dispose();
  }

  @override
  void didChangeAppLifecycleState(AppLifecycleState state) {
    switch (state) {
      case AppLifecycleState.resumed:
        AdTrace.onResume();
        break;
      case AppLifecycleState.paused:
        AdTrace.onPause();
        break;
      default:
        break;
    }
  }
}

事件跟踪

可以使用 AdTrace 来跟踪用户在应用中的行为。例如,跟踪按钮点击事件:

import 'package:adtrace_sdk_flutter/adtrace_event.dart';

void trackButtonClickedEvent() {
  AdTraceEvent event = AdTraceEvent('abc123');
  AdTrace.trackEvent(event);
}

跟踪收入

如果用户通过点击广告或进行应用内购买产生收入,可以这样跟踪:

void trackRevenueEvent() {
  AdTraceEvent event = AdTraceEvent('abc123');
  event.setRevenue(6, 'Toman');
  AdTrace.trackEvent(event);
}

自定义参数

可以通过回调参数和会话参数来传递自定义数据:

// 回调参数
event.addCallbackParameter('key', 'value');

// 会话参数
AdTrace.addSessionCallbackParameter('scp_foo_1', 'scp_bar');

示例 Demo

以下是一个完整的示例代码,展示了如何在 Flutter 应用中集成和使用 adtrace_sdk_flutter 插件:

import 'package:flutter/material.dart';
import 'package:adtrace_sdk_flutter/adtrace.dart';
import 'package:adtrace_sdk_flutter/adtrace_config.dart';
import 'package:adtrace_sdk_flutter/adtrace_event.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> with WidgetsBindingObserver {
  @override
  void initState() {
    super.initState();
    WidgetsBinding.instance.addObserver(this);
    initPlatformState();
  }

  void initPlatformState() {
    AdTraceConfig config = AdTraceConfig('YourAppToken', AdTraceEnvironment.sandbox);
    config.logLevel = AdTraceLogLevel.verbose;

    AdTrace.start(config);
  }

  @override
  void dispose() {
    WidgetsBinding.instance.removeObserver(this);
    super.dispose();
  }

  @override
  void didChangeAppLifecycleState(AppLifecycleState state) {
    switch (state) {
      case AppLifecycleState.resumed:
        AdTrace.onResume();
        break;
      case AppLifecycleState.paused:
        AdTrace.onPause();
        break;
      default:
        break;
    }
  }

  void trackSimpleEvent() {
    AdTraceEvent event = AdTraceEvent('abc123');
    AdTrace.trackEvent(event);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('AdTrace Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
              onPressed: trackSimpleEvent,
              child: Text('Track Simple Event'),
            ),
          ],
        ),
      ),
    );
  }
}

结论

通过上述步骤,您可以在 Flutter 应用中成功集成和使用 adtrace_sdk_flutter 插件来进行广告追踪和分析。请根据您的具体需求调整配置和功能。更多详细信息,请参考 AdTrace 官方文档


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

1 回复

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


当然,以下是如何在Flutter项目中集成和使用adtrace_sdk_flutter插件进行广告追踪与分析的代码示例。

1. 添加依赖

首先,在你的pubspec.yaml文件中添加adtrace_sdk_flutter依赖:

dependencies:
  flutter:
    sdk: flutter
  adtrace_sdk_flutter: ^x.y.z  # 请替换为最新版本号

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

2. 配置AdTrace

在你的Flutter项目的入口文件(通常是main.dart)中,配置AdTrace SDK。

import 'package:flutter/material.dart';
import 'package:adtrace_sdk_flutter/adtrace_sdk_flutter.dart';

void main() {
  // AdTrace配置参数
  const String appToken = 'your_app_token_here';  // 替换为你的AdTrace应用令牌
  const String environment = AdTraceEnvironment.sandbox; // 或者 AdTraceEnvironment.production
  const bool logLevel = AdTraceLogLevel.verbose; // 可选:设置日志级别

  // 初始化AdTrace SDK
  AdTraceConfig config = AdTraceConfig(
    appToken: appToken,
    environment: environment,
    logLevel: logLevel,
  );

  AdTrace adtrace = AdTrace();
  adtrace.start(config);

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('AdTrace Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              '追踪广告点击事件',
            ),
            ElevatedButton(
              onPressed: () {
                // 发送广告点击事件
                _trackAdClickEvent();
              },
              child: Text('发送广告点击事件'),
            ),
          ],
        ),
      ),
    );
  }

  void _trackAdClickEvent() {
    AdTraceEvent adClickEvent = AdTraceEvent(
      eventName: 'ad_click',
      eventParameters: <String, dynamic>{
        'ad_network': 'example_network',
        'ad_campaign': 'example_campaign',
        'ad_slot': 'example_slot',
      },
    );
    AdTrace.getInstance().trackEvent(adClickEvent);
  }
}

3. 处理延迟启动场景(可选)

如果你的应用支持延迟启动(例如,通过后台消息启动),你可能需要在应用启动时手动调用AdTrace.getInstance().onResume()AdTrace.getInstance().onPause()

@override
void initState() {
  super.initState();
  WidgetsBinding.instance.addObserver(LifecycleEventObserver());
}

@override
void dispose() {
  WidgetsBinding.instance.removeObserver(LifecycleEventObserver());
  super.dispose();
}

class LifecycleEventObserver extends StatefulWidgetObserver {
  @override
  void didChangeAppLifecycleState(AppLifecycleState state) {
    final AdTrace adtrace = AdTrace.getInstance();
    if (state == AppLifecycleState.resumed) {
      adtrace.onResume();
    } else if (state == AppLifecycleState.paused) {
      adtrace.onPause();
    }
  }
}

4. 注意事项

  • 请确保你已经替换了your_app_token_here为你的实际AdTrace应用令牌。
  • 根据你的需求,你可以发送不同类型的事件,如安装、会话开始、应用内购买等,只需创建相应的AdTraceEvent对象并调用trackEvent方法。
  • 测试时,请先在沙箱环境中进行,确保一切正常工作后再切换到生产环境。

通过上述步骤,你应该能够在Flutter项目中成功集成并使用adtrace_sdk_flutter插件进行广告追踪与分析。

回到顶部