Поделиться через


Отправка запросов в Microsoft Store

Начиная с Windows 10 версии 1607 пакет SDK для Windows предоставляет API для операций, связанных с Магазином (например, покупки в приложении) в пространстве имен Windows.Services.Store . Однако, хотя службы, поддерживающие Магазин, постоянно обновляются, расширяются и улучшаются между выпусками ОС, новые API обычно добавляются в пакет SDK для Windows только во время крупных выпусков ОС.

Мы предоставляем метод SendRequestAsync как гибкий способ сделать новые операции Магазина доступными для приложений универсальная платформа Windows (UWP) до выпуска новой версии пакета SDK для Windows. Этот метод можно использовать для отправки запросов в Магазин для новых операций, которые еще не имеют соответствующего API, доступного в последнем выпуске пакета SDK для Windows.

Примечание.

Метод SendRequestAsync доступен только для приложений, предназначенных для Windows 10, версии 1607 или более поздней версии. Некоторые запросы, поддерживаемые этим методом, поддерживаются только в выпусках после Windows 10 версии 1607.

SendRequestAsync — это статический метод класса StoreRequestHelper . Чтобы вызвать этот метод, необходимо передать в метод следующие сведения:

  • Объект StoreContext, предоставляющий сведения о пользователе, для которого требуется выполнить операцию. Дополнительные сведения об этом объекте см. в статье "Начало работы с классом StoreContext".
  • Целое число, определяющее запрос, который требуется отправить в Магазин.
  • Если запрос поддерживает любые аргументы, можно также передать строку в формате JSON, содержащую аргументы для передачи вместе с запросом.

В следующем примере показано, как вызывается данный метод. В этом примере требуются инструкции using для пространств имен Windows.Services.Store и System.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 . Дополнительные сведения см. в разделе "Показать рейтинг и диалоговое окно проверки" в приложении.

Запросы на сценарии группы полетов

Внимание

Все запросы группы полетов, описанные в этом разделе, в настоящее время недоступны для большинства учетных записей разработчиков. Эти запросы завершаются ошибкой, если учетная запись разработчика не подготовлена корпорацией Майкрософт.

Метод SendRequestAsync поддерживает набор запросов для сценариев группы полетов, например добавление пользователя или устройства в группу полетов. Чтобы отправить эти запросы, передайте значение 7 или 8 в параметр requestKind вместе со строкой в формате JSON в параметрAsJson , указывающий запрос, который нужно отправить вместе с любыми связанными аргументами. Метод также поддерживает запросы на сопоставление PFN с BigID (ProductID из каталога отображения). Чтобы отправить этот запрос, передайте значение 9 в параметр requestKind. Эти значения requestKind отличаются следующими способами.

Значение типа запроса Description
7 Запросы выполняются в контексте текущего устройства. Это значение можно использовать только в Windows 10 версии 1703 или более поздней версии.
8 Запросы выполняются в контексте пользователя, вошедшего в магазин. Это значение можно использовать в Windows 10 версии 1607 или более поздней версии.
9 Запросы возвращают BigID (ProductId) packageFamilyName через HTTP-запрос в каталог отображения с анонимной проверкой подлинности.

В настоящее время реализованы следующие запросы группы полетов.

Получение удаленных переменных для наиболее ранжируемой группы полетов

Внимание

Этот запрос в настоящее время недоступен большинству учетных записей разработчиков. Этот запрос завершится ошибкой, если учетная запись разработчика не подготовлена корпорацией Майкрософт.

Этот запрос извлекает удаленные переменные для наиболее ранжируемой группы тестов для текущего пользователя или устройства. Чтобы отправить этот запрос, передайте следующие сведения в параметры requestKind и parametersAsJson метода SendRequestAsync .

Параметр Описание
requestKind Укажите 7, чтобы вернуть самую ранжированную группу полетов для устройства или указать 8, чтобы вернуть самую ранжированную группу полетов для текущего пользователя и устройства. Мы рекомендуем использовать значение 8 для параметра requestKind , так как это значение вернет наиболее ранжированную группу полетов для членства как для текущего пользователя, так и для устройства.
parametersAsJson Передайте строку в формате JSON, содержащую данные, показанные в приведенном ниже примере.

В следующем примере показан формат данных JSON для передачи в параметрыAsJson. Поле типа должно быть назначено строке GetRemoteVariables. Назначьте поле projectId идентификатору проекта, в котором определены удаленные переменные в Центре партнеров.

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

После отправки этого запроса свойство Response возвращаемого значения StoreSendRequestResult содержит строку в формате JSON со следующими полями.

Поле Description
анонимное Логическое значение, где значение true указывает, что удостоверение пользователя или устройства отсутствует в запросе, а значение false указывает, что удостоверение пользователя или устройства присутствует в запросе.
name Строка, содержащая имя самой высокоранговой группы полетов, к которой принадлежит устройство или пользователь.
параметры Словарь пар "ключ-значение", содержащий имя и значение удаленных переменных, настроенных разработчиком для группы полетов.

В следующем примере показано возвращаемое значение для этого запроса.

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

Добавление текущего устройства или пользователя в группу полетов

Внимание

Этот запрос в настоящее время недоступен большинству учетных записей разработчиков. Этот запрос завершится ошибкой, если учетная запись разработчика не подготовлена корпорацией Майкрософт.

Чтобы отправить этот запрос, передайте следующие сведения в параметры requestKind и parametersAsJson метода SendRequestAsync .

Параметр Описание
requestKind Укажите 7, чтобы добавить устройство в группу полетов или указать 8, чтобы добавить пользователя, который в настоящее время вошел в Магазин в группу полетов.
parametersAsJson Передайте строку в формате JSON, содержащую данные, показанные в приведенном ниже примере.

В следующем примере показан формат данных JSON для передачи в параметрыAsJson. Поле типа должно быть назначено строке AddToFlightGroup. Назначьте поле flightGroupId идентификатору группы полетов, в которую нужно добавить устройство или пользователя.

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

Если с запросом возникает ошибка, свойство HttpStatusCode возвращаемого значения StoreSendRequestResult содержит код ответа.

Удаление текущего устройства или пользователя из группы тестов

Внимание

Этот запрос в настоящее время недоступен большинству учетных записей разработчиков. Этот запрос завершится ошибкой, если учетная запись разработчика не подготовлена корпорацией Майкрософт.

Чтобы отправить этот запрос, передайте следующие сведения в параметры requestKind и parametersAsJson метода SendRequestAsync .

Параметр Описание
requestKind Укажите 7, чтобы удалить устройство из группы полетов или указать 8, чтобы удалить пользователя, который в настоящее время вошел в Магазин из группы полетов.
parametersAsJson Передайте строку в формате JSON, содержащую данные, показанные в приведенном ниже примере.

В следующем примере показан формат данных JSON для передачи в параметрыAsJson. Поле типа должно быть назначено строке RemoveFromFlightGroup. Назначьте поле flightGroupId идентификатору группы полетов, из которой нужно удалить устройство или пользователя.

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

Если с запросом возникает ошибка, свойство HttpStatusCode возвращаемого значения StoreSendRequestResult содержит код ответа.