Flutter调研与反馈插件survicate_sdk的使用

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

Flutter调研与反馈插件survicate_sdk的使用

简介

Survicate Mobile SDK允许您从移动应用用户那里收集反馈。安装在您的应用程序中后,SDK将使您能够触发有针对性的调查,以更好地了解您的用户并收集他们对您产品的意见。

该插件由Survicate - 客户体验&调查软件维护和支持。详细的文档可以在这里查看:Flutter Survicate SDK 文档

pub version

要求

  • 使用Survicate Mobile SDK需要一个survicate.com账号。您可以在此免费创建账户:注册,或被同事邀请加入公司账户。
  • 请检查iOSAndroid库的要求,因为它们同样适用。

安装

要使用此插件,请在pubspec.yaml文件中添加survicate_sdk作为依赖项:

dependencies:
  survicate_sdk: ^latest_version # 替换为最新版本号

配置

Android配置

  1. AndroidManifest.xml文件中配置您的工作区密钥(workspace key)。
    <application
        android:name=".MyApp"
    >
        <!-- ... -->
        <meta-data android:name="com.survicate.surveys.workspaceKey" android:value="YOUR_WORKSPACE_KEY"/>
    </application>
    
  2. 将Survicate Maven仓库添加到位于android目录下的项目build.gradle文件中。
    allprojects {
        repositories {
            // ...
            maven { url 'https://repo.survicate.com' }
        }
    }
    

iOS配置

  1. 将工作区密钥添加到Info.plist文件中。
    • 创建Survicate字典。
    • Survicate字典中定义WorkspaceKey字符串。
    • Info.plist文件应如下所示: Info.plist example
  2. ios目录下运行pod update命令。

初始化

在应用程序中使用initializeSdk()方法初始化SDK。只调用一次,在主组件(如lib/main.dart文件)中调用。

import 'package:survicate_sdk/survicate_sdk.dart';

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

使用示例

下面是一个完整的示例代码,展示了如何在Flutter应用中集成和使用survicate_sdk

import 'package:flutter/material.dart';
import 'package:survicate_sdk/survicate_sdk.dart';
import 'package:survicate_sdk/user_trait.dart';

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

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

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

class _MyAppState extends State<MyApp> {
  final listener = SurvicateEventListener(
    onSurveyDisplayed: (SurveyDisplayedEvent event) {
      print('Survey displayed');
    },
    onQuestionAnswered: (QuestionAnsweredEvent event) {
      print('Question answered');
    },
    onSurveyClosed: (SurveyClosedEvent event) {
      print('Survey closed');
    },
    onSurveyCompleted: (SurveyCompletedEvent event) {
      print('Survey completed');
    },
  );

  @override
  void initState() {
    super.initState();
    // 设置工作区密钥(可选)
    SurvicateSdk.setWorkspaceKey("WORKSPACE_KEY");
    // 初始化SDK
    SurvicateSdk.initializeSdk();
    // 添加事件监听器
    SurvicateSdk.addSurvicateEventListener(listener);
  }

  @override
  void dispose() {
    // 移除事件监听器
    SurvicateSdk.removeSurvicateEventListener(listener);
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: Column(
          mainAxisAlignment: MainAxisAlignment.start,
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: [
            TextButton(
              child: const Text('Enter Screen: Home'),
              onPressed: () {
                SurvicateSdk.enterScreen('Home');
              },
            ),
            TextButton(
              child: const Text('Leave Screen: Home'),
              onPressed: () {
                SurvicateSdk.leaveScreen('Home');
              },
            ),
            TextButton(
              child: const Text('Invoke Event: Event'),
              onPressed: () {
                SurvicateSdk.invokeEvent('Event');
              },
            ),
            TextButton(
              child: const Text('Invoke Event with Properties: Event'),
              onPressed: () {
                Map<String, String> properties = {
                  'property1': 'value1',
                  'property2': 'value2',
                };
                SurvicateSdk.invokeEvent('Event', eventProperties: properties);
              },
            ),
            TextButton(
              child: const Text('Set User Trait'),
              onPressed: () {
                UserTrait trait = UserTrait.string('Name', 'Jane Doe');
                SurvicateSdk.setUserTrait(trait);
              },
            ),
            TextButton(
              child: const Text('Set User Traits'),
              onPressed: () {
                List<UserTrait> traits = [
                  UserTrait.string("name", "Jane Doe"),
                  UserTrait.num("age", 25),
                  UserTrait.bool("isPremium", true),
                  UserTrait.dateTime("lastLogin", DateTime.now()),
                ];
                SurvicateSdk.setUserTraits(traits);
              },
            ),
            TextButton(
              child: const Text('Reset'),
              onPressed: () {
                SurvicateSdk.reset();
              },
            ),
          ],
        ),
      ),
    );
  }
}

问题反馈

如果您遇到任何问题或有改进建议,请通过以下方式联系我们:

感谢您的支持和理解!

希望这个指南能帮助您顺利集成和使用survicate_sdk插件。如果有更多问题,欢迎随时提问!


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

1 回复

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


当然,以下是一个关于如何在Flutter项目中集成和使用survicate_sdk插件的示例代码案例。这个示例将展示如何初始化Survicate SDK,并展示一个简单的调研弹窗。

1. 添加依赖

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

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

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

2. 初始化Survicate SDK

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

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

void main() {
  // 初始化Survicate SDK
  Survicate.initialize(
    apiKey: '你的Survicate API Key',  // 请替换为你的Survicate API Key
    userId: '用户ID',  // 可选,用于标识用户
    traits: {  // 可选,用于传递用户属性
      'email': 'user@example.com',
      'name': '用户名称',
    },
  );

  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_sdk/survicate_sdk.dart';

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

class _MyHomePageState extends State<MyHomePage> {

  void _showSurvey() async {
    try {
      // 展示调研弹窗
      await Survicate.showSurvey(
        surveyId: '你的调研ID',  // 请替换为你的Survicate调研ID
      );
    } catch (e) {
      // 处理错误
      print('Error showing survey: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Survicate SDK Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _showSurvey,
          child: Text('Show Survey'),
        ),
      ),
    );
  }
}

4. 运行应用

确保你已经正确设置了Survicate API Key和调研ID,然后运行你的Flutter应用。点击按钮后,应该会看到一个Survicate调研弹窗出现。

注意事项

  1. API Key和调研ID:请确保你使用的是有效的Survicate API Key和调研ID。
  2. 用户数据:在初始化SDK时,你可以传递用户ID和用户属性(traits),这些信息将帮助Survicate更好地定制调研内容。
  3. 错误处理:在实际应用中,你应该添加更多的错误处理逻辑,以确保在展示调研时能够妥善处理各种异常情况。

这个示例代码展示了如何在Flutter应用中集成和使用survicate_sdk插件。你可以根据实际需求进一步自定义和扩展。

回到顶部