Flutter应用内评论插件in_app_review的使用

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

Flutter应用内评论插件in_app_review的使用

描述

in_app_review 是一个Flutter插件,它允许在不关闭应用程序的情况下显示一个评论弹窗,用户可以在其中为您的应用留下评价。或者,您也可以通过深度链接打开商店列表。

该插件在Android上使用 In-App Review API,而在iOS/MacOS上则使用 SKStoreReviewController

In-App Review Android Demo In-App Review iOS Demo

使用方法

requestReview()

以下代码触发了应用内的评论提示。此功能不应该频繁使用,因为底层API对这一特性实施严格的配额限制,以确保良好的用户体验。

import 'package:in_app_review/in_app_review.dart';

final InAppReview inAppReview = InAppReview.instance;

if (await inAppReview.isAvailable()) {
    inAppReview.requestReview();
}

建议:

  • 在用户已经体验了您的应用足够长的时间后使用此功能,例如完成游戏关卡或几天之后。
  • 尽量少用,否则不会弹出评论窗口。

避免:

  • 不要通过按钮触发此功能,因为它只在底层API未超过配额时工作。(Android
  • 不要在用户正在进行任务中途打扰他们。

注意:在Android上测试requestReview()并不是简单的运行应用程序,而是需要遵循特定的测试步骤,请参阅测试部分获取更多信息。


openStoreListing()

以下代码将根据操作系统打开Google Play Store(Android)、App Store(iOS & MacOS)或Microsoft Store(Windows)。如果您想永久提供一个按钮或其他调用操作来让用户留下评论,则可以使用此方法,因为它不受配额限制。

import 'package:in_app_review/in_app_review.dart';

final InAppReview inAppReview = InAppReview.instance;

inAppReview.openStoreListing(appStoreId: '...', microsoftStoreId: '...');
  • appStoreId 仅在iOS和MacOS上需要,并且可以在App Store Connect的“General > App Information > Apple ID”中找到。
  • microsoftStoreId 仅在Windows上需要。

指南

请参考以下官方指南:

由于存在显示次数的配额限制,您不应通过按钮或其他“调用行动”选项触发requestReview()。相反,您可以可靠地通过openStoreListing()重定向用户到您的商店列表。

测试(请仔细阅读)

Android

为了测试requestReview(),您必须将应用程序上传到Play Store。推荐的方法是构建一个应用程序包并通过内部应用程序共享上传。

真实评论只能在生产轨道上使用requestReview()创建。对于其他轨道和内部应用程序共享,提交按钮被禁用以强调这一点。

如果在此过程中遇到问题,许多开发人员也遇到了类似的困扰,请参考下面的故障排除表格或完整的官方说明

故障排除表格
问题 解决方案
应用尚未在Play Store发布。 应用不需要发布即可测试,但应用的applicationID必须至少在内部测试轨道中可用。
用户账户无法评论该应用。 应用必须出现在用户的Google Play库中。要将应用添加到用户的库中,请使用该用户账户从Play Store下载应用。
主账户不是在Play Store中选择的。 当设备上有多个账户时,确保主账户是在Play Store中选择的那个。
用户账户受保护(例如,企业账户)。 使用Gmail账户。
用户已经评论过该应用。 直接从Play Store删除评论。
已达到配额限制。 使用内部测试轨道内部应用程序共享
设备上的Google Play Store或Google Play Services存在问题。 这通常发生在Play Store被侧载到设备上时。使用具有有效版本的Play Store和Google Play Services的不同设备。

iOS

requestReview()可以通过iOS模拟器或物理设备进行测试。请注意,当通过TestFlight测试时,requestReview()没有任何效果,如文档所述。

同样,真实评论只能在生产环境中使用requestReview()创建。当本地测试时,提交按钮被禁用以强调这一点。

openStoreListing()只能通过物理设备测试,因为iOS模拟器没有安装App Store。

MacOS

此插件可以通过本地运行您的MacOS应用程序进行测试。

跨平台兼容性

功能 Android iOS MacOS Windows
isAvailable()
requestReview()
openStoreListing()

要求

Android

需要Android 5 Lollipop(API 21)或更高版本,且必须安装Google Play Store。

iOS

需要iOS 10.3或更高版本。

MacOS

需要MacOS 10.14或更高版本。

示例代码

以下是in_app_review插件的完整示例代码:

import 'dart:io';

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

void main() => runApp(const InAppReviewExampleApp());

enum Availability { loading, available, unavailable }

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

  @override
  InAppReviewExampleAppState createState() => InAppReviewExampleAppState();
}

