Flutter VWO集成插件vwo_flutter的使用

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

Flutter VWO集成插件vwo_flutter的使用

简介

vwo_flutter 是一个开源库,允许你在Flutter应用程序中进行A/B测试。通过集成VWO(Visual Website Optimizer),你可以轻松地对应用的不同版本进行实验,以找到最佳用户体验。

要求

  • Dart SDK 版本 >=2.12.0 <3.0.0
  • Flutter 版本 >=1.20.0

文档

请参考官方VWO文档以获取更多详细信息。

基本用法

实例化

SDK提供了一个方法来实例化一个VWO客户端。该方法接受一个apiKey和一个配置对象。实例化SDK所需的参数是apiKey

import 'package:vwo_flutter/vwo_flutter.dart';

VWOConfig vwoConfig = VWOConfig();
if (Platform.isIOS) {
  await VWO.launch(ios_apiKey, vwoConfig: vwoConfig); // iOS平台的API Key
} else {
  await VWO.launch(android_apiKey, vwoConfig: vwoConfig); // Android平台的API Key
}
推送自定义维度

你可以推送自定义维度数据到VWO。

await VWO.pushCustomDimension("CUSTOM_DIMENSION_KEY", "CUSTOM_DIMENSION_VALUE");
获取变体名称

你可以根据测试键获取变体名称。

await VWO.getVariationNameForTestKey("campaign_key");
获取变量值

你可以根据变量键获取不同类型的变量值。

// 获取字符串变量值
await VWO.getStringForKey("variable_key", "default_value");

// 获取整数变量值
await VWO.getIntegerForKey("variable_key", default_value);

// 获取双精度浮点数变量值
await VWO.getDoubleForKey("variable_key", default_value);

// 获取布尔变量值
await VWO.getBooleanForKey("variable_key", default_value);

// 获取对象变量值
await VWO.getObjectForKey("variable_key", default_value);
触发目标

你可以触发自定义目标或收入目标。

// 触发自定义目标
await VWO.trackConversion("test_goal");

// 触发收入目标
await VWO.trackConversion("test_goal", revenue_value);

凭证

此SDK需要一个应用密钥。你可以在VWO官网注册一个账户,并创建一个新的Android/iOS应用,然后使用生成的应用密钥。

设置VWO账户

  1. 在VWO官网注册一个账户。
  2. 从创建菜单中创建一个新的Android应用。
  3. 使用生成的应用密钥集成SDK到你的Android/iOS应用中。
  4. 创建并运行活动。

完整示例Demo

以下是一个完整的示例代码,展示了如何在Flutter应用中集成vwo_flutter SDK。

///
/// Copyright 2021 Wingify Software Pvt. Ltd.
///
/// Licensed under the Apache License, Version 2.0 (the "License");
/// you may not use this file except in compliance with the License.
/// You may obtain a copy of the License at
///
///    http://www.apache.org/licenses/LICENSE-2.0
///
/// Unless required by applicable law or agreed to in writing, software
/// distributed under the License is distributed on an "AS IS" BASIS,
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
/// See the License for the specific language governing permissions and
/// limitations under the License.

import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:vwo_flutter/vwo_flutter.dart';
import 'package:vwo_flutter_example/providers/navigation_provider.dart';
import 'package:vwo_flutter_example/screens/sorting/sorting_campaign.dart';

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

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

class _MyAppState extends State<MyApp> {
  [@override](/user/override)
  void initState() {
    super.initState();
    // 监听VWO事件流
    VWO.vwoStream.listen((vwoProperties) {
      print("received data from vwo: $vwoProperties");
      String campaignId = vwoProperties["vwo_campaign_name"];
      String campaignName = vwoProperties["vwo_campaign_id"];
      String variationId = vwoProperties["vwo_variation_name"];
      String variationName = vwoProperties["vwo_variation_id"];
      print("Campaign id $campaignId, Campaign name $campaignName, VariationId $variationId, VariationName $variationName");
    });

    // 初始化VWO SDK
    VWOConfig vwoConfig = VWOConfig();
    if (Platform.isIOS) {
      await VWO.launch(ios_apiKey, vwoConfig: vwoConfig); // iOS平台的API Key
    } else {
      await VWO.launch(android_apiKey, vwoConfig: vwoConfig); // Android平台的API Key
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MultiProvider(
      providers: [
        ChangeNotifierProvider<NavigationProvider>(
          create: (context) => NavigationProvider(),
        ),
      ],
      child: MaterialApp(
        home: SortingCampaign(), // 示例页面
      ),
    );
  }
}

更多关于Flutter VWO集成插件vwo_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter VWO集成插件vwo_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中集成和使用VWO(Visual Website Optimizer)插件vwo_flutter的示例代码。

步骤 1: 添加依赖

首先,你需要在你的pubspec.yaml文件中添加vwo_flutter的依赖。

dependencies:
  flutter:
    sdk: flutter
  vwo_flutter: ^最新版本号  # 请替换为实际可用的最新版本号

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

步骤 2: 配置VWO

在你的Flutter应用的入口文件(通常是main.dart)中,配置VWO客户端。你需要提供你的VWO账户ID和访问密钥。

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

void main() {
  // 初始化VWO客户端
  VWOClient.init(
    accountId: 'YOUR_ACCOUNT_ID',  // 替换为你的VWO账户ID
    accessKey: 'YOUR_ACCESS_KEY',  // 替换为你的VWO访问密钥
  );

  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 StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter VWO Integration'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Check A/B Test Variation:',
            ),
            FutureBuilder<String>(
              future: VWOClient.getVariationNameForCampaignKey('YOUR_CAMPAIGN_KEY'),
              builder: (context, snapshot) {
                if (snapshot.connectionState == ConnectionState.done) {
                  if (snapshot.hasError) {
                    return Text('Error: ${snapshot.error}');
                  } else {
                    return Text(
                      'Current Variation: ${snapshot.data}',
                      style: TextStyle(fontSize: 20),
                    );
                  }
                } else {
                  return CircularProgressIndicator();
                }
              },
            ),
          ],
        ),
      ),
    );
  }
}

解释

  1. 依赖添加:在pubspec.yaml中添加vwo_flutter依赖。
  2. 初始化VWO客户端:在main()函数中调用VWOClient.init()方法,并传入你的VWO账户ID和访问密钥。
  3. 获取当前变体:在MyHomePage组件中,使用VWOClient.getVariationNameForCampaignKey()方法获取指定活动的当前变体。这里使用了FutureBuilder来处理异步操作并显示结果。

注意事项

  • 替换YOUR_ACCOUNT_IDYOUR_ACCESS_KEYYOUR_CAMPAIGN_KEY为实际的VWO配置信息。
  • 确保你的VWO活动已经正确设置,并且活动密钥与代码中使用的密钥匹配。
  • 根据你的实际需求,你可能需要在更多地方调用VWO客户端的方法来管理实验。

这个示例代码展示了如何在Flutter应用中集成和使用VWO插件vwo_flutter来获取当前活动的变体。根据你的具体需求,你可以进一步扩展和自定义这个集成。

回到顶部