Flutter用户反馈插件zonkafeedback_sdk的使用

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

Flutter用户反馈插件zonkafeedback_sdk的使用

Zonka Feedback Flutter SDK

Zonka Feedback Flutter SDK需要以下条件:

  • Zonka Feedback账户:一个活跃的Zonka Feedback账户。
  • SDK Token:获取你想要实现的调查的SDK令牌。
  1. 创建一个Zonka Feedback账户。
  2. 创建一个新的调查,包含所需的问题。
  3. 导航到“分发”菜单 → “内嵌应用”标签。
  4. 启用开关以查看你的SDK令牌。

以下是将SDK集成到应用程序中的步骤:

  1. 学习更多关于创建调查的信息,请访问Zonka Feedback帮助文档

最小要求

  • Flutter:版本 3.0.0 或更高。
  • Android
    • CompileSdk 版本:34 或更高。
    • Android Gradle 插件:8.1.0 或更高。
  • iOS:iOS 14 或更高。

安装

在您的 pubspec.yaml 文件中添加 Zonka Feedback SDK 作为依赖项:

dependencies:
  zonkafeedback_sdk: <latest_version>

配置

iOS配置

在您的 Info.plist 文件中添加以下片段:

  <key>NSAppTransportSecurity</key>
  <dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
  </dict>

初始化

在您的应用程序主文件(例如 lib/main.dart)中初始化 SDK:

import 'package:zonkafeedback_sdk/zonkafeedback_sdk.dart';

class _ZonkaFeedBackSurveyState extends State<ZonkaFeedBackSurvey> with WidgetsBindingObserver {
  [@override](/user/override)
  void initState() {
    super.initState();
    WidgetsBinding.instance.addObserver(this);
    ZFSurvey().init(
      token: '{{SDK_TOKEN}}', // 替换为您的SDK令牌
      zfRegion: '{{REGION}}', // 选项:US, EU, IN
      context: context,
      displayType: 'popup', // 显示类型:popup或slide-up
      displayHeight: 1, // 显示高度,默认值为1
    );
  }

  [@override](/user/override)
  void didChangeAppLifecycleState(AppLifecycleState state) {
    ZFSurvey().sendAppLifecycleState(state);
    super.didChangeAppLifecycleState(state);
  }
}

调查显示配置选项

要配置调查的显示类型,请使用以下选项与 displayType

  • popup:在屏幕中心显示调查弹窗。
  • slide-up:显示调查为底部滑出窗口。

要配置调查的显示高度,请传递值给 displayHeight: 值应在 1 到 2 之间。如果没有传递,则默认值为 1。

设置

要配置并启动调查在您的应用程序中:

import 'package:zonkafeedback_sdk/zonkafeedback_sdk.dart';

ZFSurvey().startSurvey();

可选参数

  1. 发送设备详情 发送设备详情(操作系统、版本、IP地址、设备类型)与响应一起。默认启用。
ZFSurvey().sendDeviceDetails(true);
  1. 发送自定义属性 添加额外数据(例如屏幕名称、订单ID)到响应。
Map&lt;String, String&gt; properties = {
  'property1': 'value1',
  'property2': 'value2',
};

ZFSurvey().sendCustomAttributes(properties);

认证登录访客

通过传递用户的详细信息(姓名、电子邮件、手机号码或唯一ID)来识别用户:

Map&lt;String, dynamic&gt; properties = {
  'contact_name': 'Robin James',
  'contact_email': 'robin@example.com',
  'contact_uniqueId': '1XJ2',
  'contact_mobile': '+14234XXXX',
};

ZFSurvey().userInfo(properties);

清除访客属性

清除退出时的数据:

ZFSurvey().clear();

示例代码

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

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(const MyApp());
}

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

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: ZonkaFeedBackSurvey(),
    );
  }
}

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

  [@override](/user/override)
  State<ZonkaFeedBackSurvey> createState() => _ZonkaFeedBackSurveyState();
}

