Descarga e integra el SDK de Chartboost para Adobe AIR

Última actualización:

 

Añade tu juego móvil al red de Chartboost con solo 10 líneas de código.

 


 

¿Qué incluye el paquete? Nuestro paquete SDK está repleto de prestaciones.

Anuncios en video de alta calidad especialmente diseñados para recompensar a tus jugadores.

Intersitiales personalizables que ofrecen a tus jugadores una experiencia impecable sin salir del juego.

Un eficaz conjunto de analíticas para dirigirte a la mejor audiencia posible.

Ver las notas completas del SDK ▶

 


 

¿Listo para integrar el SDK de Chartboost? ¡Vamos allá!

 


 

 

Antes de empezar:

Añadir el plugin AIR a tus juegos es fácil y rápido. Solo necesitas unos pocos ingredientes:

  • Una cuenta de Chartboost
  • Una aplicación en tu panel de control
  • El último plugin AIR
  • Una campaña de ofertas activa
  • El plugin Chartboost Adobe AIR está actualmente en versión beta.
  • El plugin usa SDK de iOS v6.4.7 y SDK de Android v6.4.2.
  • El pugin AIR de Chartboost es compatible con iOS 6 o posterior y Android 2.3 o posterior.
  • Requiere bandera compiladora -swf-version 33. En Flash Builder, se introduce en Project properties > Flex Compiler > Additional compiler arguments.
  • Requiere SDK AIR versión 22 o posterior.

 

 

Importa la extensión nativa de Chartboost en tu aplicación AIR.

Te recomendamos que crees un directorio en tu proyecto para extensiones nativas en el que puedas copiar Chartboost.ane y Chartboost.swc. Después (si utilizas Flash Builder) puedes añadir el directorio como una extensión nativa en la configuración de tu proyecto.

 


 

Añade la declaración <extensionID> al elemento <application> de la raíz de descriptor de tu aplicación AIR.

<extensions>
    <extensionID>com.chartboost.plugin.air</extensionID>
</extensions>

Si estás trabajando en Android, también debes añadir estos manifiestos al archivo del descriptor de tu aplicación AIR (recuerda que debes incluir tu ID y firma de aplicación de Chartboost):

<manifestAdditions><![CDATA[
 <manifest android:installLocation="auto">
        <!--Este permiso es obligatorio para Chartboost. -->
        <uses-permission android:name="android.permission.INTERNET"/>

        <!--Estos permisos están recomendados para Chartboost. -->
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
 <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
 
 <application>
            <!--El ID y la firma de la versión Android de tu aplicación AIR deben colocarse aquí. -->
            <meta-data android:name="__ChartboostAir__AppID" android:value="ANDROID_APP_ID" />
 <meta-data android:name="__ChartboostAir__AppSignature" android:value="ANDROID_APP_SIGNATURE" />
            
            <!--Requerido también para el SDK de Chartboost. -->
            <activity android:name="com.chartboost.sdk.CBImpressionActivity"
 android:excludeFromRecents="true" 
 android:hardwareAccelerated="true"
 android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
 android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" />

            <!--Para Google Play Services (requerido por Chartboost) -->
            <meta-data android:name="com.google.android.gms.version"
 android:value="@integer/google_play_services_version" />
 </application>
 </manifest>
]]></manifestAdditions>

Desarrolladores de Android: Si utilizar otro plugin que incluya Google Play Services, podrías recibir un mensaje de error. Utiliza el ANE que no incluye Google Play Services si quieres evitar este conflicto.

 


 

Importa las clases de Chartboost

import com.chartboost.plugin.air.*;

 


 

Inicializa Chartboost

Llama al método startWith() con la stage de aplicación de AIR y tu ID y firma de aplicación de Chartboost. Es probable que necesites llamarlo de forma condicional para distintas plataformas. Aquí tienes algunas funciones de ayuda que puedes utilizar:

if (Chartboost.isAndroid()) {
    Chartboost.startWith(stage, "ANDROID_APP_ID", "ANDROID_APP_SIGNATURE");
} else if (Chartboost.isIOS()) {
    Chartboost.startWith(stage, "IOS_APP_ID", "IOS_APP_SIGNATURE");
}
Debes inicializar Chartboost para que podamos registrar los arranques de tu juego. Si no inicializas Chartboost, no podrás realizar campañas de anuncios.

 


 

Para mostrar un intersitial estático o de video:

Chartboost.showInterstitial(CBLocation.DEFAULT);
No llames a showInterstitial directamente después de cacheInterstitial para la misma ubicación o el SDK fallará sin aviso.
Te recomendamos que guardes en caché tus intersitiales antes de mostrarlos. Más información sobre caché ▶

 

