本頁面說明如何設定應用程式、遊戲或 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,也可以直接將 Cloud 專案連結至 Google Play,系統會為您啟用 Play Integrity API。
請在 Google Cloud 控制台中建立新的 Cloud 專案,或選擇要搭配 Play Integrity API 使用的現有 Cloud 專案。
完成後,即可將 Play Integrity API 整合到應用程式中。如要存取進階功能及提高配額,請繼續進行連結步驟。
連結至 Google Play (建議做法)
按照這些操作說明,將應用程式或 SDK 連結至 Google Play。
適用於 Google Play 上的應用程式和遊戲
在 Google Play 上發布的應用程式應在 Google Play 管理中心連結 Google Cloud 專案,啟用其他功能並要求提高每日 API 配額。
- 開啟 Google Play 管理中心,然後選取您的應用程式。
- 依序前往「測試及發布」 >「應用程式完整性」。
- 在「Play Integrity API」下方,按一下「連結 Cloud 專案」。
- 選擇您打算搭配 Play Integrity API 使用的 Google Cloud 專案;如果專案尚未啟用 Play Integrity API,連結後系統會自動啟用。
適用於 Play SDK 管理中心的 SDK 供應商
使用 Google Play SDK 管理中心的 SDK 供應商可以連結 Google Cloud 專案,將 API 用量歸給 SDK,而非採用該 SDK 的個別應用程式,並啟用其他功能,以及要求提高每日 API 配額。請注意,存取 Google Play SDK 管理中心須符合資格條件。
- 開啟 Google Play SDK 管理中心,然後選取您的 SDK。
- 前往「SDK 完整性」
- 在「Play Integrity API」下方,按一下「連結 Cloud 專案」。
- 選擇要搭配 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 Cloud 專案連結至應用程式。系統會拒絕未連結專案的要求。
如要申請提高配額,請按照下列步驟操作:
適用於 Play SDK 管理中心的 SDK 供應商
如要申請增加配額,您必須在 Google Play SDK 管理中心聲明 SDK 擁有權,並將 Cloud 專案連結至 SDK。存取 Google Play SDK 管理中心須符合資格條件。
如要申請提高配額,請按照下列步驟操作:
- 在 Google Play SDK 管理中心連結 Google Cloud 專案。
- 填寫 Google Play 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.integrityOpenUPM
在 Unity 選單中,依序選取「Edit」>「Project Settings」>「Package Manager」,開啟套件管理工具設定。
在「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在 Unity 選單中,依序選取「Window」>「Package Manager」,開啟套件管理工具選單。
設定管理員範圍下拉式選單,選取「My Registries」。
從套件清單中選取「Google Play Integrity plugin for Unity」套件,然後按一下「Install」。
從 GitHub 匯入
從 GitHub 下載
.unitypackage的最新版本。如要匯入
.unitypackage檔案,請在 Unity 選單中選取「Assets」>「Import package」>「Custom Package」,然後匯入所有項目。
Unreal Engine
以下各節說明如何整合及設定 Unreal Engine 專案的 Google Play Integrity API。
支援的 Unreal Engine 版本
外掛程式支援 Unreal Engine 5.0 和後續所有版本。
設定開發環境
從 GitHub 存放區下載 Play Unreal Engine 外掛程式。
複製 Unreal Engine 專案中
Plugins資料夾內的GooglePlay資料夾。開啟 Unreal Engine 專案,然後依序點選「Edit」→「Plugins」。
搜尋「Google Play」,然後勾選「已啟用」核取方塊。
重新啟動遊戲專案並觸發建構作業。
開啟專案的
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 會在回應中傳回下列完整性判定結果:
| 回應欄位 | 值 | 說明 |
|---|---|---|
| 裝置完整性 | MEETS_DEVICE_INTEGRITY |
應用程式正在通過認證的正版 Android 裝置上執行。在 Android 13 以上版本中,系統會提供硬體支援的證明,指出裝置的系統啟動載入程式已鎖定,且載入的 Android 作業系統是經過認證的裝置製造商映像檔。 |
| 空白 (空白值) | 執行應用程式的裝置可能遭受攻擊 (例如掛接 API) 或系統遭到入侵 (例如已啟用 Root 權限);或者,應用程式不是在實體裝置上執行 (例如未通過 Google Play 完整性檢查的模擬器)。 | |
| Play 帳戶詳細資料 | LICENSED |
使用者擁有應用程式授權。也就是說,使用者在裝置上從 Google Play 安裝或更新您的應用程式。 |
UNLICENSED |
使用者沒有應用程式授權。這可能是因為使用者側載了您的應用程式,或者不是從 Google Play 取得應用程式。 | |
UNEVALUATED |
由於未符合條件,系統無法評估授權詳細資料。這可能由許多因素造成,包括:
|
|
| 應用程式完整性 | PLAY_RECOGNIZED |
應用程式和憑證符合 Google Play 發行的版本。 |
UNRECOGNIZED_VERSION |
憑證或套件名稱與 Google Play 記錄不符。 | |
UNEVALUATED |
系統無法評估應用程式完整性,原因是未符合必要條件,例如裝置可信度不足。 |
Google Play 遊戲電腦版
如果將應用程式發行到 Google Play 遊戲電腦版,系統就會自動為您選擇接收裝置完整性判定結果的額外標籤:
| 回應欄位 | 標籤 | 說明 |
|---|---|---|
| 裝置完整性 | MEETS_VIRTUAL_INTEGRITY |
應用程式正在 Google Play 服務支援的 Android Emulator 上執行。該模擬器已通過系統完整性檢查,符合主要的 Android 相容性規定。 |
選用的完整性判定結果
如果您已在 Play 管理中心或 Play SDK 管理中心連結 Cloud 專案,可以選擇接收額外資訊。
如要變更,請前往 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 裝置上執行,且裝置已安裝最新的安全性更新。
|
||
| 裝置屬性 | sdkVersion: 19, 20, ..., 36 |
裝置上執行的 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 |
系統未評估近期裝置活動。可能的原因如下:
|
||
| 裝置喚回 | 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 |
其他應用程式正在執行中 (並非由 Play 安裝或預先載入至裝置),可用於對提出要求的應用程式 (例如螢幕錄影應用程式) 讀取/擷取輸入和輸出內容。 | |
UNKNOWN_CONTROLLING |
其他應用程式正在執行中 (並非由 Play 安裝或預先載入至裝置),可用於控制提出要求的應用程式 (例如遙控應用程式) 裝置、輸入和輸出內容。 | |
UNKNOWN_OVERLAYS |
其他應用程式正在執行 (並非由 Play 安裝或預先載入至裝置),可能會在要求應用程式上顯示重疊畫面。 | |
| 空白 (空白值) | 如果未符合必要條件,系統不會評估應用程式存取風險。在本例中,appAccessRiskVerdict 欄位為空白。這可能由許多因素造成,包括:
|
|
| 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 代管或自行管理加密金鑰
- 開啟 Play 管理中心,然後選取應用程式。
- 依序前往「測試及發布」 >「應用程式完整性」。
- 按一下「Play Integrity API」旁邊的「設定」。
- 在「傳統要求」下方,按一下「回應加密設定」旁邊的「編輯」。
如要改為自行管理金鑰,請按照下列步驟操作:
- 選取「管理及下載我的回應加密金鑰」,然後上傳公開金鑰。
- 按一下「儲存」,系統就會自動下載加密金鑰。
- 更新安全後端伺服器,在本機使用這些金鑰解密。
如要改用 Google 代管的金鑰,請按照下列步驟操作:
- 選取「讓 Google 管理我的回應加密設定 (建議)」。
- 按一下「Save changes」。