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


Включение покупок продуктов в приложении

Независимо от того, является ли ваше приложение бесплатным или нет, вы можете продавать содержимое, другие приложения или новые функции приложений (например, разблокировать следующий уровень игры) прямо в приложении. Здесь мы покажем, как включить эти продукты в приложении.

Внимание

В этой статье показано, как использовать элементы пространства имен 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. Добавление встроенных предложений в приложение

Для каждой функции, которую вы хотите сделать доступной через продукт в приложении, создайте предложение и добавьте его в приложение.

Внимание

Перед отправкой в Магазин необходимо добавить все продукты из приложения, которые вы хотите представить своим клиентам. Если вы хотите добавить новые продукты в приложении позже, необходимо обновить приложение и повторно отправить новую версию.

  1. Создание маркера предложения в приложении

    Вы определяете каждый продукт в приложении по маркеру. Этот маркер — это строка, определяемая и используемая в приложении, и в Магазине для идентификации конкретного продукта в приложении. Присвойте ему уникальное (для приложения) и понятное имя, чтобы быстро определить правильную функцию, которая она представляет во время написания кода. Ниже приведены некоторые примеры имен:

    • "SpaceMissionLevel4"
    • ContosoCloudSave
    • "RainbowThemePack"

Примечание.

Маркер предложения в приложении, используемый в коде, должен соответствовать значению идентификатора продукта, заданному при определении соответствующей надстройки для приложения в Центре партнеров.

  1. Код компонента в условном блоке

    Код для каждой функции, связанной с продуктом в приложении, необходимо поместить в условный блок, который проверяет, имеет ли клиент лицензию на использование этой функции.

    Ниже приведен пример, в который показано, как можно закодируйте функцию с именем featureName в условном блоке, относящееся к лицензии. Строка, featureName, — это маркер, который однозначно идентифицирует этот продукт в приложении, а также используется для идентификации его в Магазине.

    if (licenseInformation.ProductLicenses["featureName"].IsActive)
    {
        // the customer can access this feature
    }
    else
    {
        // the customer can' t access this feature
    }
    
  2. Добавление пользовательского интерфейса покупки для этой функции

    Ваше приложение также должно предоставить клиентам возможность приобрести продукт или функцию, предложенную продуктом в приложении. Они не могут приобрести их через Магазин так же, как они приобрели полное приложение.

    Ниже показано, как проверить, принадлежит ли ваш клиент продукту в приложении, и, если они этого не сделали, отобразит диалоговое окно покупки, чтобы он смог купить его. Замените комментарий "показать диалоговое окно покупки" пользовательским кодом для диалогового окна покупки (например, страницу с понятной кнопкой "Купить это приложение!").

    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 для проверки покупок продуктов.