Introducción al SDK de Vungle para Windows v 5

Use esta guía para integrar rápidamente nuestro SDK en su aplicación y comenzar a monetizar.

Los ejemplos de código en esta guía están en C#, pero proporcionamos archivos de aplicación de muestra en C#, C++, Visual Basic y DirectX+XAML de nuestro repositorio de GitHub.

Contenido

Antes de empezar

  • Esta guía es para el SDK de Vungle para Windows v. 5.3.2 y superiores. La guía de integración para SDK de Vungle para Windows versión 1.3.16 y anteriores está aquí: Introducción al SDK de Vungle para Windows v. 1.0 - v. 1.3.16.
  • La integración requiere una cuenta de Vungle, de manera que cree una cuenta de Vungle si aún no tiene una.
  • Si todavía no lo ha hecho, diríjase a nuestro panel de control y agregue la aplicación a su cuenta. Consulte Configurar y generar informes de las ubicaciones para aprender cómo configurar ubicaciones en el panel de control de Vungle.
  • Debe usar Visual Studio 2015 si va a desarrollar para Windows 8.1 y Windows Phone 8.1 porque Visual Studio 2017 ya no admite estas versiones.
  • El botón Atrás se admite en dispositivos móviles, pero no en PC (teclado). Esto puede generar diferentes comportamientos y experiencias del usuario en las compilaciones de UWP.
  • Cambie su aplicación a modo activo si no se devuelven anuncios en el modo de prueba.

Descargue el SDK y agregue VungleSDK a su proyecto

Hay dos formas de añadir Vungle a su proyecto de Visual Studio: usando NuGet o mediante una integración manual.

Opción 1. Integración con NuGet

  1. En Visual Studio, haga clic derecho en Proyecto y seleccione Administrar paquetes NuGet.
  2. Haga clic en Examinar, ingrese “Vungle”, seleccione SDK de Vungle y haga clic en Instalar.

Opción 2. Integración manual

  1. Descargue el SDK de Vungle para Windows desde el Panel de control de Vungle.
  2. Extraiga el archivo.
  3. En Visual Studio, cree un nuevo proyecto usando la plantilla correcta para su aplicación y lenguaje de programación.
  4. Agregue una referencia para su proyecto al archivo SDK de Vungle para Windows que descargó.

El SDK de Vungle tiene dos archivos VungleSDK.windmd: para desarrollos en Windows 10 o 8.1. Use el SDK correcto del directorio extraído, Win10 o Win81.

Capacidad del cliente de internet

Asegúrese de que su proyecto tiene la capacidad internetClient en el archivo package.appxmanifest.

Visual Studio

  1. Haga doble clic en appxmanifest en el Explorador de soluciones.
  2. Seleccione Funcionalidad (Capabilities).
  3. Confirme que la opción Internet (Cliente) esté marcada.

Edición manual

Abra el archivo package.appxmanifeset y agregue internetClient a la sección Capabilities (funcionalidad).

<Capabilities>
...
<Capability Name="internetClient" />
...
</Capabilities>

Importar el espacio de nombres de VungleSDK

using VungleSDK;

Obtener una instancia de VungleAd

La instancia VungleAd toma dos parámetros: una cadena para su id. de la aplicación de Vungle y una matriz de cadenas para las id. de ubicación. Solo puede usar las id. de ubicación que ya ha incluido cuando desea obtener la instancia. Si no incluye una ubicación de almacenamiento automático en caché, el SDK asignará automáticamente una de sus ubicaciones sin almacenamiento automático en caché para que se almacene automáticamente en caché.

VungleAd sdkInstance; string appID = “app_id”; string[] placementArray = new string[] { “placement_id_1”, “placement_id_2”, “placement_id_3” };
sdkInstance = AdFactory.GetInstance(appID, placementArray);

En el ejemplo anterior, reemplace app_id por su id. de la aplicación de Vungle y placement_id_# por las id. de ubicación que va a usar en su proyecto. Le recomendamos que siga estos pasos de inicialización tan pronto como su aplicación termine de cargar los componentes esenciales, para que el almacenamiento automático en caché pueda comenzar cuanto antes.

Crear y registrar un controlador de eventos

Cree un controlador de eventos para el evento OnAdPlayableChanged. Este controlador de eventos se activa cuando cambia el estado de disponibilidad del anuncio. Puede identificar qué ubicación activó el evento al verificar e.Placement.

// Event handler for OnAdPlayableChanged event private async void SdkInstance_OnAdPlayableChanged(object sender, AdPlayableEventArgs e) { // e.Placement - placement ID in string // Run asynchronously on the UI thread await CoreApplication.MainView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, new DispatchedHandler(() => methodToRun(e.Placement))); } 