Para mostrar un anuncio de video con recompensa

Chartboost.showRewardedVideo(CBLocation.DEFAULT);
No llames a showRewardedVideo directamente después de cacheRewardedVideo para la misma ubicación o el SDK fallará sin aviso.
Te recomendamos que guardes en caché tus intersitiales antes de mostrarlos. Más información sobre caché ▶

 

Para llamar a los métodos de Chartboost:

En /actionscript/src/com/chartboost/plugin/air/Chartboost.as encontrarás los métodos AIR-a-nativo que se utilizan para interactuar con el plugin de Chartboost:

/** Inicializa el plugin de Chartboost */
public static function startWith(stage:Stage, appID:String, appSignature:String):void

/** Escucha un evento de delegado de la clase ChartboostEvent. Ver la documentación.
* del evento que elijas para los argumentos y devuelve el valor de la función que hayas incluido. */
public static function addDelegateEvent(eventName:String, listener:Function):void

/** Guarda en caché un intersitial. */
public static function cacheInterstitial(location:String):void

/** Muestra un intersitial. */
public static function showInterstitial(location:String):void

/** Comprueba si un intersitial está en caché. */
public static function hasInterstitial(location:String):Boolean

/** Guarda en caché la página MoreApps. */
public static function cacheMoreApps(location:String):void

/** Muestra la página MoreApps. */
public static function showMoreApps(location:String):void

/** Comprueba si una página MoreApps está en caché. */
public static function hasMoreApps(location:String):Boolean

/** Guarda en caché el video con recompensa. */
public static function cacheRewardedVideo(location:String):void

/** Muestra el video con recompensa. */
public static function showRewardedVideo(location:String):void

/** Comprueba si el video con recompensa está en caché. */
public static function hasRewardedVideo(location:String):Boolean

/** Guarda un anuncio in-play en caché. */
public static function cacheInPlay(location:String):void

/** Obtiene el anuncio in-play en caché.
* Esta es una operación asíncrona. En lugar de devolver un objeto CBInPlay,
*  se pasa a la Función provista una vez lista.
* Si no hay un anuncio in-play disponible, la Función no se llama.
* La función provista debe tener un argumento, un objeto CBInPlay. Puedes encontrar un ejemplo en la aplicación de muestra. */
public static function getInPlay(location:String, fn:Function):void

/** Comprueba si un anuncio in-play está en caché. */
public static function hasInPlay(location:String):Boolean

/** Haz esta llamada según lo que tu UI muestre en respuesta al
* método delegado didPauseClickForConfirmation() */
public static function didPassAgeGate(pass:Boolean):void

/** Ajustes personalizados */
public static function setCustomID(customID:String):void
public static function getCustomID():String

/** Configura si los intersitiales serán solicitados en la primera sesión de un usuario. */
public static function setShouldRequestInterstitialsInFirstSession(shouldRequest:Boolean):void

/** Configura si quieres utilizar o no la función de barrera de edad.
* Llama a Chartboost.didPassAgeGate() para enviar tu respuesta de usuario. */
public static function setShouldPauseClickForConfirmation(shouldPause:Boolean):void

/** Configura si la página MoreApps mostrará una vista de carga a pantalla completa. */
public static function setShouldDisplayLoadingViewForMoreApps(shouldDisplay:Boolean):void

/** Configura si el contenido de video será precargado. */
public static function setShouldPrefetchVideoContent(shouldPrefetch:Boolean):void

/** Controla si los anuncios se guardan automáticamente en caché cuando sea posible (por defecto: true). */
public static function setAutoCacheAds(shouldCache:Boolean):void
public static function getAutoCacheAds():Boolean

/** Analíticas de compras dentro de la aplicación de Chartboost */
public static function trackIOSInAppPurchaseEvent(receipt:String, title:String, description:String, price:Number, currency:String, productID:String):void
public static function trackGooglePlayInAppPurchaseEvent(title:String, description:String, price:String, currency:String, productID:String, purchaseData:String, purchaseSignature:String):void
public static function trackAmazonStoreInAppPurchaseEvent(title:String, description:String, price:String, currency:String, productID:String, userID:String, purchaseToken:String):void

/** Analíticas de post-instalación de Chartboost */
public static function trackLevelInfoEvent(eventLabel:String, eventField:CBLevelType, mainLevel:int, subLevel:int, description:String):void

