Habilitación de compras de productos en la aplicación
Tanto si la aplicación es gratuita como si no, puedes vender contenido, otras aplicaciones o nuevas funcionalidades de la aplicación (como desbloquear el siguiente nivel de un juego) desde la aplicación. Aquí te mostramos cómo habilitar estos productos en tu aplicación.
Importante
En este artículo se muestra cómo usar miembros del espacio de nombres Windows.ApplicationModel.Store para habilitar las compras de productos desde la aplicación. Este espacio de nombres ya no se actualiza con nuevas características y se recomienda usar el espacio de nombres Windows.Services.Store en su lugar. El espacio de nombres Windows.Services.Store admite los tipos de complementos más recientes, como complementos y suscripciones consumibles administrados por la Tienda, y está diseñado para ser compatible con futuros tipos de productos y características compatibles con el Centro de partners y la Tienda. El espacio de nombres Windows.Services.Store se introdujo en Windows 10, versión 1607, y solo se puede usar en proyectos que tienen como destino Windows 10 Anniversary Edition (10.0; Compilación 14393) o una versión posterior en Visual Studio. Para obtener más información sobre cómo habilitar las compras de productos desde la aplicación mediante el espacio de nombres Windows.Services.Store , consulte este artículo.
Nota:
Los productos en la aplicación no se pueden ofrecer desde una versión de prueba de una aplicación. Los clientes que usan una versión de prueba de la aplicación solo pueden comprar un producto desde la aplicación si compran una versión completa de la aplicación.
Requisitos previos
- Una aplicación de Windows en la que se van a agregar características para que los clientes compren.
- Al codificar y probar nuevos productos desde la aplicación por primera vez, debe usar el objeto CurrentAppSimulator en lugar del objeto CurrentApp . De este modo, puede comprobar la lógica de licencia mediante llamadas simuladas al servidor de licencias en lugar de llamar al servidor activo. Para ello, debes personalizar el archivo denominado WindowsStoreProxy.xml en %userprofile%\AppData\local\packages\<package name>\LocalState\Microsoft\Windows Store\ApiData. El simulador de Microsoft Visual Studio crea este archivo al ejecutar la aplicación por primera vez, o también puede cargar uno personalizado en tiempo de ejecución. Para obtener más información, consulta Uso del archivo WindowsStoreProxy.xml con CurrentAppSimulator.
- En este tema también se hace referencia a ejemplos de código proporcionados en el ejemplo store. Este ejemplo es una excelente manera de obtener experiencia práctica con las diferentes opciones de monetización proporcionadas para las aplicaciones de Plataforma universal de Windows (UWP).
Paso 1: Inicializar la información de licencia de la aplicación
Cuando la aplicación se inicialice, obtenga el objeto LicenseInformation de la aplicación inicializando CurrentApp o CurrentAppSimulator para habilitar las compras de un producto desde la aplicación.
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...
}
Paso 2: Agregar las ofertas en la aplicación a la aplicación
Para cada característica que quiera que esté disponible a través de un producto desde la aplicación, cree una oferta y agréguela a la aplicación.
Importante
Debes agregar todos los productos desde la aplicación que quieras presentar a tus clientes a tu aplicación antes de enviarlos a la Tienda. Si quiere agregar nuevos productos en la aplicación más adelante, debe actualizar la aplicación y volver a enviar una nueva versión.
Creación de un token de oferta en la aplicación
Cada producto dentro de la aplicación se identifica mediante un token. Este token es una cadena que defines y usas en tu aplicación y en la Tienda para identificar un producto específico dentro de la aplicación. Asígnele un nombre único (a la aplicación) y un nombre significativo para que pueda identificar rápidamente la característica correcta que representa mientras está codificando. Estos son algunos ejemplos de nombres:
- "SpaceMissionLevel4"
- "ContosoCloudSave"
- "RainbowThemePack"
Nota:
El token de oferta en la aplicación que usas en el código debe coincidir con el valor de id. de producto que especifiques al definir el complemento correspondiente para la aplicación en el Centro de partners.
Codificar la característica en un bloque condicional
Debe colocar el código para cada característica asociada a un producto en la aplicación en un bloque condicional que pruebe si el cliente tiene una licencia para usar esa característica.
Este es un ejemplo que muestra cómo se puede codificar una característica de producto denominada featureName en un bloque condicional específico de la licencia. La cadena, featureName, es el token que identifica de forma única este producto dentro de la aplicación y también se usa para identificarlo en la Tienda.
if (licenseInformation.ProductLicenses["featureName"].IsActive) { // the customer can access this feature } else { // the customer can' t access this feature }
Adición de la interfaz de usuario de compra para esta característica
La aplicación también debe proporcionar una manera de que los clientes compren el producto o la característica que ofrece el producto en la aplicación. No pueden comprarlos a través de la Tienda de la misma manera que compraron la aplicación completa.
Aquí se muestra cómo probar para ver si el cliente ya posee un producto en la aplicación y, si no lo hace, muestra el cuadro de diálogo de compra para que pueda comprarlo. Reemplace el comentario "mostrar el cuadro de diálogo de compra" por el código personalizado del cuadro de diálogo de compra (por ejemplo, una página con un botón descriptivo "Comprar esta aplicación").
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. } }
Paso 3: Cambiar el código de prueba a las llamadas finales
Este es un paso sencillo: cambie todas las referencias a CurrentAppSimulator a CurrentApp en el código de la aplicación. Ya no es necesario proporcionar el archivo WindowsStoreProxy.xml, así que quítelo de la ruta de acceso de la aplicación (aunque es posible que quiera guardarlo como referencia al configurar la oferta desde la aplicación en el paso siguiente).
Paso 4: Configurar la oferta de producto en la aplicación en la Tienda
En el Centro de partners, vaya a la aplicación y cree un complemento que coincida con la oferta del producto desde la aplicación. Defina el identificador de producto, el tipo, el precio y otras propiedades del complemento. Asegúrese de configurarla de forma idéntica a la configuración establecida en WindowsStoreProxy.xml al realizar pruebas.
Nota:
El token de oferta en la aplicación que usas en el código debe coincidir con el valor de id. de producto que especifiques para el complemento correspondiente en el Centro de partners.
Comentarios
Si está interesado en proporcionar a los clientes opciones de productos consumibles desde la aplicación (artículos que se pueden comprar, usar y, a continuación, volver a comprarlos si lo desea), vaya al tema Habilitar compras de productos consumibles desde la aplicación.
Si necesita usar recibos para comprobar que el usuario realizó una compra desde la aplicación, asegúrese de revisar Usar recibos para comprobar las compras de productos.