設定

本頁面說明如何設定應用程式、遊戲或 SDK,以便使用 Play Integrity API。如要整合 API,您必須擁有 Google Cloud 專案,才能開始提出要求。接著,您可以在 Google Play 管理中心 (適用於應用程式) 或 Google Play SDK 管理中心 (適用於 SDK) 連結 Google Cloud 專案。您必須連結專案,才能使用其他設定選項、測試功能、API 報表,以及要求提高每日要求配額。

啟用 Play Integrity API

凡是會呼叫 Play Integrity API 的應用程式或 SDK,都必須有 Google Cloud 專案,才能使用 API 並監控用量。這是所有整合程序都必須執行的第一步。您可以在 Google Cloud 控制台啟用 Play Integrity API,也可以直接跳到將雲端專案連結至 Google Play 的步驟,系統會自動啟用 Play Integrity API。

請在 Google Cloud 控制台中建立新的雲端專案,或選擇要搭配 Play Integrity API 使用的現有雲端專案。

  1. 前往「API 和服務」。
  2. 選取「啟用 API 和服務」。
  3. 搜尋「Play Integrity API」
  4. 按一下「啟用」。

完成後,即可將 Play Integrity API 整合到應用程式中。如要使用進階功能及提高配額,請繼續進行連結步驟。

連結至 Google Play (建議)

您可以按照下列操作說明,將 Google Cloud 專案連結至應用程式或 SDK。

Google Play 應用程式和遊戲

在 Google Play 發行的應用程式,應在 Google Play 管理中心連結 Google Cloud 專案,才能啟用額外功能,並要求提高每日 API 配額。

  1. 開啟 Google Play 管理中心,然後選取應用程式。
  2. 前往「由 Google Play 保護」。
  3. 按一下「Play Integrity API」旁邊的「開始」按鈕,前往「Play Integrity API 設定」。
  4. 請按一下「連結雲端專案」按鈕,
  5. 選擇要與 Play Integrity API 搭配使用的 Google Cloud 專案。如果專案尚未啟用 Play Integrity API,系統會在連結時自動啟用。

Play SDK 管理中心 SDK 供應商

SDK 供應商可使用 Google Play SDK 管理中心連結 Google Cloud 雲端專案,將 API 用量歸給 SDK,而非採用該 SDK 的個別應用程式,並啟用其他功能,以及要求提高每日 API 配額。請注意,您必須符合資格條件,才能存取 Google Play SDK 管理中心。

  1. 開啟 Google Play SDK 管理中心,然後選取 SDK。
  2. 前往「SDK 完整性」
  3. 在「Play Integrity API」下方,按一下「連結雲端專案」。
  4. 選擇要與 Play Integrity API 搭配使用的 Google Cloud 雲端專案。如果專案尚未啟用 Play Integrity API,系統會在連結後自動啟用。

瞭解 Play Integrity API 用量限制

應用程式或 SDK 每天最多可提出 10,000 個要求,這項限制與相關聯的 Cloud 專案編號綁定。如果您預期用量會增加,可以申請提高配額。

動作 每日配額 附註
權杖要求 10,000 傳統要求和標準權杖準備作業共用
在 Google 伺服器上解密權杖 10,000 傳統和標準要求共用

調高每日要求數量上限

配額提高與否取決於資格條件。配額增加適用於用戶端權杖產生和伺服器端解密呼叫。處理要求最多可能需要一週。建議您在 Google Cloud 控制台監控 Play Integrity API 用量,並設定配額警告,以免服務中斷。

即使配額較高,仍應繼續將傳統要求限制為不常執行的重要操作,以便保留使用者電池電力和數據用量。

Google Play 應用程式和遊戲

除了在任何其他發行管道外,您的應用程式也必須在 Google Play 上架,這樣您才有資格申請提高配額。您必須在 Play 管理中心將 Google 雲端專案連結至應用程式。未連結專案提出的配額要求會遭到拒絕。

