使用裝置喚回功能 (Beta 版) 偵測重複濫用行為

本頁面說明如何使用裝置喚回功能,在特定裝置上儲存及擷取自訂資料。即使裝置重設後,只要在同一部裝置上安裝應用程式,稍後仍可穩定喚回自訂資料。這項功能可讓您根據指定的動作或行為偵測並防止裝置重複使用,同時保護使用者隱私。

裝置召回程序如何運作?

裝置喚回功能可保護使用者隱私,同時儲存及喚回與特定裝置相關的自訂資料。這類資料會儲存在 Google 伺服器,因此即使在應用程式重新安裝或裝置重設後,應用程式仍能穩定地喚回自訂資料。舉例來說,您可以使用這項功能,回報有嚴重濫用行為的裝置、已兌換高價值商品 (例如免費試用) 的裝置,或是用於重複建立新帳戶以進行濫用行為的裝置。「裝置記憶」功能可保護使用者隱私,因為要求的應用程式只能喚回與裝置相關的有限資料,無法存取任何裝置或使用者 ID。開啟裝置召回功能後,你可以執行下列操作:

  • 讀取各裝置的資料:取得完整性判定結果時,您可以讀取每個裝置的三個自訂值或 位元。您可以自行定義這些值的意義,例如將這些值視為三個不同的旗標,或是合併這些值來代表八個自訂標籤。
  • 修改裝置專屬資料:取得完整性權杖後,您可以使用該權杖向 Google Play 伺服器發出伺服器端呼叫,修改一或多個值。您最多有 14 天的時間可以使用權杖。舉例來說,如果您在首次執行完整性檢查後,發現兩週內出現濫用情形,即可修改值。修改值時,系統也會儲存修改的月份和年份。

裝置記憶功能的前提條件和注意事項

裝置召回功能只能用於儲存和召回資訊,以保護應用程式安全,並防範濫用、詐欺和未經授權的存取行為。您不得使用裝置召回功能指紋辨識或追蹤個別使用者或裝置,也不得使用裝置召回功能追蹤性別、年齡或位置資料等私密使用者或裝置特徵。

使用裝置記憶功能時,必須符合下列條件:

  • 裝置回憶功能適用於手機、平板電腦、摺疊式裝置、電視、Android Auto 和 Wear OS。在 Wear 上,裝置召回功能僅適用於搭載 Wear OS 5 以上版本的裝置。模擬器不支援裝置召回功能。
  • 裝置必須安裝並啟用最新版本的 Google Play 商店和 Google Play 服務,才能使用裝置回溯功能。
  • 使用者帳戶必須獲得 Play 授權,才能使用裝置召回信號,否則判定結果將無法評估。

裝置召回作業的時機考量如下:

  • 驗證完整性權杖後,您最多有 14 天的時間可使用權杖儲存自訂裝置召回資料。
  • 裝置召回作業會包含時間戳記,因此您可以將最近修改的資料視為優先順序高於很久以前修改的資料。經過一段時間後,請考慮忽略或重設資料,因為裝置可能會轉手或整新後再販售。
  • 裝置的召回位元會在最後一次讀取或寫入存取權後保留 3 年。
  • 如要刪除與裝置相關聯的所有資料,應用程式可以將裝置上的所有三個值重設為 false。系統會自動重設時間戳記。

對於有多個應用程式的開發人員和轉移應用程式的開發人員,裝置召回功能的運作方式如下:

  • Google Play 開發人員帳戶中的所有應用程式,都能存取每部裝置的相同三個值。換句話說,如果其中一個應用程式修改了其中一個值,當所有應用程式安裝在同一部裝置上時,都會讀取修改後的值。
  • 如果應用程式從一個開發人員帳戶轉移至另一個帳戶,裝置召回功能會反映新開發人員帳戶的裝置資料,而非舊開發人員帳戶的裝置資料。

開啟裝置記憶功能

準備就緒後,請在 Play 管理中心開啟裝置召回功能:

  1. 登入 Play 管理中心
  2. 選取要使用裝置回想功能的應用程式。
  3. 在左選單的「版本」部分,前往「應用程式完整性」
  4. 按一下「Play Integrity API」旁邊的「設定」
  5. 在頁面的「回應」部分,按一下「變更回應」
  6. 開啟「裝置召回」。
  7. 按一下 [儲存變更] 。

開啟/關閉裝置召回功能後,系統就會刪除您在 Play 管理中心設定的所有 Play Integrity API 測試回應,而您將需再次建立這些回應。

讀取裝置喚回值

裝置喚回功能適用於 Play Integrity API 的傳統和標準要求。在標準要求中,裝置召回會在暖機呼叫中重新整理。換句話說,修改裝置專屬資料後,您需要再次執行暖機作業,才能看到更新後的值。啟用裝置喚回功能後,您就能在完整性判定中讀取裝置喚回值

修改裝置召回值

您可以發出伺服器對伺服器 API 呼叫,修改裝置召回值,做法與解碼完整性判定類似。將位元設為 true 時,系統也會更新寫入日期 (即使位元已設為 true)。將位元設為 false 時,系統會將寫入日期重設為空白。要求中未指定的位元會維持不變。寫入位元與在判決中讀回位元之間,會有短暫的傳播延遲。這項延遲最多可能達 30 秒,但通常會短得多。裝置召回寫入要求的頻率應低於完整性權杖要求。這類要求不會計入完整性權杖要求配額,但會受到非公開的防禦速率限制。

playintegrity.googleapis.com/v1/PACKAGE_NAME/deviceRecall:write -d \
'{
  "integrityToken": "INTEGRITY_TOKEN",
  "newValues": {
    "bitFirst": true,
    "bitThird": false
  }
}'
newValues.BitFirst = true // ForceSendFields optional for value true
newValues.BitSecond = false // ForceSendFields required for value false
newValues.BitThird = nil // do not set ForceSendFields for unspecified bits
newValues.ForceSendFields = []string{"BitSecond"}