/** Solo iOS: configura cómo interactúa Chartboost cuando la barra de estado está presente. (por defecto: Ignorar). */
public static function setStatusBarBehavior(statusBarBehavior:CBStatusBarBehavior):void

/** Detecta si un anuncio es visible en la pantalla. */
public static function isAnyViewVisible():Boolean

/** Cierra cualquier impresión que esté abierta. Regresa si tiene éxito en iOS, siempre regresa como cierto en Android. */
public static function closeImpression():Boolean

/** Regresa si las compras dentro de la app se siguen de forma automática. Solo en iOS. */
public static function getAutoIAPTracking():Boolean

/** Regresa si una vista web está habilitada (configuración del servidor). Solo Android. */
public static function isWebViewEnabled():Boolean

/** Configura si la UI del sistema está oculta durante las impresiones. Solo Android. */
public static function setShouldHideSystemUI(shouldHide:Boolean):void

/** Solo para envoltorios: configura el servicio de mediación utilizado. */
public static function setMediation(mediator:CBMediation, version:String):void

 


 

Escuchando los eventos de Chartboost:

Chartboost envía muchos eventos distintos para informarte del estado de las impresiones. Para poder reaccionar a estos eventos, debes escucharlos de forma explícita. El mejor lugar para hacerlo es el código de inicialización de tu pantalla activa:

// en código de inicialización
chartboost.addDelegateEvent(ChartboostEvent.DID_CLICK_INTERSTITIAL, function (location:String):void {
 trace( "Chartboost: on Interstitial clicked: " + location );
});

En /actionscript/src/com/chartboost/plugin/air/ChartboostEvent.as encontrarás todos los eventos que puedes escuchar:

/** Se activa después de que el SDK se inicialize con éxito. Implementado para notificar cuando ha terminado el proceso de inicialización.
* Argumentos: (status:Boolean) */
public static const DID_INITIALIZE:String = "didInitialize";

/** Enviado cuando un intersitial no se carga.
* Argumentos: (location:String, error:CBLoadError) */
public static const DID_FAIL_TO_LOAD_INTERSTITIAL:String = "didFailToLoadInterstitial";

/** Enviado cuando un intersitial se va a mostrar. Devuelve si debería o no hacerlo.
* Argumentos: (location:String)
* Devuelve: Boolean */
public static const SHOULD_DISPLAY_INTERSTITIAL:String = "shouldDisplayInterstitial";

/** Enviado cuando un intersitial termina a través de cualquier método.
* Esto siempre estará asociado a un evento de cierre o de clic.
* Argumentos: (location:String) */
public static const DID_CLICK_INTERSTITIAL:String = "didClickInterstitial";

/** Enviado cuando un intersitial es cerrado.
* (por ejemplo, tocando la X o el botón Atrás de Android).
* Argumentos: (location:String) */
public static const DID_CLOSE_INTERSTITIAL:String = "didCloseInterstitial";

/** Enviado cuando se hace clic en un intersitial.
* Argumentos: (location:String) */
public static const DID_DISMISS_INTERSTITIAL:String = "didDismissInterstitial"; 

/** Enviado cuando un intersitial se guarda en caché.
* Argumentos: (location:String) */
public static const DID_CACHE_INTERSTITIAL:String = "didCacheInterstitial";

/** Enviado cuando se muestra un intersitial.
* Argumentos: (location:String) */
public static const DID_DISPLAY_INTERSTITIAL:String = "didDisplayInterstitial";

/** Enviado cuando la página MoreApps no se carga.
* Argumentos: (location:String, error:CBLoadError) */
public static const DID_FAIL_TO_LOAD_MOREAPPS:String = "didFailToLoadMoreApps";

/** Enviado cuando la página MoreApps se va a mostrar. Devuelve si debería o no hacerlo.
* Argumentos: (location:String) */
public static const SHOULD_DISPLAY_MOREAPPS:String = "shouldDisplayMoreApps";

/** Enviado cuando la página MoreApps termina por cualquier método.
* Esto siempre estará asociado a un evento de cierre o de clic.
* Argumentos: (location:String)
* Devuelve: Boolean */
public static const DID_CLICK_MORE_APPS:String = "didClickMoreApps";

/** Enviado cuando la página MoreApps se va a cerrar.
* (por ejemplo, tocando la X o el botón Atrás de Android).
* Argumentos: (location:String) */
public static const DID_CLOSE_MORE_APPS:String = "didCloseMoreApps";

/** Enviado cuando se hace clic en una de las opciones de la página MoreApps.
* Argumentos: (location:String) */
public static const DID_DISMISS_MORE_APPS:String = "didDismissMoreApps";

