Flutter应用评分提示插件app_review_helper的使用

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

Flutter应用评分提示插件app_review_helper的使用

简介

app_review_helper 是一个 Flutter 插件,它可以帮助你在应用内请求用户评分,同时提供了一些自定义对话框的功能。以下是该插件的一些关键特性和使用方法。

特性

  • 支持 Android 和 iOS 平台。
  • 提供多种内置对话框样式。
  • 可以自定义对话框。
  • 支持最小调用次数和最小天数条件。
  • 支持版本控制,可以指定某些版本不显示评分请求。
  • 支持调试模式。

使用方法

初始化

首先,你需要在你的 Flutter 项目中添加 app_review_helper 依赖。在 pubspec.yaml 文件中添加以下内容:

dependencies:
  app_review_helper: ^latest_version

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

基本用法

以下是一个基本的初始化示例:

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

void main() {
  runApp(MaterialApp(
    home: const MyApp(),
    theme: ThemeData(useMaterial3: false),
  ));
}

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

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

class _MyAppState extends State<MyApp> {
  final instance = AppReviewHelper.instance;

  @override
  void initState() {
    init();
    super.initState();
  }

  Future<void> init() async {
    await instance.initial(
      reviewDialog: DefaultReviewDialog(
        context: context,
        satisfactionText: 'How do you feel about this app?',
        satisfactionLikeText: 'Like',
        satisfactionLikeIcon: const Icon(Icons.thumb_up),
        satisfactionDislikeText: 'Dislike',
        satisfactionDislikeTextColor: Colors.grey,
        satisfactionDislikeIcon: const Icon(Icons.thumb_down, color: Colors.grey),
        opinionText: 'Please let us know what we can do to improve this app',
        opinionSubmitText: 'Submit',
        opinionCancelText: 'Cancel',
        opinionAnonymousText: 'Completely anonymous',
        opinionFeedback: (opinion) {
          print(opinion);
        },
        barrierColor: null,
      ),
      minDays: 3,
      minCalls: 3,
      noRequestVersions: ['<=1.0.0', '3.0.0', '>4.0.0'],
      remindedVersions: ['2.0.0', '3.0.0'],
      keepRemind: true,
      duration: const Duration(seconds: 1),
      isDebug: false,
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Review Helper')),
      body: const Center(child: Text('Example')),
    );
  }
}

内置对话框

app_review_helper 提供了多种内置对话框,你可以根据需要选择使用:

  • DefaultReviewDialog:默认对话框,包含喜欢和不喜欢的图标。
  • AdaptiveReviewDialog:适应不同平台(iOS 和 macOS)的对话框。
  • FriendlyReviewDialog:基于 DefaultReviewDialog,但使用笑脸和愁脸图标。
  • FriendlyAdaptiveReviewDialog:基于 AdaptiveReviewDialog,但使用笑脸和愁脸图标。

例如,使用 AdaptiveReviewDialog

await instance.initial(
  reviewDialog: AdaptiveReviewDialog(
    context: context,
    opinionFeedback: (opinion) {
      print(opinion);
    },
  ),
  minDays: 3,
  minCalls: 3,
  keepRemind: true,
  isDebug: false,
);

自定义对话框

你也可以创建自己的对话框,实现 ReviewDialog 接口:

class CustomReviewDialog implements ReviewDialog {
  CustomReviewDialog();

  @override
  FutureOr<bool?> satisfaction() async {
    // 显示自定义满意度对话框
    bool? result = await showDialog<bool>(
      context: context,
      builder: (context) => AlertDialog(
        title: Text('How do you feel about this app?'),
        actions: [
          TextButton(
            onPressed: () => Navigator.of(context).pop(true),
            child: Text('Like'),
          ),
          TextButton(
            onPressed: () => Navigator.of(context).pop(false),
            child: Text('Dislike'),
          ),
        ],
      ),
    );
    return result;
  }

  @override
  FutureOr<void> opinion() async {
    // 显示自定义意见对话框
    String? opinion = await showDialog<String>(
      context: context,
      builder: (context) => AlertDialog(
        title: Text('Please let us know what we can do to improve this app'),
        content: TextField(
          decoration: InputDecoration(hintText: 'Your feedback'),
          maxLines: 3,
          onChanged: (value) {},
        ),
        actions: [
          TextButton(
            onPressed: () => Navigator.of(context).pop(null),
            child: Text('Cancel'),
          ),
          TextButton(
            onPressed: () => Navigator.of(context).pop('User feedback'),
            child: Text('Submit'),
          ),
        ],
      ),
    );
    if (opinion != null) {
      print(opinion);
    }
  }
}

然后在初始化时使用自定义对话框:

await instance.initial(
  reviewDialog: CustomReviewDialog(),
  minDays: 3,
  minCalls: 3,
  keepRemind: true,
  isDebug: false,
);

打开应用商店

如果你希望直接打开应用商店页面,可以使用 openStore 方法:

instance.openStore();

返回值

