Flutter用户调研与反馈插件survicate_flutter_sdk的使用

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

Flutter用户调研与反馈插件survicate_flutter_sdk的使用

codecov License: LGPL3.0 Pub

这是Survicate为Flutter提供的SDK。

欢迎您贡献代码

支持的版本

Survicate的移动SDK支持以下版本:

  • Android 至少需要4.4版本
  • iOS 至少需要10版本

要使用此SDK,您需要在survicate.com注册一个账户。免费注册后,可以在Tracking Code部分找到您的工作区密钥。

开始使用

请参阅Survicate的文档,以获取有关配置和使用Survicate的详细说明。

要使用此插件,需要在pubspec.yaml文件中添加survicate_flutter_sdk依赖。

dependencies:
  survicate_flutter_sdk: ^x.y.z # 替换为最新版本号

然后导入package:survicate_flutter_sdk/survicate_flutter_sdk.dart并实例化SurvicateFlutterSdk

Android集成

AndroidManifest.xml文件中配置您的工作区密钥。创建meta-data: com.survicate.surveys.workspaceKey

<application
    android:name=".MyApp"
>
    <!-- ... -->
    <meta-data android:name="com.survicate.surveys.workspaceKey" android:value="YOUR_WORKSPACE_KEY"/>
</application>

iOS集成

将工作区密钥添加到Info.plist文件中。创建Survicate字典并在Survicate字典中定义WorkspaceKey字符串。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    [...]
    <key>Survicate</key>
    <dict>
        <key>WorkspaceKey</key>
        <string>YOUR_WORKSPACE_KEY</string>
    </dict>
    [...]
</dict>
</plist>

示例

有一个示例应用展示了如何使用该插件。

贡献

我们鼓励社区成员提交拉取请求和其他贡献。请查看我们的贡献指南,了解如何为该SDK做出贡献。

关于Survicate

Survicate允许您以简单、易用且快速的方式向您的用户发送定向调查。在Survicate面板中,您可以选择用户必须满足的条件,以便在不同方式下显示调查。符合条件的用户将自动看到调查。您可以设置条件为自定义用户属性或您创建的用户事件。

可用条件包括:

  • 屏幕
  • 事件
  • 用户属性
  • 语言
  • 已知用户
  • 操作系统

确保列出应用程序中描述的所有屏幕和事件。一旦完成这些步骤,您或任何负责创建和管理调查的人将能够从Survicate面板触发它们,而无需更新应用程序。

完整示例代码

import 'package:flutter/material.dart';
import 'package:survicate_flutter_sdk/models/survicate_answer_model.dart';
import 'package:survicate_flutter_sdk/models/user_traits_model.dart';
import 'package:survicate_flutter_sdk/survicate_flutter_sdk.dart';

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

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

