集成应用内评价 (Unity)

本指南介绍如何使用 Unity 在应用中集成应用内评价。如果您使用 Kotlin 或 Java原生代码Unreal Engine,则有单独的集成指南。

Unity SDK 概览

Play 应用内评价 API 是 Play Core SDK 系列的一部分。适用于 Unity 的 API 提供了一个 ReviewManager 类,用于使用 RequestReviewFlowLaunchReviewFlow 方法请求和启动流程。发出请求后,您的应用可以使用 ReviewErrorCode 检查请求的状态。

设置您的开发环境

OpenUPM-CLI

如果您已安装 OpenUPM CLI,可以使用以下命令安装 OpenUPM 注册表

openupm add com.google.play.review

OpenUPM

  1. 通过选择 Unity 菜单选项 Edit > Project Settings > Package Manager 打开 包管理器设置

  2. 将 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
    
  3. 通过选择 Unity 菜单选项 Window > Package Manager 打开 包管理器菜单

  4. 将管理器范围下拉菜单设置为选择 My Registries

  5. 从包列表中选择 Google Play Integrity plugin for Unity 包,然后按 Install

从 GitHub 导入

  1. 从 GitHub 下载最新的 .unitypackage 发布。

  2. 通过选择 Unity 菜单选项 Assets > Import package > Custom Package 并导入所有项目来导入 .unitypackage 文件。

创建 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.

后续步骤

测试您的应用的应用内评价流程 以验证您的集成是否正常工作。