Contenido
- RGPD: Implementación recomendada
- Antes de empezar
- Paso 1. Agregue el framework de Vungle a su proyecto de Xcode
- Paso 2. Quite la barra de estado de iOS
- Paso 3. Añada el código
RGPD: Implementación recomendada
A partir del 25 de mayo, se aplica en la Unión Europea el Reglamento General de Protección de Datos (RGPD, también conocido por sus iniciales en inglés: GDPR). Para cumplir con el RGPD, los desarrolladores tienen dos opciones.
- Opción 1 (recomendada): El editor controla el proceso de consentimiento de RGPD a nivel del usuario y luego comunica la elección del usuario a Vungle. Para hacer esto, los desarrolladores pueden recoger el consentimiento del usuario usando su propio mecanismo y luego usar las API de Vungle para actualizar o consultar el estado de consentimiento del usuario. Consulte la sección Instrucciones de implementación recomendadas para RGPD para obtener más información.
- Opción 2: Permitir que Vungle maneje los requisitos. Vungle mostrará un cuadro de diálogo de consentimiento antes de reproducir un anuncio para un usuario europeo, y recordará el consentimiento o rechazo del usuario para anuncios posteriores.
Antes de empezar
- El SDK v. 6 de Vungle para iOS es compatible con iOS 8+.
- El SDK v. 6 de Vungle para iOS se ha probado con iOS 11 beta/GM Seed.
- El SDK v. 6 de Vungle para iOS es compatible con aplicaciones de 32 bits y 64 bits.
- La integración requiere que tenga una cuenta de Vungle. Si aún no tiene una cuenta, cree una antes de continuar.
- Nuestro SDK para iOS es compatible con Xcode 9.0 o superior.
Paso 1. Agregue el framework de Vungle a su proyecto de Xcode
Añada el VungleSDK.framework a su proyecto
Hay dos formas de añadir Vungle a su proyecto de Xcode: usando Cocoapods o mediante integración manual.
Cocoapods
El SDK de Vungle se encuentra disponible mediante Cocoapods. Añada Vungle a su proyecto añadiendo la siguiente línea en el archivo Podfile de su proyecto.
pod "VungleSDK-iOS", "6.2.0"
Después de eso, pod install debería actualizar su proyecto con la última versión de nuestro SDK para iOS. En este momento, puede pasar al “Paso 2. Quite la barra de estado de iOS”.
Integración manual
Descargue el SDK de Vungle v6. Si realiza una actualización desde una versión anterior del SDK de Vungle, primero elimine el directorio VungleSDK.framework completamente antes de agregar el nuevo SDK.
Encuentre los archivos extraídos y arrastre el directorio VungleSDK.framework
a Xcode, bajo Frameworks. Asegúrese de añadir la carpeta VungleSDK.framework
como un grupo (carpeta amarilla) y no como una referencia (carpeta azul).
Añada otros frameworks obligatorios
El SDK de Vungle requiere vincular otros marcos (frameworks) nativos a su proyecto, así que haga clic en su proyecto en el Project Navigator (navegador de proyectos) y diríjase a General → Linked Frameworks and Libraries (Bibliotecas y frameworks vinculados).
Muchos de estos marcos ya se incluyen por defecto en la mayoría de los proyectos de Xcode, pero asegúrese de añadir cualquiera de los siguientes que todavía no se haya incluido:
AdSupport.framework
AudioToolbox.framework
AVFoundation.framework
CFNetwork.framework
CoreGraphics.framework
CoreMedia.framework
libz.dylib
olibz.tbd
MediaPlayer.framework
QuartzCore.framework
StoreKit.framework
SystemConfiguration.framework
Nota: El SDK de Vungle v.6 no es compatible con iOS 7. Si tiene iOS 7 como destino de despliegue, use Vungle iOS SDK v.4.1 o anterior e incluya estos marcos:
UIKit.framework
WebKit.framework
Foundation.framework
Asegúrese de que el framework de VungleSDK aparezca bajo Bibliotecas y frameworks vinculados.
Añada el banderín de enlace “-ObjC”
Haga clic en su proyecto en Project Navigator y vaya a Build Settings → Linking → Other Linker Flags. Agregue -ObjC a Other Linker Flags.
Paso 2. Quite la barra de estado de iOS
A pesar de que no es obligatorio, recomendamos quitar la barra de estado de iOS para garantizar que la interacción y la presentación del anuncio de Vungle sean fluidas. Para quitar la barra de estado, abra Info.plist
y añada la clave View controller-based status bar appearance y establezca la opción en No.
Paso 3. Añada el código
Inicialice el SDK
Inicialice el SDK tan pronto como se inicie su aplicación; si está utilizando una ubicación de almacenamiento automático en caché, esto le da al SDK el tiempo suficiente para almacenar en caché un anuncio para esa ubicación. Necesitará la id. de la aplicación para inicializar el SDK. Puede encontrarla en el Panel de control de Vungle.
- (BOOL)startWithAppId:(nonnull NSString *)appID error:(NSError **)error;
Ejemplo de código:
#import <VungleSDK/VungleSDK.h>
...
NSError* error;
NSString* appID = @"Your_AppID_Here"; VungleSDK* sdk = [VungleSDK sharedSDK]; [sdk startWithAppId:appID error:&error];
Luego de que el SDK se inicializa correctamente, se invoca el siguiente método de devolución de llamada:
- (void)vungleSDKDidInitialize;
Consulte la sección “Devoluciones de llamadas de delegados” de este artículo.
También, puede comprobar el estado de la inicialización del SDK con la siguiente propiedad:
@property (atomic, readonly, getter=isInitialized) BOOL initialized;
Después de inicializar el SDK, si seleccionó una ubicación como de Auto Cached (Caché automático) en el Panel de control de Vungle, el SDK guarda automáticamente en caché un anuncio para esa ubicación. Si usa esta función, le recomendamos que seleccione la ubicación más vista para el almacenamiento automático en caché.
Luego de que un anuncio se almacena en caché correctamente, se activa el método de devolución de llamada vungleAdPlayabilityUpdate
que contenga una id. de referencia de ubicación que coincida con su ubicación de almacenamiento automático en caché. (Consulte la sección “Comprobar la disponibilidad de un anuncio para una ubicación” de este artículo).
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 el método loadPlacementWithID
para cargar un anuncio.
- (BOOL)loadPlacementWithID:(NSString *)placementID error:(NSError **)error;
Ejemplo de código:
NSError* error;
VungleSDK* sdk = [VungleSDK sharedSDK]; [sdk loadPlacementWithID:"<Your_PlacementID>" error:&error];
Consulte la sección “Comprobar la disponibilidad de un anuncio para una ubicación” de este artículo.
Comprobar la disponibilidad de un anuncio para una ubicación
Luego de que el SDK finalice el almacenamiento en caché de un anuncio para una ubicación, se invoca el siguiente método de devolución de llamada:
- (void)vungleAdPlayabilityUpdate:(BOOL)isAdPlayable placementID:(nullable NSString *)placementID error:(nullable NSError *)error;
Ejemplo de código:
- (void)vungleAdPlayabilityUpdate:(BOOL)isAdPlayable placementID:(NSString *)placementID error:(nullable NSError *)error {
if([placementID isEqualToString:@"<Your_PlacementID>"]) {
self.playButtonPlacement1.enabled = isAdPlayable;
}
}
Nota: en el caso de la ubicación de almacenamiento automático en caché, este método de devolución de llamada solo se invoca cuando un anuncio está disponible. El SDK continuará solicitando anuncios para la ubicación de almacenamiento automático en caché. En el resto de las ubicaciones, este método de devolución de llamada se invoca en caso de un “Error en la carga” (isAdPlayable
devuelve un “No”’ en este caso).
También, puede comprobar la disponibilidad de un anuncio para una ubicación con la siguiente propiedad:
- (BOOL)isAdCachedForPlacementID:(nonnull NSString *)placementID;
Reproducir un anuncio
Tras comprobar que un anuncio publicitario está listo para una ubicación, puede reproducirlo con el siguiente método:
- (BOOL)playAd:(UIViewController *)controller options:(nullable NSDictionary *)options placementID:(nullable NSString *)placementID error:( NSError *__autoreleasing _Nullable *_Nullable)error;
Ejemplo de código:
VungleSDK* sdk = [VungleSDK sharedSDK]; NSError *error; [self.sdk playAd:self options:nil placementID:@"<Your_PlacementID_1>" error:&error]; if (error) { NSLog(@"Error encountered playing ad: %@", error); }
Anuncios de Flex Feed
Desde el SDK de Vungle v.5.3, admitimos anuncios Flex Feed. Este es el primer formato de anuncio que no requiere una pantalla completa; en cambio, el editor determina las dimensiones exactas y la ubicación del contenedor de anuncios dentro de su aplicación. Estos contenedores publicitarios pueden estar en vistas de colección o vistas de tabla.
Cargar un anuncio de Flex Feed
Cargar un anuncio publicitario es igual que cargar un anuncio de pantalla completa; sin embargo, la colocación debe configurarse para que sea compatible con Flex Feed. Comuníquese con el administrador de su cuenta de Vungle para que habilite Flex Feed para una colocación.
Exhibición de un anuncio de Flex Feed
La exhibición de los anuncios de Flex Feed son diferentes a la presentación de los anuncios de pantalla completa. Para los anuncios de Flex Feed, primero debe crear un contenedor para el anuncio. Este contenedor es una UIView
. Usted puede colocar dicha UIView
en cualquier lugar de la pantalla. El anuncio se adaptará al tamaño que tenga el contenedor, pero tome en cuenta que una baja resolución hará que los anuncios sean menos visibles. Después, usted debe llamar a la función addAdViewToView
para asociar el contenedor con el anuncio de Flex Feed.
Descripción general de la función:
/** * Pass in an UIView which acts as a container for the ad experience. This view container may be placed in random positions. * @param publisherView container view in which an ad will be displayed * @param options A reference to an instance of NSDictionary with customized ad playback options * @param placementID The placement defined on the Vungle dashboard * @param error An optional double reference to an NSError. In case this method returns `NO` it will be non-nil * @return YES/NO in case of success/error while presenting an AdUnit */ - (BOOL)addAdViewToView:(UIView *)publisherView withOptions:(nullable NSDictionary *)options placementID:(nullable NSString *)placementID error:( NSError *__autoreleasing _Nullable *_Nullable)error;
Ejemplo de código:
NSError *error; NSDictionary *options = @{}; VungleSDK* sdk = [VungleSDK sharedSDK]; [sdk addAdViewToView:_FlexFeedViewArea withOptions:options placementID: error:&error]; if (error) { NSLog(@"Error encountered while playing an ad: %@", error); }
Cierre de un anuncio de Flex Feed
Debido a la naturaleza de los anuncios de Flex Feed, 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 ello, se debe llamar a la función finishedDisplayingAd
. Esta función solo funciona con anuncios Flex Feed y Flex View. Tenga en cuenta que esta función no incluye una ubicación; simplemente cerrará cualquier anuncio nativo que se esté reproduciendo actualmente.
Descripción general de la función:
/** * This method must be called when the publisher is confident that they are finished displaying the ad unit. * This signals to the SDK that a new ad may be fetched or a different ad may be displayed. This will * be called in conjunction with `addViewToView:containedInViewController:withOptions:placementID:error:` */ - (void)finishedDisplayingAd;
Ejemplo de código:
//Ad is no longer on screen VungleSDK* sdk = [VungleSDK sharedSDK]; [sdk finishedDisplayingAd];
Devoluciones de llamadas de delegados
Puede recibir devoluciones de llamadas del SDK con VungleSDKDelegate
. Existen cuatro métodos de devolución de llamadas en el delegado donde recibe las notificaciones de los eventos del SDK.
Puede vincular y desvincular su delegado con:
// Attach [[VungleSDK sharedSDK] setDelegate:yourDelegateInstance]; // Detach [[VungleSDK sharedSDK] setDelegate:nil];
Nota: Recuerde eliminar el delegado registrado cuando ya no sea necesario para evitar pérdidas de memoria.
El siguiente método se invoca cuando el SDK reproducirá un anuncio de video. Se trata de un lugar ideal para pausar la reproducción, los efectos de sonido, las animaciones, etc.
- (void)vungleWillShowAdForPlacementID:(nullable NSString *)placementID;
El siguiente método se invoca cuando el SDK cerrará un anuncio. Se trata de un lugar ideal para recompensar a su usuario y reanudar la reproducción, los efectos de sonido, las animaciones, etc.
- (void)vungleWillCloseAdWithViewInfo:(VungleViewInfo *)info placementID:(NSString *)placementID;
Se llama al siguiente método cuando el SDK ha cerrado un anuncio:
- (void)vungleDidCloseAdWithViewInfo:(VungleViewInfo *)info placementID:(NSString *)placementID;
VungleViewInfo
incluye las siguientes propiedades que le permiten comprobar el resultado de la reproducción de un anuncio:
@interface VungleViewInfo : NSObject //Represents a BOOL whether or not the video can be considered a completed view. @property (nonatomic, readonly) NSNumber *completedView; //The time in seconds that the user watched the video. @property (nonatomic, readonly) NSNumber *playTime; //Represents a BOOL whether or not the user clicked the download button. @property (nonatomic, readonly) NSNumber *didDownload; @end
El siguiente método se invoca cuando el SDK modificó el estado de disponibilidad del anuncio. La expresión booleana isAdPlayable denota la nueva reproductibilidad de una placementID determinada.
- (void)vungleAdPlayabilityUpdate:(BOOL)isAdPlayable placementID:(nullable NSString *)placementID error:(nullable NSError *)error;
Consulte la sección “Comprobar la disponibilidad de un anuncio para una ubicación” de este artículo.
El siguiente método se invoca cuando el SDK se inicializa correctamente:
- (void)vungleSDKDidInitialize;
Opciones de personalización
Use estas opciones para personalizar la experiencia del anuncio durante la reproducción.
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”.
Claves de opciones |
Tipo / Valor por defecto |
Descripción |
|
autorotate (rotación automática)
Un NSNumber que representa una máscara de bits con orientaciones |
Establece la orientación del anuncio. Le recomendamos que permita que los anuncios roten automáticamente, incluso si su aplicación está en modo de retrato. De esta manera, el usuario tiene la opción de visualizar videos a tamaño completo, lo que mejora la experiencia. Puede lograrlo ajustando la orientación al nivel de controlador de visualización (en lugar de a nivel de proyecto). |
|
nil
|
Establece su id. de usuario. El valor se pasa al servidor de Vungle y se envía a su servidor a través de un sistema de devolución de llamadas de servidor a servidor si se establece una ubicación como “con recompensa”. |
|
nil
|
Cadena que se utiliza como título de un cuadro de diálogo de alerta que aparece cuando un usuario cierra un anuncio incentivado prematuramente. |
|
“¿Está seguro de que desea saltar este anuncio? Si lo omite, es posible que no reciba recompensa”
|
Cadena que se utiliza como texto del cuerpo del cuadro de diálogo de alerta que se presenta cuando un usuario cierra un anuncio incentivado prematuramente. |
|
“Cerrar”
|
Título de la cadena del texto del botón de cierre del cuadro de diálogo de alerta que aparece cuando un usuario cierra un anuncio incentivado prematuramente |
|
“Continuar”
|
Título de la cadena del texto del botón de cierre del cuadro de diálogo de alerta que aparece cuando un usuario cierra un anuncio incentivado prematuramente |
VunglePlayAdOptionKeyFlexViewAutoDismissSeconds |
|
Utilice esta opción para hacer que los anuncios Flex Fiew se descarten automáticamente después de la cantidad de segundos especificada. |
VunglePlayAdOptionKeyOrdinal |
|
Si recibe informes de datos ordinales de Vungle, use este campo para pasar el ordinal de mediación. Este es un número entero que indica el orden en que se mostró este anuncio en la sesión del juego (por ejemplo, si ya se mostraron dos anuncios en esta sesión, y este anuncio de Vungle se mostró tercero, pase “3”). Lea más sobre datos ordinales aquí. |
NSDictionary *options = @{VunglePlayAdOptionKeyOrientations: @(UIInterfaceOrientationMaskLandscape), VunglePlayAdOptionKeyUser: @"userGameID", VunglePlayAdOptionKeyIncentivizedAlertBodyText : @"If the video isn't completed you won't get your reward! Are you sure you want to close early?", VunglePlayAdOptionKeyIncentivizedAlertCloseButtonText : @"Close", VunglePlayAdOptionKeyIncentivizedAlertContinueButtonText : @"Keep Watching", VunglePlayAdOptionKeyIncentivizedAlertTitleText : @"Careful!"}; // Pass in dict of options, play ad NSError *error; [self.sdk playAd:self options:options placementID: error:&error]; if (error) { NSLog(@"Error encountered playing ad: %@", error); }
Opción de silencio
La instancia del SDK de Vungle ofrece la opción de reproducir los anuncios con el sonido desactivado. Puede establecer la propiedad de silencio como verdadera antes de invocar un playAd()
.
Ejemplo de código:
VungleSDK* sdk = [VungleSDK sharedSDK]; self.sdk.muted = true;
Nota: esta opción solo se aplica al tipo de anuncio estándar. La opción de silencio para los anuncios de plantilla dinámica se puede configurar en el panel de control.
Instrucciones de implementación recomendadas para RGPD
Para usar las API de Vungle para actualizaciones o consultas sobre el estado de consentimiento del usario (según la recomendación de la Opción 1 de las Instrucciones de implementación recomendadas para RGPD de Vungle) use estas funciones:
// This function sets the consent status that will be recorded in Vungle SDK. Accepted values: 'VungleConsentAccepted' or 'VungleConsentDenied'.
// To set the user's consent status to opted in:
[[VungleSDK sharedSDK] updateConsentStatus:VungleConsentAccepted];
// To set the user's consent status to opted out:
[[VungleSDK sharedSDK] updateConsentStatus:VungleConsentDenied];
// To find out what the user's current consent status is:
// (Check against enum values: 'VungleConsentAccepted' or 'VungleConsentDenied'.) [[VungleSDK sharedSDK] getCurrentConsentStatus];
VungleConsentStatus
es una enumeración que contiene dos estados:
VungleConsentAccepted
VungleConsentDenied
El SDK también tiene un estado inicial de “desconocido”, que le solicita al usuario optar por participar o no en la recopilación de datos del usuario. Tenga en cuenta que este aviso solo se produce en direcciones IP originarias de Europa.
Depuración
Si necesita información del SDK, puede obtenerla con esta propiedad:
- (NSDictionary *)debugInfo;
Si desea que el SDK genere registros, use el siguiente método:
- (void)setLoggingEnabled:(BOOL)enable;
Protocolo VungleSDKLogger
@protocol VungleSDKLogger - (void)vungleSDKLog:(NSString*)message; @end
La instancia única de VungleSDK envía eventos de registro a cualquier clase vinculada que siga el protocolo VungleSDKLogger. El evento de registro contiene el valor NSString, que también se imprimirá en la consola (si se ha habilitado el registro). Para vincular su registrador, utilice lo siguiente:
[sdk attachLogger:yourLoggerInstance];
Como se menciona anteriormente, es importante eliminar los registradores vinculados del SDK de Vungle. Los registradores se pueden desvincular de la siguiente manera:
[sdk detachLogger:yourLoggerInstance];
Protocolo assetLoader
@protocol VungleAssetLoader /** * debe devolver un NSData que contenga los datos (brutos) de una imagen para la ruta específica o nil. */ - (NSData*)vungleLoadAsset:(NSString*)path; /** * debe devolver un UIImage válido para la ruta específica o nil. */ - (UIImage*)vungleLoadImage:(NSString*)path; @end