如要申請提高配額,請按照下列步驟操作:

  1. 在 Play 管理中心連結相關 Google Cloud 專案。
  2. 確認您已正確導入 API 邏輯,包括適當的重試策略。
  3. 提交配額要求表單。

Play SDK 管理中心 SDK 供應商

如要提高配額,您必須在 Google Play SDK 管理中心聲明 SDK 擁有權,並將 Cloud 專案連結至 SDK。您必須符合資格條件,才能存取 Google Play SDK 管理中心。

如要申請提高配額,請按照下列步驟操作:

  1. 在 Google Play SDK 管理中心連結 Google Cloud 專案。
  2. 填寫開發人員支援表單。

請在公開的備註欄中,提供 SDK 詳細資料、說明用途、API 要求類型 (標準、傳統或兩者)、要求頻率,以及每日要求數量上限。

將 Play Integrity API 整合到應用程式中

如要將 Play Integrity API 整合到應用程式或 SDK 中,請根據開發環境採取下列其中一種做法:

Kotlin 或 Java

Google 的 Maven 存放區提供了 Play Integrity API 最新 Android 程式庫。請在應用程式的 build.gradle 檔案中新增以下依附元件:

implementation 'com.google.android.play:integrity:1.6.0'

Unity

以下各節將說明如何為 Unity 專案整合及設定 Google Play Integrity API,包括支援的 Unity 版本、安裝方法和環境設定。

支援的 Unity 版本

  • 所有 2019.x、2020.x 及後續推出的新版本都在支援範圍內。
  • 如果您使用 Unity 2018.x,系統可支援 2018.4 以上版本。
  • Unity 2017.x 以下版本不在支援範圍內。

設定開發環境

OpenUPM-CLI

如果已安裝 OpenUPM CLI,可以使用下列指令安裝 OpenUPM 套件:

openupm add com.google.play.integrity

OpenUPM

  1. 在 Unity 選單中,依序選取「Edit」>「專案設定」>「套件管理工具」,開啟套件管理工具設定。

  2. 在「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.integrity
    
  3. 在 Unity 選單中,依序選取「Window」>「Package Manager」,開啟套件管理工具選單。

  4. 設定管理員範圍下拉式選單,選取「My Registries」。

  5. 從套件清單中選取「Google Play Integrity plugin for Unity」套件,然後按一下「Install」。

從 GitHub 匯入

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

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

Unreal Engine

以下各節說明如何整合及設定 Unreal Engine 專案的 Google Play Integrity API。

支援的 Unreal Engine 版本

這個外掛程式支援 Unreal Engine 5.0 和所有後續版本。

設定開發環境

  1. 從 GitHub 存放區下載 Play Unreal Engine 外掛程式。

  2. 將 GooglePlay 資料夾複製到 Unreal Engine 專案的 Plugins 資料夾中。

  3. 開啟 Unreal Engine 專案,然後依序點選「Edit」→「Plugins」。

  4. 搜尋「Google Play」,然後勾選「已啟用」核取方塊。

  5. 重新啟動遊戲專案並觸發建構作業。

  6. 開啟專案的 Build.cs 檔案,並將 PlayIntegrity 模組新增至 PublicDependencyModuleNames:

    using UnrealBuildTool;
    
    public class MyGame : ModuleRules
    {
      public MyGame(ReadOnlyTargetRules Target) : base(Target)
      {
        // ...
    
        PublicDependencyModuleNames.Add("PlayIntegrity");
    
        // ...
      }
    }
    

原生

請按照原生廣告設定指南操作。詳情請參閱 Play Integrity 的原生 API 參考文件。

設定 API 回應 (選用)

API 回應會包含每個要求傳回的預設判定結果。如果您已在 Play 管理中心或 Play SDK 管理中心連結 Cloud 專案,可以自訂 API 回應,納入其他資訊。

預設完整性判定結果