class _ZonkaFeedBackSurveyState extends State<ZonkaFeedBackSurvey>
    with WidgetsBindingObserver {
  [@override](/user/override)
  void initState() {
    ZFSurvey().init(
        token: '6M1Sol',
        zfRegion: 'IN',
        context: context,
        displayType: 'popup',
        displayHeight: 1.5);
    WidgetsBinding.instance.addObserver(this);
    super.initState();
  }

  [@override](/user/override)
  void dispose() {
    WidgetsBinding.instance.removeObserver(this);
    super.dispose();
  }

  [@override](/user/override)
  void didChangeAppLifecycleState(AppLifecycleState state) {
    ZFSurvey().sendAppLifecycleState(state);
    super.didChangeAppLifecycleState(state);
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          Container(
            alignment: Alignment.center,
            child: ElevatedButton(
              onPressed: () {
                Map&lt;String, dynamic&gt; properties = {
                  'contact_name': 'Robin James',
                  'contact_email': 'manavgarg@example.com',
                  'contact_uniqueId': 'fhebfkebd',
                };

                ZFSurvey()
                    .sendDeviceDetails(true)
                    .sendCustomAttributes(properties)
                    .startSurvey();
              },
              style: ElevatedButton.styleFrom(
                backgroundColor: Colors.blue,
              ),
              child: const Text(
                'START SURVEY',
                style: TextStyle(color: Colors.white),
              ),
            ),
          ),
          SizedBox(
            height: 20,
          ),
          Container(
            alignment: Alignment.center,
            child: ElevatedButton(
              onPressed: () {
                ZFSurvey().clear();
              },
              style: ElevatedButton.styleFrom(
                backgroundColor: Colors.blue,
              ),
              child: const Text(
                'CLEAR VALUES',
                style: TextStyle(color: Colors.white),
              ),
            ),
          ),
        ],
      ),
    );
  }
}

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

1 回复

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


当然,以下是一个关于如何在Flutter项目中集成和使用 zonkafeedback_sdk 插件的示例代码案例。这个插件通常用于收集用户的反馈。

1. 添加依赖

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

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

然后运行 flutter pub get 来获取依赖。

2. 初始化插件

在你的 Flutter 应用的入口文件(通常是 main.dart)中,你需要初始化 zonkafeedback_sdk。你需要提供你的 ZonkaFeedback 项目的 API Key。

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

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 ZonkaFeedback SDK
  ZonkaFeedback.instance.init(
    apiKey: '你的API_KEY', // 替换为你的实际API Key
    environment: 'production', // 或 'development'
    user: User(
      userId: '用户ID', // 替换为实际用户ID,可以是匿名ID或真实用户ID
      email: '用户邮箱', // 可选
      name: '用户名', // 可选
    ),
  );

  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('Flutter Demo Home Page'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            // 打开反馈页面
            ZonkaFeedback.instance.showFeedbackForm();
          },
          child: Text('提供反馈'),
        ),
      ),
    );
  }
}

3. 用户模型(User)

在上面的代码中,我们使用了 User 模型来初始化用户信息。这个模型通常包含以下字段:

class User {
  final String userId;
  final String? email;
  final String? name;

  User({
    required this.userId,
    this.email,
    this.name,
  });
}

注意:实际使用时,User 类是由 zonkafeedback_sdk 插件提供的,这里只是为了说明其结构。

4. 显示反馈表单

在上面的 MyHomePage 类中,我们创建了一个按钮,当用户点击该按钮时,会显示反馈表单。这是通过调用 ZonkaFeedback.instance.showFeedbackForm() 方法实现的。

5. 处理反馈提交(可选)

你还可以监听反馈提交事件,以便在用户提交反馈后执行一些操作。这通常涉及到设置回调或监听器。具体实现方式可能会根据插件版本有所不同,请参考插件的官方文档。

注意事项

  • 确保你已经正确设置了 ZonkaFeedback 项目,并获取了有效的 API Key。
  • 在生产环境中,请确保正确处理用户隐私和数据安全。
  • 插件的具体方法和类可能会随着版本更新而变化,请参考最新的官方文档。

这个示例展示了如何在 Flutter 应用中集成和使用 zonkafeedback_sdk 插件来收集用户反馈。希望这对你有所帮助!

回到顶部