class _MyAppState extends State<MyApp> {
  SurvicateFlutterSdk survicateFlutterSdk = SurvicateFlutterSdk();
  String? surveyIdDisplayed;
  String? surveyIdAnswered;
  num? questionIdAnswered;
  SurvicateAnswerModel? answer;
  String? surveyIdClosed;
  String? surveyIdCompleted;

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
          appBar: AppBar(
            title: const Text('Survicate Flutter SDK 示例应用'),
          ),
          body: SingleChildScrollView(
            padding: EdgeInsets.all(16.0),
            child: Column(
              mainAxisSize: MainAxisSize.max,
              mainAxisAlignment: MainAxisAlignment.center,
              crossAxisAlignment: CrossAxisAlignment.stretch,
              children: [
                ElevatedButton(
                  onPressed: () {
                    survicateFlutterSdk.invokeEvent('SURVEY');
                  },
                  child: Text('触发事件 SURVEY'),
                ),
                SizedBox(
                  height: 5.0,
                ),
                ElevatedButton(
                  onPressed: () {
                    survicateFlutterSdk.enterScreen('SCREEN');
                  },
                  child: Text('进入屏幕 SCREEN'),
                ),
                ElevatedButton(
                  onPressed: () {
                    survicateFlutterSdk.leaveScreen('SCREEN');
                  },
                  child: Text('离开屏幕 SCREEN'),
                ),
                SizedBox(
                  height: 5.0,
                ),
                ElevatedButton(
                  onPressed: () {
                    survicateFlutterSdk.setUserTraits(
                        UserTraitsModel(userId: '1', firstName: 'USER'));
                  },
                  child: Text('设置用户ID为 1 和 名字为 USER'),
                ),
                SizedBox(
                  height: 5.0,
                ),
                ElevatedButton(
                  onPressed: () {
                    setState(() {
                      surveyIdDisplayed = null;
                      surveyIdAnswered = null;
                      questionIdAnswered = null;
                      answer = null;
                      surveyIdClosed = null;
                      surveyIdCompleted = null;
                    });
                    survicateFlutterSdk.reset();
                  },
                  child: Text('重置'),
                ),
                SizedBox(
                  height: 5.0,
                ),
                ElevatedButton(
                  onPressed: () {
                    setState(() {
                      surveyIdDisplayed = null;
                      surveyIdAnswered = null;
                      questionIdAnswered = null;
                      answer = null;
                      surveyIdClosed = null;
                      surveyIdCompleted = null;
                    });
                    survicateFlutterSdk.registerSurveyListeners(
                        callbackSurveyDisplayedListener: (surveyId) {
                      setState(() {
                        surveyIdDisplayed = surveyId;
                      });
                    }, callbackQuestionAnsweredListener:
                            (surveyId, questionId, answer) {
                      setState(() {
                        surveyIdAnswered = surveyId;
                        questionIdAnswered = questionId;
                        this.answer = answer;
                      });
                    }, callbackSurveyClosedListener: (surveyId) {
                      setState(() {
                        surveyIdClosed = surveyId;
                      });
                    }, callbackSurveyCompletedListener: (surveyId) {
                      setState(() {
                        surveyIdCompleted = surveyId;
                      });
                    });
                  },
                  child: Text('注册调查活动监听器'),
                ),
                SizedBox(
                  height: 5.0,
                ),
                ElevatedButton(
                  onPressed: () {
                    setState(() {
                      surveyIdDisplayed = null;
                      surveyIdAnswered = null;
                      questionIdAnswered = null;
                      answer = null;
                      surveyIdClosed = null;
                      surveyIdCompleted = null;
                    });
                    survicateFlutterSdk.unregisterSurveyListeners();
                  },
                  child: Text('注销调查活动监听器'),
                ),
                SizedBox(
                  height: 5.0,
                ),
                surveyIdDisplayed != null
                    ? Text('最后显示的调查ID = $surveyIdDisplayed')
                    : SizedBox(),
                surveyIdDisplayed != null
                    ? SizedBox(
                        height: 5.0,
                      )
                    : SizedBox(),
                questionIdAnswered != null
                    ? Text(
                        '最后回答的问题ID = $questionIdAnswered 来自调查ID = $surveyIdAnswered, 回答类型 ${answer?.type}')
                    : SizedBox(),
                questionIdAnswered != null
                    ? SizedBox(
                        height: 5.0,
                      )
                    : SizedBox(),
                surveyIdClosed != null
                    ? Text('最后关闭的调查ID = $surveyIdClosed')
                    : SizedBox(),
                surveyIdClosed != null
                    ? SizedBox(
                        height: 5.0,
                      )
                    : SizedBox(),
                surveyIdCompleted != null
                    ? Text('最后完成的调查ID = $surveyIdCompleted')
                    : SizedBox(),
                surveyIdCompleted != null
                    ? SizedBox(
                        height: 5.0,
                      )
                    : SizedBox(),
              ],
            ),
          )),
    );
  }
}

更多关于Flutter用户调研与反馈插件survicate_flutter_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter用户调研与反馈插件survicate_flutter_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter项目中使用survicate_flutter_sdk插件的示例代码。这个示例将展示如何集成该插件,并触发一个用户调研。

1. 添加依赖

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

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

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

2. 初始化插件

在你的Flutter应用的入口文件(通常是main.dart)中,初始化SurvicateFlutterSdk

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

void main() {
  WidgetsFlutterBinding.ensureInitialized();

  // 初始化SurvicateFlutterSdk
  SurvicateFlutterSdk.instance.init(
    accountId: '你的Survicate账户ID', // 请替换为你的Survicate账户ID
    projectId: '你的Survicate项目ID', // 请替换为你的Survicate项目ID
    visitorId: '用户唯一标识符', // 可选,用于标识特定用户,如用户ID
  );

  runApp(MyApp());
}

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

3. 触发用户调研

在你的应用中的适当位置(例如按钮点击事件)触发用户调研。

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

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Survicate Flutter SDK Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            // 触发用户调研
            SurvicateFlutterSdk.instance.showSurvey(surveyId: '你的调研ID'); // 请替换为你的调研ID
          },
          child: Text('显示用户调研'),
        ),
      ),
    );
  }
}

4. 处理调研结果(可选)

如果你希望在用户完成调研后处理结果,可以使用回调方法。注意,具体的回调实现可能会根据Survicate的SDK版本有所不同,请参考官方文档以获取最新信息。

SurvicateFlutterSdk.instance.showSurvey(
  surveyId: '你的调研ID',
  onSuccess: (result) {
    // 用户完成调研后的处理逻辑
    print('调研结果: $result');
  },
  onError: (error) {
    // 显示调研时发生错误的处理逻辑
    print('调研错误: $error');
  },
);

注意事项

  • 确保你已经正确设置了Survicate账户和项目,并且获取了必要的ID。
  • 根据你的应用需求,调整用户标识符(visitorId)和调研ID(surveyId)。
  • 查阅最新的survicate_flutter_sdk文档,以获取关于配置和API的最新信息。

这个示例展示了如何在Flutter项目中集成和使用survicate_flutter_sdk插件来触发用户调研。希望这对你有所帮助!

回到顶部