根據預設,Play Integrity API 會在 API 回應中傳回下列完整性判定結果:

回應欄位 值 說明
Play 帳戶詳細資料 LICENSED 使用者擁有應用程式授權。也就是說,使用者是從 Google Play 安裝或更新應用程式。
UNLICENSED 使用者沒有應用程式授權。這可能是因為使用者側載了您的應用程式,或者不是從 Google Play 取得應用程式。
UNEVALUATED 由於未符合條件,系統無法評估授權詳細資料。這可能由許多因素造成,包括:
  • 裝置可信度不足。
  • 使用者未登入 Google Play。
  • Google Play 無法辨識裝置上安裝的應用程式版本。
應用程式完整性 PLAY_RECOGNIZED 應用程式和憑證符合 Google Play 發行的版本。
UNRECOGNIZED_VERSION 憑證或套件名稱與 Google Play 記錄不符。
UNEVALUATED 系統無法評估應用程式完整性,原因是未符合必要條件,例如裝置可信度不足。
裝置完整性 MEETS_DEVICE_INTEGRITY 應用程式在正版且經過認證的 Android 裝置上執行。在 Android 13 以上版本中,有採用專屬硬體支援的證明,可證明裝置系統啟動載入程式已鎖定,且載入的 Android 作業系統是經過認證的裝置製造商映像檔。
空白 (空白值) 執行應用程式的裝置可能遭受攻擊 (例如掛接 API) 或系統遭到入侵 (例如已啟用 Root 權限);或者,應用程式不是在實體裝置上執行 (例如未通過 Google Play 完整性檢查的模擬器)。

Google Play 遊戲電腦版

如果將應用程式發行到 Google Play Games 電腦版,系統就會自動為您選擇加入接收裝置完整性判定結果的額外標籤:

回應欄位 標籤 說明
裝置完整性 MEETS_VIRTUAL_INTEGRITY 應用程式正在 Google Play 服務支援的 Android Emulator 上執行。該模擬器已通過系統完整性檢查,符合主要的 Android 相容性規定。

選用的完整性判定結果

如果您已在 Play 管理中心或 Play SDK 管理中心連結雲端專案,可以選擇加入接收額外資訊。

如要變更,請前往 Play 管理中心,然後前往「由 Google Play 保護」。按一下「Play Integrity API」旁邊的「管理」。點選「變更回應」,編輯並儲存變更。

裝置資訊

deviceIntegrity 判定結果中的其他裝置標籤,可讓您進一步瞭解應用程式執行的裝置環境。如果單一裝置符合多個標籤的條件,就會傳回多個標籤。您可以使用這些標籤,建立分級違規處置策略。舉例來說,相較於只傳回 MEETS_BASIC_INTEGRITY 一個標籤的裝置,您可能會更信任傳回 MEETS_STRONG_INTEGRITY、MEETS_DEVICE_INTEGRITY 和 MEETS_BASIC_INTEGRITY 這三個標籤的裝置。

裝置屬性會指出裝置上 Android 作業系統的 Android SDK 版本。日後可能會擴充其他裝置屬性。

近期裝置活動會傳回一個層級,範圍介於 LEVEL_1 (要求數量偏低) 與 LEVEL_4 (要求數量偏高) 之間。活動層級偏高可能表示裝置用於產生過多權杖,並濫用這些權杖發布至不受信任的裝置。

裝置記憶功能可讓您儲存特定裝置的部分自訂資料,並在日後於同一部裝置重新安裝應用程式時,穩定地擷取這些資料。

選擇加入選用資訊後,API 回應的判定結果會包含新欄位和回應:

回應欄位 標籤 說明
裝置完整性 MEETS_BASIC_INTEGRITY 執行應用程式的裝置通過了基本系統完整性檢查。裝置的系統啟動載入程式可以鎖定或解鎖,啟動狀態則可以是已驗證或未驗證。裝置可能未經認證,在這種情況下,Google 無法提供任何安全性、隱私權或應用程式相容性保證。在 Android 13 以上版本中,MEETS_BASIC_INTEGRITY 判定結果需要由 Google 提供認證 信任根。
MEETS_STRONG_INTEGRITY 應用程式在正版且經過認證的 Android 裝置上執行,且已安裝最新的安全性更新。
  • 在 Android 13 以上版本中,MEETS_STRONG_INTEGRITY判定結果需要 MEETS_DEVICE_INTEGRITY,以及裝置所有分區在過去一年的安全性更新,包括 Android 作業系統分區修補程式和供應商分區修補程式。
  • 在 Android 12 以下版本中,MEETS_STRONG_INTEGRITY 判定結果只需要採用專屬硬體支援的開機完整性證明,不需要裝置安裝最新的安全性更新。因此,使用 MEETS_STRONG_INTEGRITY 時,建議您一併考量 deviceAttributes 欄位中的 Android SDK 版本。
裝置屬性 sdkVersion: 19, 20, ..., 37 裝置上執行的 Android 作業系統 SDK 版本。 傳回的數字會對應至 Build.VERSION_CODES。
空白 (空白值) 由於未符合必要條件,系統不會評估 SDK 版本。在這種情況下,sdkVersion 欄位未設定,因此 deviceAttributes 欄位為空白。可能的原因如下:
  • 裝置可信度不足。
  • 裝置發生技術問題。
過去一小時內,每個應用程式在這部裝置上提出的標準 API 完整性權杖要求 過去一小時內,每個應用程式在這部裝置上提出的傳統 API 完整性權杖要求
近期裝置活動 LEVEL_1 (最低) 10 部以下 5 或少於 5 本
LEVEL_2 11 到 25 6 到 10
LEVEL_3 26 到 50 11 到 15
LEVEL_4 (最高) 超過 50 則 超過 15 個
UNEVALUATED 系統未評估近期裝置活動。可能原因如下:
  • 裝置可信度不足。
  • Google Play 無法辨識裝置上安裝的應用程式版本。
  • 裝置發生技術問題。
裝置記憶 values: bitFirst, bitSecond, bitThird 這些是您過去為特定裝置設定的位元值。每個位元的意義由您決定。這三個位元值預設為 false。
writeDates: yyyymmFirst, yyyymmSecond, yyyymmThird 這些是位元值寫入日期,以世界標準時間表示,精確到年月。每當召回位元設為 true 時,系統就會更新召回位元的寫入日期,並在位元設為 false 時移除。

環境詳細資料

應用程式存取風險會指出是否有其他執行中的應用程式,可能用於螢幕截圖、重疊顯示或控制裝置。Google Play 已知的經驗證無障礙服務會自動從這項判定結果中排除。

Play 安全防護判定會指出裝置是否啟用 Google Play 安全防護,以及是否發現已知惡意軟體。

選擇加入選用資訊後,API 回應的判定結果會包含新欄位和回應:

回應欄位 值 說明
應用程式存取風險判定結果 KNOWN_INSTALLED 應用程式是由 Google Play 安裝,或是裝置製造商在系統分區上預先載入。
KNOWN_CAPTURING 透過 Google Play 安裝或預先載入裝置的應用程式正在執行中,可用於讀取或擷取提出要求的應用程式 (例如螢幕錄影應用程式) 輸入和輸出內容。
KNOWN_CONTROLLING 透過 Google Play 安裝或預先載入裝置的應用程式正在執行中,可用於控制提出要求的應用程式 (例如遙控應用程式) 裝置、輸入和輸出內容。
KNOWN_OVERLAYS 透過 Google Play 安裝或預先載入裝置的應用程式正在執行,可能會在要求應用程式上顯示疊加層。
UNKNOWN_INSTALLED 其他應用程式已安裝,並非由 Google Play 安裝,也不是由裝置製造商在系統分區中預先載入。
UNKNOWN_CAPTURING 其他應用程式正在執行中 (並非由 Google Play 安裝或預先載入至裝置),可用於對提出要求的應用程式 (例如螢幕錄影器應用程式) 讀取/擷取輸入和輸出內容。
UNKNOWN_CONTROLLING 其他應用程式正在執行中 (並非由 Play 安裝,也不是預先載入至裝置),可用於控制提出要求的應用程式 (例如遙控應用程式) 裝置、輸入和輸出內容。
UNKNOWN_OVERLAYS 其他應用程式正在執行 (並非由 Play 安裝,也不是預先載入裝置),可能會在提出要求的應用程式上重疊顯示。
空白 (空白值) 如果未符合必要條件,系統不會評估應用程式存取風險。在這種情況下,appAccessRiskVerdict 欄位會留空。這可能由許多因素造成,包括:
  • 裝置可信度不足。
  • 裝置板型規格不是手機、平板電腦或摺疊式裝置。
  • 裝置搭載的作業系統並非 Android 6 (API 級別 23) 以上版本。
  • Google Play 無法辨識裝置上安裝的應用程式版本。
  • 裝置上的 Google Play 商店版本過舊。
  • 僅限遊戲:使用者帳戶沒有遊戲的 Play 授權。
  • 標準要求與 verdictOptOut 參數搭配使用。
  • 您使用標準要求時,Play Integrity API 程式庫版本不支援標準要求的應用程式存取風險。
Play 安全防護判定結果 NO_ISSUES 已開啟 Play 安全防護,且未在裝置上發現任何應用程式問題。
NO_DATA 已開啟 Play 安全防護,但未執行掃描作業。裝置或 Play 商店應用程式最近可能已重設。
POSSIBLE_RISK 已關閉 Play 安全防護。
MEDIUM_RISK 已開啟 Play 安全防護,並發現裝置上安裝了可能有害的應用程式。
HIGH_RISK 已開啟 Play 安全防護,並發現裝置安裝了危險的應用程式。
UNEVALUATED 未評估 Play 安全防護判定結果。原因是未符合必要條件,例如裝置可信度不足。

調整傳統要求設定 (選用)

如果您只打算提出標準 API 要求,請略過本節步驟。

根據預設,Google Play 會管理回應加密設定,也就是說,後端會呼叫 Google 伺服器來解密判定結果。您也可以自行管理金鑰,在本機安全伺服器環境中解密。

讓 Google 管理回應加密設定 (建議)

建議您允許 Google 產生及管理金鑰,以保護應用程式安全。後端會呼叫 Google Play 伺服器來解密及驗證回應。

管理自己的加密金鑰

如要在本機安全伺服器環境中解密,可以從 Play 管理中心或 Play SDK 管理中心下載加密金鑰。您的應用程式必須在 Google Play 上架,才能使用這項功能。

請務必先確認您的伺服器已正確設定,可以在本機或在 Google Play 伺服器上解密及驗證完整性權杖,之後再前往 Play 管理中心變更回應加密管理策略,以免受到服務中斷影響。

改成由 Google 管理或自行管理加密金鑰

  1. 開啟 Play 管理中心,然後選取應用程式。
  2. 前往「由 Google Play 保護」。
  3. 按一下「Play Integrity API」旁邊的「管理」。
  4. 在「傳統要求」下方,按一下「回應加密設定」旁邊的「編輯」。

如要改用自行管理的金鑰,請按照下列步驟操作:

  1. 選取「管理及下載我的回應加密金鑰」,然後上傳公開金鑰。
  2. 按一下「儲存」,系統就會自動下載加密金鑰。
  3. 更新安全後端伺服器,以便使用這些金鑰在本機解密。

如要改用 Google 代管金鑰,請按照下列步驟操作:

  1. 選取「讓 Google 管理我的回應加密設定 (建議)」。
  2. 按一下 [儲存變更]。