Registre este controlador de eventos para el evento OnAdPlayableChanged.

sdkInstance.OnAdPlayableChanged += SdkInstance_OnAdPlayableChanged; 

Cargar un anuncio para una ubicación

En el caso de las ubicaciones diferentes a la ubicación de almacenamiento automático en caché, invoque LoadAd primero, permita el tiempo suficiente para que se descarguen los recursos del anuncio, y luego espere que se active OnAdPlayableChanged:

sdkInstance.LoadAd(“placement_id”); 

Nota: la ubicación de almacenamiento automático en caché intentará descargar un nuevo recurso del anuncio inmediatamente después de activar PlayAdAsync, de modo que no es necesario activar LoadAd.

Ejemplo de código:

private void OnLevelStart(Object sender, RoutedEventArgs e) { sdkInstance.LoadAd(“placement_id”); } 

Reproducir un anuncio

Reproducir un anuncio con la configuración predeterminada:

sdkInstance.PlayAdAsync(new AdConfig(), “placement_id”); 

Ejemplo de código:

private async void OnLevelComplete(Object sender, RoutedEventArgs e) { await sdkInstance.PlayAdAsync(new AdConfig(), “placement_id”); } 

Puede personalizar los anuncios al proporcionar opciones para el objeto AdConfig.

Ejemplo de código:

private async void PlayCustomizedAd(Object sender, RoutedEventArgs e) { AdConfig adConfig = new AdConfig(); adConfig.Orientation = DisplayOrientations.Portrait; adConfig.SoundEnabled = false; await sdkInstance.PlayAdAsync(adConfig, placement2); } 

Opciones de personalización

Estas son las propiedades disponibles en la instancia de objeto AdConfig:

Nota: Los anuncios con recompensa se mencionan en algunos casos como anuncios incentivados; ambos términos se refieren siempre al mismo tipo de anuncio publicitario. En el código del SDK y en nuestra API de informes, usamos el término “anuncios incentivados”.

Opciones

Valor predeterminado/
Tipo

Descripción

Orientation

AutoRotate (rotación automática)

DisplayOrientations

Orientation.AutoRotate (predeterminado) hace que el anuncio gire automáticamente según la orientación del dispositivo.

Orientation.Portrait hace que el anuncio se reproduzca solo en orientación vertical.

Orientation.Landscape hace que el anuncio se reproduzca solo en orientación horizontal.

Nota: Esta opción solo se aplica a aplicaciones móviles.

SoundEnabled

true (verdadero)

bool (booleano)

Establece el estado del sonido inicial para el anuncio.

Si es verdadero (predeterminado), el audio respeta el volumen y los ajustes de sonido del dispositivo.

Si es falso, el video comienza en silencio, pero el usuario puede modificarlo.

BackButtonImmediatelyEnabled

false (falso)

bool (booleano)

Si es verdadero, el usuario tiene la posibilidad de salir inmediatamente de un anuncio usando el botón para retroceder.

Si es falso (predeterminado), el usuario no podrá usar el botón para retroceder para salir del anuncio hasta que el botón para cerrar se muestre en la pantalla.

Nota: esta opción solo se aplica a aplicaciones móviles.

UserId

null (nulo)

string (cadena)

Pasa la id. de usuario único (user id) a su aplicación con el fin de verificar si el usuario debe recibir una recompensa por ver un anuncio incentivado cuando la devolución de llamada de servidor a servidor se usa para la verificación.

Nota: Esta configuración es aplicable solo para las ubicaciones para anuncios con recompensas.

IncentivizedDialogTitle

“¿Desea cerrar este anuncio?”

string (cadena)

Establece el título del cuadro de diálogo de confirmación al omitir un anuncio incentivado.

Nota: Esta configuración es aplicable solo para las ubicaciones para anuncios con recompensas.

IncentivizedDialogBody

“¿Está seguro de que desea omitir este anuncio? Debe terminar de verlo para reclamar su recompensa”.

string (cadena)

Establece el cuerpo del cuadro de diálogo de confirmación al omitir un anuncio incentivado.

Nota: Esta configuración es aplicable solo para las ubicaciones para anuncios con recompensas.

IncentivizedDialogCloseButton

“Close” (cerrar)

 

string (cadena)

Establece el texto del botón “Cancelar” del cuadro de diálogo de confirmación al omitir un anuncio incentivado.

Nota: Esta configuración es aplicable solo para las ubicaciones para anuncios con recompensas.

