向 Microsoft Store 发送请求

从 Windows 10 版本 1607 起,Windows SDK 在 Windows.Services.Store 命名空间中为与 Microsoft Store 相关的操作(如应用内购买)提供 API。 但是,尽管支持应用商店的服务在操作系统发布过程中不断地更新、扩展和提高,但新的 API 通常只会在主要操作系统版本中添加到 Windows SDK。

我们提供的 SendRequestAsync 方法可以在发布新版本的 Windows SDK 之前灵活地为通用 Windows 平台 (UWP) 应用提供新的应用商店操作。 你可以使用此方法为最新版本的 Windows SDK 中尚未提供对应 API 的新操作向应用商店发送请求。

注意

SendRequestAsync 方法仅可用于针对 Windows 10 版本 1607 或更高版本的应用。 此方法支持的有些请求仅在 Windows 10 版本 1607 之后的版本中受支持。

SendRequestAsync 是一种 StoreRequestHelper 类的静态方法。 若要调用此方法,你必须将以下信息传递给此方法:

  • StoreContext 对象,用于提供与你想要为其执行操作的用户相关的信息。 有关此对象的更多信息,请参阅 StoreContext 类入门
  • 用于标识你想要向应用商店发送的请求的整数。
  • 如果请求支持任何参数,你还可以传递 JSON 格式的字符串,它包含要与请求一起传递的参数。

下面的示例演示如何调用此方法。 本示例要求使用适用于 Windows.Services.StoreSystem.Threading.Tasks 命名空间的语句。

public async Task<bool> AddUserToFlightGroup()
{
    StoreSendRequestResult result = await StoreRequestHelper.SendRequestAsync(
        StoreContext.GetDefault(), 8,
        "{ \"type\": \"AddToFlightGroup\", \"parameters\": { \"flightGroupId\": \"your group ID\" } }");

    if (result.ExtendedError == null)
    {
        return true;
    }

    return false;
}

请参阅以下部分,了解与当前可通过 SendRequestAsync 方法发送的请求相关的信息。 如果添加了新请求的支持,我们将会更新此文章。

请求应用内评分和评价

你可以在应用中通过将请求整数 16 传递给 SendRequestAsync 方法,以编程方式启动对话框,请客户对应用进行评分和提交评价。 有关详细信息,请参阅在应用中显示评分和评价对话框

适合于外部测试版组方案的请求

重要

对于大多数开发人员帐户来说,本部分介绍的所有外部测试版组请求目前尚不可用。 除非你的开发人员帐户已由 Microsoft 专门预配,否则这些请求将会失败。

SendRequestAsync 方法支持一组外部测试版组方案的请求,例如为外部测试版组添加用户或设备。 若要提交这些请求,请将 requestKind 参数值 7 或 8 以及 JSON 格式的字符串一起传递给用于指示你想要与任何相关参数一起提交的请求的 parametersAsJson 参数。 该方法还支持使用 BigID 映射 PFN 的请求(显示目录中的 ProductID)。 若要提交此请求,请将值 9 传递给 requestKind 参数。 这些 requestKind 值在以下方面不同。

请求类型值 说明
7 此请求将在当前设备的上下文中执行。 此值仅可用于 Windows 10 版本 1703 或更高版本。
8 此请求将在当前已登录到应用商店的用户的上下文中执行。 此值可用于 Windows 10 版本 1607 或更高版本。
9 这些请求通过 HTTP 请求将 BigID (ProductId) by PackageFamilyName 通过匿名身份验证返回到显示目录。

当前实施的是以下外部测试版组请求。

检索排名最高的外部测试版组的远程变量

重要

对于大多数开发人员帐户来说,此请求当前尚不可用。 除非你的开发人员帐户已由 Microsoft 专门预配,否则此请求将会失败。

此请求将为当前用户或设备检索排名最高的外部测试版组的远程变量。 若要发送此请求,请将以下信息传递至 SendRequestAsync 方法的 requestKindparametersAsJson 参数。

参数 说明
requestKind 指定 7 以返回设备的最高排名外部测试版组,或者指定 8 以返回当前用户和设备的最高排名外部测试版组。 我们建议为 requestKind 参数使用值 8,因为此值将在成员中返回当前用户和设备的最高排名外部测试版组。
parametersAsJson 传递 JSON 格式的字符串,它包含以下示例显示的数据。

以下示例显示了要传递至 parametersAsJson 的 JSON 数据格式。 必须为类型字段分配字符串 GetRemoteVariables。 在合作伙伴中心中为你已在其中定义了远程变量的项目 ID 分配 projectId 字段。

{ 
    "type": "GetRemoteVariables", 
    "parameters": "{ \"projectId\": \"your project ID\" }" 
}

提交此请求之后,StoreSendRequestResult 返回值的 Response 属性将包含 JSON 格式的字符串及以下字段。

字段 说明
匿名 布尔值,其中 true 指示用户或设备身份不存在于请求中,false 指示用户或设备身份已存在于请求中。
name 包含设备或用户所在的最高排名外部测试版组名称的字符串。
设置 键/值对的字典,包含开发人员为外部测试版组配置的远程变量的名称和值。

以下示例展示了此请求的返回值。

{ 
  "anonymous": false, 
  "name": "Insider Slow",
  "settings":
  {
      "Audience": "Slow"
      ...
  }
}

将当前设备或用户添加到外部测试版组

重要

对于大多数开发人员帐户来说,此请求当前尚不可用。 除非你的开发人员帐户已由 Microsoft 专门预配,否则此请求将会失败。

若要发送此请求,请将以下信息传递至 SendRequestAsync 方法的 requestKindparametersAsJson 参数。

参数 说明
requestKind 指定 7 以将设备添加到外部测试版组,或者指定 8 以将当前已登录到应用商店的用户添加到外部测试版组。
parametersAsJson 传递 JSON 格式的字符串,它包含以下示例显示的数据。

以下示例显示了要传递至 parametersAsJson 的 JSON 数据格式。 必须为类型字段分配字符串 AddToFlightGroup。 为你想要向其中添加设备或用户的外部测试版组 ID 分配 flightGroupId 字段。

{ 
    "type": "AddToFlightGroup", 
    "parameters": "{ \"flightGroupId\": \"your group ID\" }" 
}

如果请求中没有错误,则 StoreSendRequestResult 返回值的 HttpStatusCode 属性将包含响应代码。

从外部测试版组中删除当前设备或用户

重要

对于大多数开发人员帐户来说,此请求当前尚不可用。 除非你的开发人员帐户已由 Microsoft 专门预配,否则此请求将会失败。

若要发送此请求,请将以下信息传递至 SendRequestAsync 方法的 requestKindparametersAsJson 参数。

参数 说明
requestKind 指定 7 以从外部测试版组中删除设备,或者指定 8 以从外部测试版组中删除当前已登录到应用商店的用户。
parametersAsJson 传递 JSON 格式的字符串,它包含以下示例显示的数据。

以下示例显示了要传递至 parametersAsJson 的 JSON 数据格式。 必须为类型字段分配字符串 RemoveFromFlightGroup。 为你想要从其中删除设备或用户的外部测试版组 ID 分配 flightGroupId 字段。

{ 
    "type": "RemoveFromFlightGroup", 
    "parameters": "{ \"flightGroupId\": \"your group ID\" }" 
}

如果请求中没有错误,则 StoreSendRequestResult 返回值的 HttpStatusCode 属性将包含响应代码。