Windows Age API 常見問題集

本文回答有關使用 Windows Age API 來打造適合年齡的應用程式體驗的常見問題。

Overview

什麼是 Windows 年齡 API?

Windows Age API 為執行當前程序的使用者提供隱私保護的年齡訊號。 Windows 不會回傳確切的年齡或出生日期,而是回傳一個年齡範圍或成人驗證狀態,應用程式可以用來提供適合年齡的體驗。

這些 API 是 Windows.System.User 上的 Windows 執行階段 方法。 它們幫助應用程式在不直接獲得用戶確切出生日期的情況下,做出與年齡相關的體驗與政策決策。

若使用者同意,開發者可取得可在設計適齡體驗時使用的年齡訊號。 應用程式開發者仍負責決定適用的法律與要求如何適用於其產品。

Windows Age API 是針對哪些情境設計的?

當年齡與使用體驗相關時,應用程式可以使用年齡訊號。 例如,在下列情況下,應用程式可能會使用年齡訊號:

  • 展示用戶生成內容、社交功能或溝通內容,可能不適合所有年齡層。
  • 提供應用內購買或虛擬貨幣,且可能適用年齡限制。
  • 串流或播放具有成熟分級的媒體。

更一般來說,應用程式可以使用年齡訊號來調整內容、功能或存取控制,而不必收集出生日期。

有哪些 Windows Age API 可用?

以下 API 支援不同的情境:

年齡驗證會驗證使用者的年齡或年齡組嗎?

No. 年齡驗證提供已 驗證的成年身份,而非任何年齡或年齡層的驗證身份。 在帳號驗證中,聲稱自己是成年人的使用者必須通過流程來檢查該人是否為成年人。 此流程會檢查成年人聲明;不會確認兒童或青少年的經驗證年齡。

關於驗證您的 Microsoft 帳戶年齡的資訊,請參見 驗證您的 Microsoft 帳戶年齡。

GetAgeVerificationStatusAsync 顯示成人驗證狀態。 Verified 結果報告已驗證的成年人身分。 其他結果無法證明使用者是未成年人:你的應用程式必須區分 Unverified 結果、OptedOut 結果,以及無法取得或不確定的結果。

Windows Age 的 API 已正式可用嗎?

GetUserAgeRangeAsync 和 GetAgeVerificationStatusAsync 已正式推出。 支援的零售版 Windows 版本如下:

  • Windows 11,版本 24H2:建置版 26100.9550 或更新版本。
  • Windows 11,版本 25H2:建構版 26200.9550 或更新版本。

Windows SDK 版本 10.0.26100.9169 或更新版本包含這些 API。

我的應用程式應該使用哪個 API?

使用:

  • GetUserAgeRangeAsync 當你的應用程式需要年齡區間,並套用自己的處理或政策邏輯時。
  • GetAgeVerificationStatusAsync 當決定取決於用戶是否已完成成年身分驗證。

應用程式在適當情境下可以使用多個年齡訊號。 僅有18歲或以上的年齡範圍結果,並不代表已具備已驗證的成人身分。

隱私權和資料處理

我可以為 GetUserAgeRangeAsync 設定自己的年齡範圍嗎?

No. 由 GetUserAgeRangeAsync 傳回的年齡組是預先定義的。

API 會回傳使用者的確切年齡或出生日期嗎?

No. GetUserAgeRangeAsync 回報年齡組別,而非確切年齡或出生日期。 例如,下界和上界為 {13, 15} 的結果表示使用者屬於 13–15 歲年齡組。

GetAgeVerificationStatusAsync 報告的是成人驗證狀態,而非已驗證的年齡或年齡組別。

我的應用程式需要收集使用者的出生日期才能使用 Windows Age API 嗎?

No. API 的一個目的是讓應用程式能在不直接收到用戶出生日期的情況下,做出與年齡相關的決策。

應用程式應該儲存年齡訊號嗎?

應用程式應避免不必要地持續保存年齡訊號。 需要時請取回信號,因為使用者的年齡組、驗證狀態、帳號狀態或適用的管理政策可能會改變。

使用者與帳號行為

支援哪些帳號類型?

身份提供者年齡訊號目前僅提供給 Microsoft 帳號。 對於其他帳戶類型,當管理員預設未設定時, GetUserAgeRangeAsync 會回傳 null,而 GetAgeVerificationStatusAsync 則返回 NotApplicable。

