Flutter插件flutter_oewa的使用_flutter_oewa 是一个Flutter插件,它封装了OEWA的Android和iOS SDK

发布于 1周前 作者 caililin 最后一次编辑是 5天前 来自 Flutter

Flutter插件flutter_oewa的使用_flutter_oewa 是一个Flutter插件,它封装了OEWA的Android和iOS SDK

1. 插件概述

flutter_oewa 是一个Flutter插件,它封装了OEWA的Android和iOS SDK。通过这个插件,开发者可以轻松地在Flutter应用中集成OEWA的功能,包括事件日志记录、GDPR合规性等功能。

2. 主要功能

  • 事件日志记录:插件提供了丰富的预定义事件类型,开发者可以通过这些事件来跟踪用户行为,如页面浏览、视频播放、广告点击等。
  • GDPR合规性:插件内置了optOutoptIn方法,帮助开发者确保应用程序符合GDPR要求,用户可以选择是否允许数据跟踪。
  • 调试模式:开发者可以在开发过程中启用调试模式,以便查看详细的日志信息。
  • 会话管理:插件支持初始化、终止和重新启动会话,确保数据的准确性和一致性。

3. 完整示例Demo

以下是一个完整的示例代码,展示了如何在Flutter应用中使用flutter_oewa插件进行事件跟踪和GDPR合规性管理。

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

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

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  void initState() {
    super.initState();
    initOewa();
  }

  bool _optOut = false;

  // 初始化OEWA会话
  Future<void> initOewa() async {
    // 定义你的唯一供应商ID(从你的OEWA账户获取)
    const offerIdentifier = 'my_company_key';

    // 是否在开发时启用调试日志
    const debugMode = true;

    // 启动会话
    await Oewa.initIOLSession(
      offerIdentifier,
      debugMode: debugMode,
      optOutState: false, // 默认不启用opt-out
      privacyMode: true,  // 启用隐私模式
    );
  }

  // 记录页面浏览事件
  void logPageView() {
    Oewa.logEvent(
      OewaViewEvent.appeared(
        category: 'article',
        comment: 'This is a test page view',
        customParams: {
          'articleId': 123,
          'slug': 'test-article',
        },
      ),
    );
  }

  // 记录视频播放事件
  void logVideoPlay() {
    Oewa.logEvent(
      OewaVideoEvent.play(
        category: 'video',
        customParams: {
          'videoUrl': 'https://example.com/video.mp4',
        },
      ),
    );
  }

  // 记录自定义事件
  void logCustomEvent() {
    Oewa.logEvent(
      OewaEvent(
        identifier: 'custom_event',
        state: 'triggered',
        category: 'user_action',
        customParams: {
          'action': 'button_click',
          'value': 42,
        },
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('flutter_oewa 示例'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.spaceEvenly,
            children: [
              const Text(
                '检查日志以查看请求是否发出!',
              ),
              
              ElevatedButton(
                onPressed: logPageView,
                child: const Text('记录页面浏览事件'),
              ),
              
              ElevatedButton(
                onPressed: logVideoPlay,
                child: const Text('记录视频播放事件'),
              ),
              
              ElevatedButton(
                onPressed: logCustomEvent,
                child: const Text('记录自定义事件'),
              ),
              
              if (_optOut == false)
                ElevatedButton(
                  onPressed: () async {
                    // 退出跟踪
                    await Oewa.optOut();
                    final newOptOutState = await Oewa.getOptOutStatus();
                    setState(() {
                      _optOut = newOptOutState;
                    });
                  },
                  child: const Text('退出跟踪 (Opt Out)'),
                ),
              
              if (_optOut == true)
                ElevatedButton(
                  onPressed: () async {
                    // 重新启用跟踪
                    await Oewa.optIn(offerIdentifier: 'my_company_key');
                    final newOptOutState = await Oewa.getOptOutStatus();
                    setState(() {
                      _optOut = newOptOutState;
                    });
                  },
                  child: const Text('重新启用跟踪 (Opt In)'),
                ),
            ],
          ),
        ),
      ),
    );
  }
}

4. 详细说明

4.1 初始化会话

在应用启动时,调用Oewa.initIOLSession方法来初始化OEWA会话。你需要提供一个唯一的offerIdentifier,这是你在OEWA账户中获得的供应商ID。此外,你还可以选择是否启用调试模式(debugMode),以及是否默认启用optOut状态。

await Oewa.initIOLSession(
  offerIdentifier,
  debugMode: debugMode,
  optOutState: false,
  privacyMode: true,
);
4.2 记录事件

插件提供了多种方式来记录事件,最常见的是使用预定义的事件类。例如,你可以记录页面浏览事件、视频播放事件或自定义事件。

  • 页面浏览事件

    Oewa.logEvent(
      OewaViewEvent.appeared(
        category: 'article',
        comment: 'This is a test page view',
        customParams: {
          'articleId': 123,
          'slug': 'test-article',
        },
      ),
    );
    
  • 视频播放事件

    Oewa.logEvent(
      OewaVideoEvent.play(
        category: 'video',
        customParams: {
          'videoUrl': 'https://example.com/video.mp4',
        },
      ),
    );
    
  • 自定义事件

    Oewa.logEvent(
      OewaEvent(
        identifier: 'custom_event',
        state: 'triggered',
        category: 'user_action',
        customParams: {
          'action': 'button_click',
          'value': 42,
        },
      ),
    );
    
4.3 GDPR合规性管理

插件提供了optOutoptIn方法,帮助开发者实现GDPR合规性。用户可以选择退出或重新启用数据跟踪。

  • 退出跟踪

    await Oewa.optOut();
    
  • 重新启用跟踪

    await Oewa.optIn(offerIdentifier: 'my_company_key');
    
  • 获取当前的opt-out状态

    final isOptedOut = await Oewa.getOptOutStatus();
    
4.4 调试模式

在开发过程中,你可以启用调试模式来查看详细的日志信息。这有助于调试和验证事件是否正确发送。

await Oewa.setDebugModeEnabled(true);
4.5 强制发送事件

默认情况下,事件是批量发送的。如果你希望立即发送所有已记录的事件,可以调用sendLoggedEvents方法。

await Oewa.sendLoggedEvents();
4.6 终止会话

如果你想在运行时终止当前的OEWA会话,可以调用terminateSession方法。这将取消所有未发送的事件,并停止进一步的数据收集。

await Oewa.terminateSession();
4.7 重新启动会话

如果之前终止了会话,你可以随时通过startSession方法重新启动会话。

await Oewa.startSession('my_company_key');

更多关于Flutter插件flutter_oewa的使用_flutter_oewa 是一个Flutter插件,它封装了OEWA的Android和iOS SDK的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

回到顶部