class InAppReviewExampleAppState extends State<InAppReviewExampleApp> {
  final InAppReview _inAppReview = InAppReview.instance;

  String _appStoreId = '';
  String _microsoftStoreId = '';
  Availability _availability = Availability.loading;

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

    WidgetsBinding.instance.addPostFrameCallback((_) async {
      try {
        final isAvailable = await _inAppReview.isAvailable();

        setState(() {
          // This plugin cannot be tested on Android by installing your app
          // locally. See https://github.com/britannio/in_app_review#testing for
          // more information.
          _availability = isAvailable && !Platform.isAndroid
              ? Availability.available
              : Availability.unavailable;
        });
      } catch (_) {
        setState(() => _availability = Availability.unavailable);
      }
    });
  }

  void _setAppStoreId(String id) => _appStoreId = id;

  void _setMicrosoftStoreId(String id) => _microsoftStoreId = id;

  Future<void> _requestReview() => _inAppReview.requestReview();

  Future<void> _openStoreListing() => _inAppReview.openStoreListing(
        appStoreId: _appStoreId,
        microsoftStoreId: _microsoftStoreId,
      );

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'In App Review Example',
      home: Scaffold(
        appBar: AppBar(title: const Text('In App Review Example')),
        body: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text('In App Review status: ${_availability.name}'),
            TextField(
              onChanged: _setAppStoreId,
              decoration: const InputDecoration(hintText: 'App Store ID'),
            ),
            TextField(
              onChanged: _setMicrosoftStoreId,
              decoration: const InputDecoration(hintText: 'Microsoft Store ID'),
            ),
            ElevatedButton(
              onPressed: _requestReview,
              child: const Text('Request Review'),
            ),
            ElevatedButton(
              onPressed: _openStoreListing,
              child: const Text('Open Store Listing'),
            ),
          ],
        ),
      ),
    );
  }
}

以上就是关于in_app_review插件的详细介绍和使用方法。希望这些信息能帮助您更好地理解和使用这个强大的工具!如果有任何问题或改进建议,欢迎随时提出。


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

1 回复

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


当然,以下是如何在Flutter应用中使用in_app_review插件的详细代码示例。这个插件允许你在应用内请求用户进行评论或评分,从而提高应用的可见度和用户满意度。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  in_app_review: ^3.0.0  # 请检查最新版本号

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

2. 导入插件

在你的Dart文件中(例如main.dart),导入in_app_review插件:

import 'package:in_app_review/in_app_review.dart';

3. 初始化插件并请求评论

你可以在应用中的适当位置(例如用户完成某个重要任务后)请求评论。以下是一个完整的示例:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('In-App Review Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: _requestReview,
            child: Text('Request In-App Review'),
          ),
        ),
      ),
    );
  }

  Future<void> _requestReview() async {
    final InAppReviewController controller = InAppReview.instance;

    // Check if the platform is supported.
    if (!controller.isAvailable) {
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(content: Text('In-app reviews are not available on this platform.')),
      );
      return;
    }

    // Request in-app review.
    InAppReviewResult result = await controller.requestReview();

    // Handle the result.
    if (result == InAppReviewResult.requested) {
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(content: Text('Review requested successfully.')),
      );
    } else if (result == InAppReviewResult.error) {
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(content: Text('An error occurred while requesting a review.')),
      );
    } else if (result == InAppReviewResult.notAvailable) {
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(content: Text('Review is not available at this time.')),
      );
    }
  }
}

4. 处理用户反馈

请注意,in_app_review插件不会直接提供用户是否提交评论或评分的反馈。你只能知道请求是否被成功发送。

5. 测试

在开发过程中,你可以使用Google Play Console的测试功能来模拟和测试应用内评论请求。确保你的应用已经发布到Alpha或Beta测试轨道,并且你已经添加了测试者。

注意事项

  • 不要频繁请求用户进行评论,这可能会影响用户体验。
  • 确保在请求评论之前,用户已经完成了某个重要任务或体验了应用的核心功能。
  • 遵守Google Play和App Store的指南和政策,以避免滥用或不当使用应用内评论功能。

通过上述步骤,你应该能够在Flutter应用中成功集成并使用in_app_review插件。

回到顶部