IncentivizedDialogContinueButton

“Continue” (continuar)

string (cadena)

Establece el texto del botón de “continuar mirando” del cuadro de diálogo de confirmación al omitir un anuncio incentivado.

Nota: Esta configuración no es aplicable si el anuncio no es incentivado.

Incentivized

-

OBSOLETO

Puede establecer la configuración con recompensa en el nivel de las ubicaciones desde el panel de control. Consulte Configurar y generar informes de las ubicaciones.


Nota:
Las opciones de SoundEnabled y las ventanas de diálogo incentivadas para la Dynamic Template y los anuncios de Flex View están disponibles en el panel de control para configurarlas. La configuración programática solo se aplicará a los anuncios heredados.

Mostrar el botón Cerrar

Para controlar si un usuario cuenta con la opción de salir de un anuncio, use las opciones de visualización forzada en los ajustes avanzados de su aplicación en el Panel de control de Vungle.

Suscribirse a los controladores de eventos

El SDK para Windows genera varios eventos que usted puede controlar de manera programática. Puede usar estos controladores de eventos para controlar las funciones de su aplicación, como pausar/reanudar la música de fondo.

Nota sobre el subproceso de la IU

Los monitores de eventos se ejecutan en un subproceso en segundo plano, de manera que cualquier interacción o actualización de la interfaz de usuario (IU) de un monitor de eventos se debe pasar al subproceso de la IU principal antes de su ejecución. Esta es una manera de hacerlo:

await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
new DispatchedHandler(() =>
{ // This block will be executed in the UI thread
} );

Controladores de eventos de VungleAd

Controladores de eventos

Descripción

OnInitCompleted

Se activa inmediatamente después de que haya finalizado la inicialización del SDK. Puede verificar si hay un anuncio descargado de una sesión anterior, o cargar un anuncio para las ubicaciones.

OnAdPlayableChanged

Notifica sobre el cambio de la disponibilidad del anuncio para la ubicación. Espere a que este controlador de eventos realice una acción cuando un anuncio se encuentre disponible después de cargar un anuncio para la ubicación.

OnAdStart

Se activa antes de reproducir un anuncio. Puede realizar acciones como pausar la música de fondo.

OnAdEnd

Se activa cuando el usuario cierra la tarjeta de objetivos y la aplicación vuelve a tener el control. Si IsCompletedView o CallToActionClicked es verdadero, el usuario miró el anuncio o hizo clic en el botón de descarga del anuncio. En este caso, si se trataba de un anuncio con recompensa, el usuario debe recibir una recompensa. Puede realizar acciones como reanudar las funciones de la aplicación.

Diagnostic

Se activa cuando el SDK desea imprimir los registros de diagnóstico.

Ejemplo de código:

//Register event handlers sdkInstance.OnInitCompleted += SdkInstance_OnInitCompleted; sdkInstance.OnAdPlayableChanged += SdkInstance_OnAdPlayableChanged; sdkInstance.OnAdStart += SdkInstance_OnAdStart; sdkInstance.OnAdEnd += SdkInstance_OnAdEnd; sdkInstance.Diagnostic += SdkInstance_Diagnostic; ... // OnInitCompleted // e.Initialized - true if initialization succeeded, false if failed // e.ErrorMessage - reason for failure when e.Initialized is false private async void SdkInstance_OnInitCompleted(object sender, ConfigEventArgs e) { var placementsInfo = "OnInitCompleted: " + e.Initialized; // Initilization was success if (e.Initialized == true) { // Print out list of placements for (var i = 0; i < e.Placements.Length; i++) { placementsInfo += "\n\tPlacement" + (i + 1) + ": " + e.Placements[i].ReferenceId; if (e.Placements[i].IsAutoCached == true) placementsInfo += " (Auto-Cached)"; } } // Initilization failed else { placementsInfo += "\n\t" + e.ErrorMessage; } System.Diagnostics.Debug.WriteLine(placementsInfo); await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, new DispatchedHandler(() => NotifyInitialization(e.Initialized))); } // OnAdPlayableAdPlayable // e.AdPlayable - true if an ad is available to play, false otherwise // e.Placement - placement ID in string private async void SdkInstance_OnAdPlayableChanged(object sender, AdPlayableEventArgs e) { System.Diagnostics.Debug.WriteLine("OnAdPlayable(" + e.Placement + ") - " + e.AdPlayable); await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, new DispatchedHandler(() => NotifyWatcher(e.AdPlayable, e.Placement))); } // OnAdStart // e.Id - Vungle app ID in string // e.Placement - placement ID in string private void SdkInstance_OnAdStart(object sender, AdEventArgs e) { System.Diagnostics.Debug.WriteLine("OnAdStart(" + e.Id + "): " + e.Placement); } // OnAdEnd // e.Id - Vungle app ID in string // e.Placement - placement ID in string // e.IsCompletedView- true when 80% or more of the video was watched // e.CallToActionClicked - true when the user has clicked download button on end card // e.WatchedDuration - DEPRECATED private void SdkInstance_OnAdEnd(object sender, AdEndEventArgs e) { System.Diagnostics.Debug.WriteLine("OnVideoEnd(" + e.Id + "): " + "\n\tPlacement: " + e.Placement + "\n\tIsCompletedView: " + e.IsCompletedView + "\n\tCallToActionClicked: " + e.CallToActionClicked + "\n\tWatchedDuration: " + e.WatchedDuration); } // Event handler called when SDK wants to print diagnostic logs private void SdkInstance_Diagnostic(object sender, DiagnosticLogEvent e) { System.Diagnostics.Debug.WriteLine("Diagnostic - "
+ e.Level + " "
+ e.Type + " "
+ e.Exception + " "
+ e.Message); } // DEPRECATED - Use SdkInstance_OnAdEnd() instead private void SdkInstance_OnVideoView(object sender, AdViewEventArgs e) { }

