Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Независимо от того, является ли ваше приложение бесплатным или нет, вы можете продавать содержимое, другие приложения или новые функции приложений (например, разблокировать следующий уровень игры) прямо в приложении. Здесь мы покажем, как включить эти продукты в приложении.
Важный
В этой статье показано, как использовать элементы пространства имен 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 вместо объекта CurrentApp. Таким образом вы можете проверить логику лицензии с помощью имитированных вызовов к серверу лицензирования вместо вызова динамического сервера. Для этого необходимо настроить файл с именем WindowsStoreProxy.xml в %userprofile%\AppData\local\packages\<имя пакета>\LocalState\Microsoft\Windows Store\ApiData. Симулятор Microsoft Visual Studio создает этот файл при первом запуске вашего приложения, или вы также можете загрузить пользовательский файл во время выполнения. Дополнительные сведения см. в разделе Использование файла WindowsStoreProxy.xml сCurrentAppSimulator.
- В этом разделе также приводятся примеры кода, приведенные в примере магазина. Этот пример — отличный способ получить практический опыт работы с различными вариантами монетизации, предоставляемыми для приложений универсальной платформы 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 при тестировании.
Заметка
Токен предложения в приложении, используемый в вашем коде, должен совпадать с указанным значением идентификатора продукта для соответствующего дополнительного модуля в Центре Партнеров.
Замечания
Если вы хотите предоставить своим клиентам потребляемые варианты продуктов в приложении (элементы, которые можно приобрести, использовать, а затем при необходимости приобрести снова), перейдите к теме Включение покупок потребляемых продуктов в приложении.
Если вам нужно использовать квитанции, чтобы убедиться, что пользователь сделал покупку в приложении, обязательно просмотрите Используйте квитанции для проверки покупок продуктов.