app_review_helper 提供了多种返回值,帮助你了解请求的状态:

  • ReviewState.unSupportedPlatform:当前平台不支持。
  • ReviewState.unavailable:当前无法请求应用内评分。
  • ReviewState.keepRemindDisabled:已禁用重复提醒。
  • ReviewState.noRequestVersion:当前版本满足不请求评分的条件。
  • ReviewState.completed:评分请求完成。
  • ReviewState.compeletedInDebugMode:在调试模式下完成评分请求。
  • ReviewState.notSatisfiedWithMinCallsAndDays:不满足最小调用次数和最小天数条件。
  • ReviewState.notSatisfiedWithMinCalls:不满足最小调用次数条件。
  • ReviewState.notSatisfiedWithMinDays:不满足最小天数条件。

示例代码

以下是一个完整的示例代码,展示了如何使用 app_review_helper 插件:

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

void main() {
  runApp(MaterialApp(
    home: const MyApp(),
    theme: ThemeData(useMaterial3: false),
  ));
}

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

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

class _MyAppState extends State<MyApp> {
  final instance = AppReviewHelper.instance;

  @override
  void initState() {
    init();
    super.initState();
  }

  Future<void> init() async {
    debugPrint('DefaultReviewDialog');
    await instance.initial(
      reviewDialog: DefaultReviewDialog(
        context: context,
        opinionFeedback: (opinion) {
          debugPrint(opinion);
        },
      ),
      minCalls: 0,
      minDays: 0,
      keepRemind: true,
      isDebug: false,
    );

    debugPrint('AdaptiveReviewDialog');
    if (mounted) {
      await instance.initial(
        reviewDialog: AdaptiveReviewDialog(
          context: context,
          opinionFeedback: (opinion) {
            debugPrint(opinion);
          },
        ),
        minCalls: 0,
        minDays: 0,
        keepRemind: true,
        isDebug: false,
      );
    }

    debugPrint('FriendlyReviewDialog');
    if (mounted) {
      await instance.initial(
        reviewDialog: FriendlyReviewDialog(
          context: context,
          opinionFeedback: (opinion) {
            debugPrint(opinion);
          },
        ),
        minCalls: 0,
        minDays: 0,
        keepRemind: true,
        isDebug: false,
      );
    }

    debugPrint('FriendlyAdaptiveReviewDialog');
    if (mounted) {
      await instance.initial(
        reviewDialog: FriendlyAdaptiveReviewDialog(
          context: context,
          opinionFeedback: (opinion) {
            debugPrint(opinion);
          },
        ),
        minCalls: 0,
        minDays: 0,
        keepRemind: true,
        isDebug: false,
      );
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Review Helper')),
      body: const Center(child: Text('Example')),
    );
  }
}

通过以上示例代码,你可以看到如何在 Flutter 应用中使用 app_review_helper 插件来请求用户评分,并处理用户的反馈。希望这些信息对你有所帮助!


更多关于Flutter应用评分提示插件app_review_helper的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter应用评分提示插件app_review_helper的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,关于Flutter应用评分提示插件app_review_helper的使用,下面是一个详细的代码案例,展示如何在Flutter应用中集成并使用该插件来提示用户进行评分。

步骤一:添加依赖

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

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

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

步骤二:导入插件

在你的Dart文件中导入app_review_helper插件:

import 'package:app_review_helper/app_review_helper.dart';

步骤三:配置权限(可选)

对于Android,你可能需要在AndroidManifest.xml中添加一些权限,尽管app_review_helper插件通常不需要特别的权限来请求评分。但是,如果你的应用有其他功能需要权限,请确保它们已经配置好。

对于iOS,通常不需要额外的配置,因为iOS的评分提示是通过SKStoreReviewController来实现的,该API不需要额外的权限。

步骤四:实现评分提示逻辑

在你的应用中,你可以根据用户的某些行为(如完成某个任务、使用应用多次等)来触发评分提示。以下是一个简单的例子,展示如何在按钮点击时请求评分:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('App Review Helper Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              // 检查是否支持评分提示
              bool canRequestReview = await AppReviewHelper.canRequestReview;
              if (canRequestReview) {
                // 请求用户评分
                AppReviewHelper.requestReview().then((result) {
                  if (result == AppReviewResult.success) {
                    print("评分请求成功");
                  } else if (result == AppReviewResult.failed) {
                    print("评分请求失败");
                  } else if (result == AppReviewResult.notSupported) {
                    print("当前平台不支持评分提示");
                  } else if (result == AppReviewResult.userDeclined) {
                    print("用户拒绝了评分提示");
                  }
                });
              } else {
                print("当前环境不支持评分提示");
              }
            },
            child: Text('请求评分'),
          ),
        ),
      ),
    );
  }
}

说明

  1. 检查是否支持评分提示:使用AppReviewHelper.canRequestReview来检查当前环境是否支持评分提示。
  2. 请求用户评分:如果支持评分提示,则调用AppReviewHelper.requestReview()方法来请求用户评分。该方法返回一个Future<AppReviewResult>,你可以根据返回结果进行相应的处理。

注意事项

  • 频繁地请求用户评分可能会导致用户反感,因此建议在合适的时间点(如用户完成某个重要任务后)请求评分。
  • 不同平台的评分提示机制有所不同,因此在实际使用中,请确保你的应用在不同平台上都能正确运行。

通过上述步骤,你就可以在Flutter应用中集成并使用app_review_helper插件来提示用户进行评分了。

回到顶部