本指南介绍了如何使用 Unity 在应用中集成应用内评价。如果您使用的是 Kotlin 或 Java、原生代码或 Unreal Engine,请参阅单独的集成指南。
Unity SDK 概览
Play 应用内评价 API 是 Play Core SDK 系列的一部分。Unity API 提供了一个 ReviewManager 类,用于通过 RequestReviewFlow 和 LaunchReviewFlow 方法请求和启动流程。发出请求后,您的应用可以使用 ReviewErrorCode 检查请求的状态。
设置您的开发环境
OpenUPM-CLI
如果您已安装 OpenUPM CLI,则可以使用以下命令安装 OpenUPM 注册表:
openupm add com.google.play.reviewOpenUPM
依次选择 Unity 菜单选项 Edit(修改)> Project Settings(项目设置)> Package Manager(资源包管理器),打开资源包管理器设置。
在资源包管理器窗口中,将 OpenUPM 添加为限定范围的注册表:
Name: package.openupm.com URL: https://package.openupm.com Scopes: com.google.external-dependency-manager com.google.play.common com.google.play.core com.google.play.review依次选择 Unity 菜单选项 Window(窗口)> Package Manager(资源包管理器),打开资源包管理器菜单。
在管理器范围下拉菜单中,选择 My Registries(我的注册表)。
从资源包列表中选择 Google Play Integrity plugin for Unity(适用于 Unity 的 Google Play Integrity 插件)资源包,然后按 Install(安装)。
从 GitHub 导入
从 GitHub 下载最新的
.unitypackage版本。导入
.unitypackage文件,方法是依次选择 Unity 菜单选项 Assets(资源)> Import package(导入资源包)> Custom Package(自定义资源包),然后导入所有项目。
创建 ReviewManager
创建 ReviewManager 的实例,用于处理您的应用与 Google Play API 之间的通信。
using Google.Play.Review;
// Create instance of ReviewManager
private ReviewManager _reviewManager;
// ...
_reviewManager = new ReviewManager();
请求 ReviewInfo 对象
请遵循有关何时请求应用内评价的指南,确定在应用的用户流的哪些阶段适合提示用户进行评价(例如,在用户关闭游戏关卡结束时的摘要界面后)。当您的应用接近其中某个时间点时,使用 ReviewManager 实例创建异步操作,如以下示例所示:
var requestFlowOperation = _reviewManager.RequestReviewFlow();
yield return requestFlowOperation;
if (requestFlowOperation.Error != ReviewErrorCode.NoError)
{
// Log error. For example, using requestFlowOperation.Error.ToString().
yield break;
}
_playReviewInfo = requestFlowOperation.GetResult();
如果调用成功,API 会返回应用启动应用内评价流程所需的 PlayReviewInfo 对象。在示例中,调用是在协程内进行的,以执行异步操作(这不会阻塞主线程)。由于调用是异步发出的,最多可能只需要几秒钟的时间,因此应用应该在到达用户流中要显示应用内评价的阶段前发出调用。
启动应用内评价流程
应用收到 PlayReviewInfo 实例后,便可启动应用内评价流程。PlayReviewInfo 对象仅在有限的时间内有效,因此您的应用不应等待太长时间才启动流程。
var launchFlowOperation = _reviewManager.LaunchReviewFlow(_playReviewInfo);
yield return launchFlowOperation;
_playReviewInfo = null; // Reset the object
if (launchFlowOperation.Error != ReviewErrorCode.NoError)
{
// Log error. For example, using launchFlowOperation.Error.ToString().
yield break;
}
// The flow has finished. The API does not indicate whether the user
// reviewed or not, or even whether the review dialog was shown. Thus, no
// matter the result, we continue our app flow.
后续步骤
测试应用的应用内评价流程,以验证您的集成是否正常运行。