/** Enviado cuando la página MoreApps se guarda en caché.
* Argumentos: (location:String) */
public static const DID_CACHE_MORE_APPS:String = "didCacheMoreApps";

/** Enviado cuando se muestra la página MoreApps.
* Argumentos: (location:String) */
public static const DID_DISPLAY_MORE_APPS:String = "didDisplayMoreApps";

/** Enviado después de que un clic quede registrado pero el usuario no es dirigido al App Store de iOS.
* Argumentos: (location:String, error:CBClickError) */
public static const DID_FAIL_TO_RECORD_CLICK:String = "didFailToRecordClick";

/** Enviado cuando un video con recompensa se guarda en caché.
* Argumentos: (location:String) */
public static const DID_CACHE_REWARDED_VIDEO:String = "didCacheRewardedVideo";

/** Enviado cuando se hace clic en un video con recompensa.
* Argumentos: (location:String) */
public static const DID_CLICK_REWARDED_VIDEO:String = "didClickRewardedVideo";

/** Enviado cuando se cierra un video con recompensa.
* Argumentos: (location:String) */
public static const DID_CLOSE_REWARDED_VIDEO:String = "didCloseRewardedVideo";

/** Enviado cuando se completa un video con recompensa.
* Argumentos: (location:String, reward:int) */
public static const DID_COMPLETE_REWARDED_VIDEO:String = "didCompleteRewardedVideo";

/** Enviado cuando se ignora un video con recompensa.
* Argumentos: (location:String) */
public static const DID_DISMISS_REWARDED_VIDEO:String = "didDismissRewardedVideo";

/** Enviado cuando un video con recompensa no se carga.
* Argumentos: (location:String, error:CBLoadError) */
public static const DID_FAIL_TO_LOAD_REWARDED_VIDEO:String = "didFailToLoadRewardedVideo";

/** Enviado cuando se va a mostrar un video con recompensa. Devuelve si debería o no hacerlo.
* Argumentos: (location:String)
* Devuelve: Boolean */
public static const SHOULD_DISPLAY_REWARDED_VIDEO:String = "shouldDisplayRewardedVideo";

/** Enviado justo después de mostrar un video con recompensa.
* Argumentos: (location:String) */
public static const DID_DISPLAY_REWARDED_VIDEO:String = "didDisplayRewardedVideo";

/** Enviado cuando un video está a punto de mostrarse.
* Argumentos: (location:String) */
public static const WILL_DISPLAY_VIDEO:String = "willDisplayVideo";

/** Enviado si el plugin de Chartboost pausa las acciones de clic mientras espera la confirmación del usuario.
* Argumentos: ninguno */
public static const DID_PAUSE_CLICK_FOR_COMFIRMATION:String = "didPauseClickForConfirmation";

/** Solo iOS: enviado después de que la hoja del App Store sea ignorada, al mostrar la hoja de aplicaciones embebida.
* Argumentos: ninguno */
public static const DID_COMPLETE_APP_STORE_SHEET_FLOW:String = "didCompleteAppStoreSheetFlow";

 


 

Prueba tu integración.

Para probar la configuración, empieza una campaña de ofertas, añade la aplicación con la que has integrado el plugin a la campaña y crea tu proyecto en un dispositivo.

Si puedes ver los intersitiales de prueba de Chartboost donde los has llamado en tu código, está todo listo. Recuerda desactivar el modo de prueba (en la página Ajustes de la aplicación ) para ver anuncios reales de la red:

 


 

w00t! ¡Acabas de integrar el SDK de Chartboost en tu aplicación!

Ahora puedes empezar una campaña ▶

 


 

Descubre más funciones del SDK de Chartboost

  • Caché: acorta los tiempos de carga de los anuncios y las páginas MoreApps guardándolos de forma local en los dispositivos.
  • Chartboost Video: incorpora anuncios en video de alta calidad para dar a los jugadores la mejor experiencia de juego posible.
  • Ubicaciones nombradas: ajusta la segmentación y la frecuencia de anuncios de tu campaña desde el panel de control.
  • MoreApps: crea una página de "ver más juegos" personalizada para promocionar tus propios juegos o publicar los anuncios de otro desarrollador.
  • Analíticas de post-segmentación: para juegos con compras dentro de la aplicación. Descubre datos útiles sobre los hábitos de compra de los jugadores para optimizar o resegmentar tus campañas.
  • Mediación: muestra tus anuncios en una gran variedad de redes de alta calidad.

 


 

Quizás también te interese...