Age API 會回傳哪位使用者的資訊?

Age API 呼叫適用於執行目前程序的使用者。 在擁有多個 Windows 設定檔的裝置上,API 會查詢目前使用者的設定檔以取得使用中應用程式體驗。 API 並沒有提供查詢不同設定檔的機制。

應用程式可以查詢裝置上其他使用者的年齡訊號嗎?

No. API 在執行該程序的使用者脈絡中運作。 以代表不同使用者的 User 物件呼叫 Age API,可能會導致 E_ACCESSDENIED。

當使用者同時連結多個帳號類型到 Windows 時會發生什麼事?

Windows Age API 在目前登入的 Windows 使用者的情境下運作,並使用該使用者 Windows 登入所關聯的 Microsoft 帳戶。 應用程式無法為查詢選擇另一個已連結的帳號。

如果無法判斷年齡訊號怎麼辦?

應用程式必須做好準備,以因應年齡訊號可能無法取得或無法判定。

對於 GetUserAgeRangeAsync, null 表示年齡範圍未知或不可得。 可能產生 null 的條件包括:

  • 不支援此帳號類型。
  • 該帳戶無法提供年齡資訊。
  • API 已因管理政策而停用。

對於 GetAgeVerificationStatusAsync,NotApplicable 或 TemporarilyUnavailable 代表無法使用或不確定的驗證狀態信號。 這些結果無法確定用戶是否已驗證成年身份。

應用程式必須提供適當的備用體驗,且不得將無法取得的結果解讀為特定年齡組或驗證狀態。

應用程式是否應該假設年齡訊號隨時可用?

No. 應用程式應該設計備援行為,作為 Age API 整合的一部分。 將有效訊號、不可用或不確定訊號,以及存取拒絕錯誤視為不同的狀態。

應用程式需求與實作

需要什麼作業系統和 SDK?

Windows 11 是最低支援的作業系統。 GetUserAgeRangeAsync 並 GetAgeVerificationStatusAsync 可於以下支援的零售版本中使用:

  • Windows 11,版本 24H2:建置版 26100.9550 或更新版本。
  • Windows 11,版本 25H2:建構版 26200.9550 或更新版本。

使用 Windows SDK 版本 10.0.26100.9169 或更新版本來建立一個呼叫這些 API 的應用程式。

由於 API 可能在較舊或未維護的系統中缺失,請在呼叫前先確認 API 可用性。

我的應用程式需要宣告一項功能嗎?

Yes. UWP 應用程式必須在其套件清單中宣告該 userAccountInformation 能力:

<uap:Capability Name="userAccountInformation" />

沒有必要的存取權限,應用程式無法讀取使用者的年齡資料。

我該如何取得用來呼叫 Age API 的使用者物件?

使用 User.GetDefault 來取得正在執行目前程序的使用者。 User.FindAllAsync 可以列舉使用者,但必須使用代表執行該程序之使用者的 User 實例來呼叫 Age API。

出生日期或生日的變動需要多久才會影響年齡訊號?

如果使用者更改了與 Microsoft 帳戶 相關的出生日期或到了生日,變更會在最後一次年齡訊號查詢後 24 小時內反映出來。

應用程式能強制更新年齡訊號嗎?

No. 不支援強制刷新。

錯誤與備援處理

應用程式應該如何處理無法取得的年齡範圍?

明確處理無法取得的年齡範圍,而不是假設年齡。 一個null來自GetUserAgeRangeAsync的結果表示年齡範圍未知或無法取得。

使用刻意設計的後備體驗。 不要把它解讀為null特定的年齡層,包括18歲以上的族群。

E_ACCESSDENIED是什麼意思?

E_ACCESSDENIED 可能代表呼叫者無法存取帳號資訊,或應用程式用於並非執行該程序之使用者的 User 物件呼叫 API。

請將此錯誤視為與不可用訊號不同。 不可用的訊號會依 API 而以 NotApplicable、TemporarilyUnavailable 或 null 傳回。

應用程式在驗證狀態不明時應該怎麼做?

明確處理不可用或不確定的驗證狀態,並提供備用體驗。 NotApplicable 和 TemporarilyUnavailable 都無法確認使用者是否已驗證成年身分。 不要將這些結果、Unverified或OptedOut,解讀為用戶未成年的證據。

也請參閱