相关场景与 API
若要测试以下 API,需要按本文所述设置你的开发环境:背景
在零售场景中,游戏必须拥有许可证才能游玩。许可证请求会检查已安装的光盘,或向 Microsoft 服务发送请求。如果账号通过直接购买或满足性购买(例如从订阅或捆绑包中)获得该产品的权益,则会授予许可证。也可以在共享场景中授予许可证。有关共享的详细信息,请参阅游戏的产品共享模式。 开发场景默认不遵循此行为。这些场景包括:- Loose 构建(Visual Studio F5 部署、xbapp/wdapp register/deploy)
- 本地包构建(makepkg、xbapp/wdapp install)
XStore API 仍然可以工作,但在为游戏或耐用品授权时可能会出现意外结果。
若要将构建配置为可授权行为,请在 MicrosoftGameConfig 中应用正确的标识值(见启用 XStore 开发与测试)。
然后必须执行以下步骤:
然后,对于运行该构建的每个账号,必须通过在对应平台的商店购买该产品来获取权益。
获取 ContentID
选择 Show details 后,可以在 Packages 页面找到 ContentID:
沙盒版本和零售版本的内容 ID 可能不同。如果你安装了游戏的零售版本,该产品将与不同于沙盒所需的内容 ID 关联。如果涉及区域包,内容 ID 也会不同。
主机
通过在 Gaming Command Prompt 中运行xbapp list /d(或 DLC 使用 xbapp listdlc /d)查找已安装包的内容 ID。
PC
通过在 Gaming Command Prompt 中运行wdapp list /d(或 DLC 使用 wdapp listdlc /d)查找已安装包的内容 ID。对于从商店安装的包,使用 /includeStore 标志。
将内容 ID 应用到构建
对于 loose 构建,在 MicrosoftGameConfig 中添加以下部分:makepkg。例如:
/contentid 参数,则当你从本地源安装时,安装过程会应用 MicrosoftGameConfig 中任何可用的 ContentIdOverride。
从商店(沙盒或零售)安装的构建始终具有正确的内容 ID(如合作伙伴中心所示)。
将 EKBID 应用到构建(仅适用于主机)
设置 EKBID (Escrow Key Blob ID) 以使构建在主机上可授权。在大多数场景中,只需要将其从全零或 33EC8436-5A0E-4F0D-B1CE-3F29C3955039 的默认测试值覆盖即可。 使用以下命令覆盖 EKBID:wdapp setekbid 命令)。
试玩与 EKBID
对于 试玩,必须应用实际的 EKBID。要查找游戏使用的 EKBID,请针对从商店安装的构建运行xbapp list /d。有关更多信息,请参阅为游戏实现试玩。
确保测试账号在沙盒中拥有产品的权益
对于同时发布到沙盒和零售的产品,你可以使用 DevEntitlementTool 查询并为测试账号获取权益。 获取权益的最佳方式是通过协议激活直接跳转到产品的商店页面,因为仅发布到沙盒的产品可能不可搜索。开发主机或 PC 必须设置到游戏发布所在的沙盒。有关更多信息,请参阅 XBOX 服务沙盒概述文档;对于 PC,请参阅正确切换沙盒以进行商店操作。 正确登录后,使用商店协议链接跳转到商店页面: 在主机上: 使用 Gaming Command Prompt:xbapp launch ms-windows-store://pdp/?productid=<storeID>
在 PC 上:
在“运行”对话框(⊞Win +R)中或在 Web 浏览器中:
msxbox://game/?productId=<storeID>(在 XBOX 应用中显示产品)
或
ms-windows-store://pdp/?productid=<storeID>(在 Microsoft Store 中显示产品)
进入商店页面后,选择 购买 (Buy) 或 获取 (Get) 为你的测试账号获取该产品的许可证。游戏和 DLC 的下载与安装应自动开始。如果你计划使用本地构建进行迭代,可以取消该操作。
运行该构建并期望与许可证相关的 XStore API 正常工作的每个账号都必须获取权益。
DLC
若要使本地 DLC 可授权,必须将内容 ID 应用于makepkg 并将 xbapp setekbid 设置为默认值之外的值。仅需为 DLC 配置授权,基础游戏无需配置。
许可证覆盖对使用打包耐用品调用时的以下 API 有效:
- XStoreAcquireLicenseForDurablesAsync
- XStoreAcquireLicenseForPackageAsync
- XStoreCanAcquireLicenseForPackageAsync
- XStoreCanAcquireLicenseForStoreIdAsync
- XStoreRegisterPackageLicenseLost
参考 API 文档
- XStore(API 内容)
- 函数
- XStoreQueryGameLicenseAsync
- XStoreQueryLicenseTokenAsync
- XStoreQueryAddOnLicensesAsync
- XStoreRegisterGameLicenseChanged
- XStoreAcquireLicenseForDurablesAsync
- XStoreAcquireLicenseForPackageAsync
- XStoreCanAcquireLicenseForPackageAsync
- XStoreCanAcquireLicenseForStoreIdAsync
- XStoreRegisterPackageLicenseLost
- 函数
另请参阅
商务概述启用 XStore 开发与测试
正确切换沙盒以进行 Store 操作
XStore API 参考
