整合應用程式內審查 (Unity)

本導覽說明如何在應用程式中使用 Unity 整合應用程式內審查。如果您使用的是 Kotlin 或 Java原生程式碼,分別有不同的整合導覽可供查閱。

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 新增為 Package Manager 視窗中的有範圍限制的登錄檔:

    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」,即可開啟「package manager」選單。

  4. 將管理員範圍下拉式選單設為「我的註冊中心」

  5. 從套件清單中選取「Google Play Integrity 外掛程式 (適用於 Unity)」套件,然後按下「Install」

從 GitHub 匯入

  1. 從 GitHub 下載最新的 .unitypackage 版本。

  2. 依序選取 Unity 選單選項「Assets」>「Import package」>「Custom Package」,然後匯入所有項目,即可匯入 .unitypackage 檔案。

建立 ReviewManager

建立 ReviewManager 執行個體以處理應用程式和 API 之間的通訊。

// 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 requestFlowOperation.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.

後續步驟

測試應用程式內評論流程,以確認這項整合機制能正常運作。