Включение покупок продуктов в приложении
Независимо от того, является ли ваше приложение бесплатным или нет, вы можете продавать содержимое, другие приложения или новые функции приложений (например, разблокировать следующий уровень игры) прямо в приложении. Здесь мы покажем, как включить эти продукты в приложении.
Внимание
В этой статье показано, как использовать элементы пространства имен Windows.ApplicationModel.Store для включения покупок продуктов в приложении. Это пространство имен больше не обновляется с новыми функциями, и мы рекомендуем вместо этого использовать пространство имен Windows.Services.Store . Пространство имен Windows.Services.Store поддерживает последние типы надстроек, такие как управляемые магазином надстройки и подписки, и предназначены для обеспечения совместимости с будущими типами продуктов и функций, поддерживаемых Центром партнеров и Магазином. Пространство имен Windows.Services.Store было введено в Windows 10 версии 1607, и его можно использовать только в проектах, предназначенных для Windows 10 Anniversary Edition (10.0; Сборка 14393) или более поздняя версия в Visual Studio. Дополнительные сведения о включении покупок в приложении с помощью пространства имен Windows.Services.Store см . в этой статье.
Примечание.
Не удается предложить продукты из пробной версии приложения. Клиенты, использующие пробную версию вашего приложения, могут приобрести только продукт в приложении, если они приобретут полную версию приложения.
Необходимые компоненты
- Приложение Для Windows, в котором можно добавить функции для покупателей.
- При первом коде и тестировании новых продуктов в приложении вместо объекта CurrentAppSimulator необходимо использовать объект CurrentAppSimulator. Таким образом вы можете проверить логику лицензии с помощью имитированных вызовов к серверу лицензирования вместо вызова динамического сервера. Для этого необходимо настроить файл с именем WindowsStoreProxy.xml в %userprofile%\AppData\local\packages\<имя>_пакета\LocalState\Microsoft\Windows Store\ApiData. Симулятор Microsoft Visual Studio создает этот файл при первом запуске приложения или также можно загрузить пользовательский в среде выполнения. Дополнительные сведения см. в разделе "Использование файла WindowsStoreProxy.xml с CurrentAppSimulator".
- В этом разделе также приводятся примеры кода, предоставляемые в примере Store. Этот пример — отличный способ получить практический опыт работы с различными вариантами монетизации, предоставляемыми для приложений универсальная платформа Windows (UWP).
Шаг 1. Инициализация сведений о лицензии для приложения
При инициализации приложения получите объект LicenseInformation для приложения, инициализировав CurrentApp или CurrentAppSimulator, чтобы включить покупки продукта в приложении.
void InitializeApp()
{
// Some app initialization code...
// Initialize the license info for use in the app that is uploaded to the Store.
// Uncomment the following line in the release version of your app.
// licenseInformation = CurrentApp.LicenseInformation;
// Initialize the license info for testing.
// Comment the following line in the release version of your app.
licenseInformation = CurrentAppSimulator.LicenseInformation;
// Other app initialization code...
}
Шаг 2. Добавление встроенных предложений в приложение
Для каждой функции, которую вы хотите сделать доступной через продукт в приложении, создайте предложение и добавьте его в приложение.
Внимание
Перед отправкой в Магазин необходимо добавить все продукты из приложения, которые вы хотите представить своим клиентам. Если вы хотите добавить новые продукты в приложении позже, необходимо обновить приложение и повторно отправить новую версию.
Создание маркера предложения в приложении
Вы определяете каждый продукт в приложении по маркеру. Этот маркер — это строка, определяемая и используемая в приложении, и в Магазине для идентификации конкретного продукта в приложении. Присвойте ему уникальное (для приложения) и понятное имя, чтобы быстро определить правильную функцию, которая она представляет во время написания кода. Ниже приведены некоторые примеры имен:
- "SpaceMissionLevel4"
- ContosoCloudSave
- "RainbowThemePack"
Примечание.
Маркер предложения в приложении, используемый в коде, должен соответствовать значению идентификатора продукта, заданному при определении соответствующей надстройки для приложения в Центре партнеров.
Код компонента в условном блоке
Код для каждой функции, связанной с продуктом в приложении, необходимо поместить в условный блок, который проверяет, имеет ли клиент лицензию на использование этой функции.
Ниже приведен пример, в который показано, как можно закодируйте функцию с именем featureName в условном блоке, относящееся к лицензии. Строка, featureName, — это маркер, который однозначно идентифицирует этот продукт в приложении, а также используется для идентификации его в Магазине.
if (licenseInformation.ProductLicenses["featureName"].IsActive) { // the customer can access this feature } else { // the customer can' t access this feature }
Добавление пользовательского интерфейса покупки для этой функции
Ваше приложение также должно предоставить клиентам возможность приобрести продукт или функцию, предложенную продуктом в приложении. Они не могут приобрести их через Магазин так же, как они приобрели полное приложение.
Ниже показано, как проверить, принадлежит ли ваш клиент продукту в приложении, и, если они этого не сделали, отобразит диалоговое окно покупки, чтобы он смог купить его. Замените комментарий "показать диалоговое окно покупки" пользовательским кодом для диалогового окна покупки (например, страницу с понятной кнопкой "Купить это приложение!").
async void BuyFeature() { if (!licenseInformation.ProductLicenses["featureName"].IsActive) { try { // The customer doesn't own this feature, so // show the purchase dialog. await CurrentAppSimulator.RequestProductPurchaseAsync("featureName", false); //Check the license state to determine if the in-app purchase was successful. } catch (Exception) { // The in-app purchase was not completed because // an error occurred. } } else { // The customer already owns this feature. } }
Шаг 3. Изменение тестового кода на окончательные вызовы
Это простой шаг: измените каждую ссылку на CurrentAppSimulator на CurrentApp в коде приложения. Вам больше не нужно предоставлять файл WindowsStoreProxy.xml, поэтому удалите его из пути приложения (хотя вы можете сохранить его для ссылки при настройке предложения в приложении на следующем шаге).
Шаг 4. Настройка предложения продукта в приложении в Магазине
В Центре партнеров перейдите к приложению и создайте надстройку , соответствующую предложению продукта в приложении. Определите идентификатор продукта, тип, цену и другие свойства надстройки. Убедитесь, что она идентична конфигурации, заданной в WindowsStoreProxy.xml при тестировании.
Примечание.
Маркер предложения в приложении, используемый в коде, должен соответствовать значению идентификатора продукта, заданному для соответствующей надстройки в Центре партнеров.
Замечания
Если вы хотите предоставить клиентам доступные варианты продукта в приложении (элементы, которые можно приобрести, использовать и при необходимости при необходимости приобрести), перейдите к разделу "Включение потребляемых продуктов в приложении".
Если вам нужно использовать квитанции, чтобы убедиться, что пользователь сделал покупку в приложении, обязательно просмотрите квитанции use для проверки покупок продуктов.