Reproducción de anuncios Native Flex

SDK de Vungle para Windows 5.1.0+ es compatible con nuestra nueva función Native Flex. VungleAdControl logra crear anuncios de video en formatos nativos pasando contenedor personalizado al SKD de Vungle a través de la propiedad AdConfig.AdContainer y gestionando el contenido Container.Content de la aplicación host.

Requisitos para anuncios Native Flex

  • Windows SDK 5.1.0+
  • UWP para Windows 10

Para configurar las ubicaciones de un anuncio Native Flex, consulte con su gerente de cuentas o póngase en contacto con tech-support@vungle.com.

Configuración de la IU para los anuncios Native Flex - XAML

VungleAdControl debe declararse con la id. de la aplicación Vungle, con todas las id. de ubicación utilizadas en la aplicación y en la id. de la ubicación de la vista Native Flex o ubicación de transmisión en particular. También puede establecer aquí el UserId que se utiliza para las ubicaciones de anuncios recompensadas.

Ejemplo de código:

<Grid
<UI:VungleAdControl x:Name="vungleEmbedded"
Height="200"
Width="300"
AppID="vungle_app_id"
Placements="placement_id_1,placement_id_2,native_flex_id"
Placement = "native_flex_id"
UserId="vungle_test_user">
<TextBlock x:Name="Vungle Native Flex Ad"/>
</UI:VungleAdControl>
</Grid>

Cargar un anuncio Native Flex

Cargar un anuncio por medio de una ubicación Native Flex es idéntico al proceso de colocar un anuncio de pantalla completa.

Ejemplo de código:

sdkInstance.LoadAd(“native_flex_id”); 

Reproducir un anuncio Native Flex

Reproducir un anuncio por medio de una ubicación Native Flex es similar a reproducir un anuncio de pantalla completa, pero cualquier personalización deberá configurarse en .xaml o en el Panel de control, incluida iniciar el anuncio con el sonido desactivado.

Ejemplo de código:

await vungleEmbedded.PlayAdAsync();

Cerrar un anuncio Native Flex

Debido a la naturaleza de los anuncios de Native Flex, un usuario puede dejar de ver el video sin cerrar el anuncio. Por lo tanto, debe decirle al SDK que desestime el anuncio cuando ya no esté en la pantalla. Para hacer esto, hemos introducido dos métodos para cerrar un anuncio de Flex nativo:

  • Use CloseFlexViewAd(String placementId) para cerrar inmediatamente el anuncio con la id. de ubicación dada.

  • Use SetFlexViewCloseTimeInSec(String placementId, int seconds) para cerrar la ubicación dada después de que haya transcurrido el número especificado de segundos.

Controladores de eventos para anuncios Native Flex

Considere la opción de registrar diferentes controladores de eventos para gestionar los distintos comportamientos de los anuncios nativos y los de pantalla completa, para asegurar una experiencia más fluida para el usuario.

Ejemplo de código:

vungleEmbedded.OnAdStart += (sender, arg) => { ... } vungleEmbedded.OnAdEnd += (sender, arg) => { ... } await vungleEmbedded.PlayAdAsync(); 
¿Tiene más preguntas? Enviar una solicitud

Comentarios