Guía de actualización 6.x: Android

Última actualización:

Esta guía te ayudará a actualizar tus juegos para utilizar los SDKs (v6.0+) de Chartboost para Android.

También encontrarás documentación sobre el SDK 6.x aquí.


Cambios clave

A continuación tienes un resumen de los cambios que necesitas tomar en cuenta al actualizar a 6.x desde las versión 4.x o anterior del SDK:

  • Han cambiado los parámetros de API de inicialización del SDK.
  • Todos los métodos públicos son ahora estáticos. En lugar de utilizar llamadas de instancias, debes llamar a los métodos directamente en el objeto de clase (pro ejemplo, reemplazando this.cb.showInterstitial(location); con Chartboost.showInterstitial(location); y omitir cualquier declaración variable de instancia (por ejemplo, eliminando private Chartboost cb;).
  • Reemplaza el método sharedChartboost method en onCreate(); (pro ejemplo, reemplaza this.cb = Chartboost.sharedChartboost(); con el nuevo método de inicialización, Chartboost.startWithAppId(this,appId,appSignature);).
  • ChartboostDelegate ya no es una interfaz, sino una clase abstracta. Esto significa que ya no necesitas saber con antelación (o implementar) los callbacks delegados cuando sean necesarios.
  • Para crear delegados, no pases "null" o un objeto delegado a this.cb.onCreate(...). Ahora tiene su propio método de clase, Chartboost.setDelegate(cb_delegate); que debe colocarse antes de Chartboost.onCreate(this); (detalles a continuación).
  • Reemplaza this.cb.onCreate(this, appId, appSignature, this.chartBoostDelegate); con Chartboost.onCreate(this);
  • Reemplaza todas las llamadas variables de instancia con llamadas de método de clase; por ejemplo, this.cb.cacheInsterstitial() debe cambiar a Chartboost.cacheInterstitial(location);
  • Cambios de nombre en todos los métodos has<CachedObject> para aclarara su significado; por ejemplo hasCachedInterstitial, hasCachedMoreApps, hasCachedVideo etc. son ahora hasInterstitial, hasMoreApps, hasRewardedVideo. Estos son métodos booleanos estáticos que toman un parámetro de ubicación y devuelven "true" si el contenido en caché existe para la ubicación.
  • Nuevos: callbacks de actividad añadidos: onPause() y onResume().
  • NuevosetAutoCacheAds(boolean autoCacheAds). Más información a continuación.
  • Ya no existe CBPreferences; elimina todas sus llamadas de instancia: this.cbPref = CBPreferences.getInstance(); Todas las impresiones de utilizar actividades. Añade la siguiente entrada en tu archivo AndroidManifest.xml:
    <activity android:name="com.chartboost.sdk.CBImpressionActivity"
     android:excludeFromRecents="true"
     android:hardwareAccelerated="true"
     android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
     android:configChanges="keyboardHidden|orientation|screenSize" />
  • Si se utiliza, el método público sobreescrito para declarar si se muestran interisitiales en la primera sesión de un usuario shouldRequestInterstitialsInFirstSession() necesita ser reemplazado con el método configurador Chartboost.setShouldRequestInterstitialsInFirstSession(boolean shouldRequest);
  • Opcional (práctica recomendada): define appId y appSignature en /res/values/strings.xml, por ejemplo

    <string name="appId">5147872917ba476a7e000005</string>
    <string name="appSignature">50009149c7f545672c016b30f8b504ec2123d419</string>
    

    Después pasa getResources().getString(R.string.appId), getResources().getString(R.string.appSignature) en lugar de appId y appSignature como cadenas en Chartboost.onCreate

 


Comparación de inicialización

Abajo puedes ver un ejemplo de inicialización en 4.x , comparado con una en a 6.x:

/* Inicialización obsoleta de ejemplo con el SDK de Chartboost 4.x */

 public class ChartboostSDKv4 extends Activity {
 private static final String TAG = "Chartboost";
 private Chartboost cb;
 private CBPreferences cbPrefs;

 @Override
 public void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState);
 this.cb = Chartboost.sharedChartboost();
 this.cbPrefs = CBPreferences.getInstance();
 String appId = "";
 String appSignature = "";
 this.cb.onCreate(this, appId, appSignature, this.chartBoostDelegate);
 }
 }

 /* Inicialización de ejemplo con el SDK de Chartboost 6.x */
 public class ChartboostSDKv5 extends Activity {
 private static final String TAG = "Chartboost";

 @Override
 public void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState);
// Práctica recomendada: define appId y appSignature en /res/values/strings.xml
 Chartboost.startWithAppId(this, getResources().getString(R.string.appId), getResources().getString(R.string.appSignature));
 Chartboost.setLoggingLevel(Level.ALL);
 Chartboost.setDelegate(cb_delegate);
 Chartboost.onCreate(this);
 }
 }

Pasos

Sigue estos pasos para actualizar tu SDK a 6.x. Cuando hayas terminado, repasa los cambios clave para asegurarte de no olvidaste nada.

  1. Verifica que la aplicación sigue cumpliendo los requisitos mínimos:
    • Mínimo API nivel 9 (Android OS 2.3)
    • Permiso requerido: android.permission.INTERNET
    • Permiso requerido: android.permission.ACCESS_NETWORK_STATE
    • Permiso opcional (recomendado): android.permission.WRITE_EXTERNAL_STORAGE
    • Permiso opcional (recomendado): android.permission.ACCESS_WIFI_STATE
    • Permiso opcional (recomendado): android.permission.READ_PHONE_STATE
  2. Elimina todos los archivos antiguos de chartboost.jar de tu proyecto.
    • Si no tienes una directorio libs en tu proyecto, crea una y pon dentro el archivo .jar.
    • Opcional: Añade chartboost.jar.propertiesy el directorio doc a libs para tener Javadocs en tu IDE.
  3. Verifica que la biblioteca de Google Play Services es una dependencia de tu proyecto.
    • La biblioteca de Google Play Services tiene su propias instrucciones de integración, incluyendo añadidos a tu configuración de Android Manifest y ProGuard.
    • Puedes seguir las instrucciones de configuración del sito web para desarrolladores de Google.
  4. Añade la siguiente entrada en tu archivo AndroidManifest.xml para mostrar anuncios con transiciones suaves y buena calidad de reproducción:

    <activity android:name="com.chartboost.sdk.CBImpressionActivity"
                   android:excludeFromRecents="true"
                   android:hardwareAccelerated="true"
                   android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
                   android:configChanges="keyboardHidden|orientation|screenSize" />
  5. Verifica que el SDK de Chartboost SDK es importado en cualquier actividad que utilice Chartboost:
  6. import com.chartboost.sdk.Libraries.CBLogging.Level;
    import com.chartboost.sdk.Model.CBError.CBClickError;
    import com.chartboost.sdk.Model.CBError.CBImpressionError;
    import com.chartboost.sdk.Tracking.CBAnalytics;
    import com.chartboost.sdk.CBLocation;
    import com.chartboost.sdk.CBImpressionActivity;
    import com.chartboost.sdk.Chartboost;
    import com.chartboost.sdk.ChartboostDelegate;
    
  7. Si cualquier actividad en la que muestres impresiones de Chartboost puede rotar entre diferentes orientaciones, debes añadir el siguiente atributo a la actividad en el archivo AndroidManifest.xml para mejorar reproducción de video durante los cambios de orientación:

    android:configChanges="keyboardHidden|orientation|screenSize"
    
  8. Actualiza la inicialización del SDK de Chartboost en tu clase de actividad de lanzamiento para poder realizar llamadas API y callbacks de Chartboost.
    Tienes dos opciones de inicialización:

    • Puedes dejar que el SDK se ocupe de hacerlo extendiendo ChartboostActivity. Esto evita la necesidad de anular métodos de ciclo de vida de actividad como onCreate, por lo que simplemente puedes llamar a Chartboost.OnCreate(). SALTA AL PASO 11.
    • Puedes extender la actividad principal de la aplicación de forma explícita (sigue los pasos 7 y 8). Ejemplo:

      public class <Your class name> extends Activity 
      
      @Override
      public void onCreate() {
       super.onCreate();
       Chartboost.startWithAppId(this, appId, appSignature);
       /* Opcional: Si quieres programar respuestas a los eventos de Chartboost, pon un objeto delegado aquí y lee la información del paso 10. */
      //Chartboost.setDelegate( cb_delegate );
       Chartboost.onCreate(this);
       } 
      }
  9. Actualiza los métodos onStart(), onPause(), onResume(), onStop(), onDestroy()y onBackPressed() de tu actividad:

    @Override
    public void onStart() {
     super.onStart();
     Chartboost.onStart(this); 
    }
    
    
    @Override
    public void onResume() {
     super.onResume();
     Chartboost.onResume(this);
    }
    
    
    @Override
    public void onPause() {
     super.onPause();
     Chartboost.onPause(this);
    }
    
    
    @Override
    public void onStop() {
     super.onStop();
     Chartboost.onStop(this);
    }
    
    
    @Override
    public void onDestroy() {
     super.onDestroy();
     Chartboost.onDestroy(this);
    }
    
    
    @Override
    public void onBackPressed() {
    // Si hay un intersitial en la pantalla, ciérralo.
     if (Chartboost.onBackPressed())
     return;
     else
     super.onBackPressed();
    }
    
  10. Importante: Todas tus llamadas a intersitiales, MoreApps, InPlay y videos son estáticas. Debes pasar la cadena de ubicación a todas las llamadas, null ya no está disponible. Si no pasas la ubicación, el SDK no cargará ningún anuncio. Puedes utilizar la clase de interfaz CBLocation para obtener una lista de constantes de ubicación predeterminadas o definirlas tú mismo. Una vez que se use una ubicación, será añadida a tu panel de control, donde puedes personalizar su configuración.

    • Ejemplos de llamadas a anuncios

      // Intersitiales estáticos y de video
      Chartboost.cacheInterstitial(CBLocation.LOCATION_DEFAULT);
      Chartboost.showInterstitial(CBLocation.LOCATION_DEFAULT);
      
      
      // Video con recompensa
      Chartboost.showRewardedVideo(CBLocation.LOCATION_GAMEOVER);
      Chartboost.cacheRewardedVideo(CBLocation.LOCATION_GAMEOVER);
      
  11. En el paso 7 tal vez hayas visto Chartboost.setDelegate(delegate). Nota: Ya no pasamos 'null' o un objeto delegado a un onCreate() sobreescrito para crear delegados. Ahora tiene su propio método de clase. Llama al método antes de llamar a Chartboost.onCreate(this) durante la inicialización.

    • El parámetro que se necesita es un objeto delegado , que te permite responder a los eventos de tu interés sobreescribiendo los métodos que quieras. Pon un objeto de la clase abstracta ChartboostDelegate como el parámetro:

      private ChartboostDelegate cb_delegate = new ChartboostDelegate() {
      //Sobreescribe los callbacks delegados de Chartboost que quieras seguir y controlar.
      }; 
      
    • Este nuevo método elimina la necesidad de extender desde ChartboostDefaultDelegate como en versiones previas del SDK.

  12. Puedes elegir que todas tus actividades que utilizan Chartboost se extiendan desde ChartboostActivity en lugar de Activity. Consulta los detalles en nuestro README.md. Importante: Si utilizas este método de integración, debes inicializar Chartboost con el método Chartboost.startWithAppId() antes de llamar a super.onCreate(). Si no lo haces, se creará una excepción, ya que el SDK debe ser inicializado antes de llamar a Chartboost.onCreate() internamente. Ejemplo:

    public class <Your class name> extends ChartboostActivity {
        @Override
        public void onCreate() {
            Chartboost.startWithAppId(this, appId, appSignature);
            super.onCreate();
            fooBar();
        }
    }
    

Analíticas de post-instalación

Si vas a ofrecer compras dentro de la aplicación en tu juego, te recomendamos integrar las analíticas post-instalación: descubrirás datos útiles (ingresos, ARPU, retención, niveles, etc.) para optimizar las campañas de adquisición o crear grupos de usuarios para segmentar o resegmentar.


Barrera de edad

Si utilizabas el método

didPauseClickForConfirmation()

para gestionar la funcionalidad de la barrera de edad, ahora debes utilizar:

public void didPauseClickForConfirmation(Activity activity)

Mayor profundidad

Los documentos Java del API se ofrecen junto al SDK y una aplicación de muestra.

Encontrarás ejemplos en el código de CBSample.

Si planeas usar Proguard, añade lo siguiente a tu archivo proguard.cfg (también asegúrate de seguir las instrucciones de Proguard para la biblioteca de Google Play Services):

 -keep class com.chartboost.** { *; }

¿Preguntas?

Queremos que tu integración SDK sea lo más sencilla posible para que puedas pasar más tiempo desarrollando juegos geniales! Si tienes cualquier problema, ponte en contacto con nuestro equipo de soporte y estaremos encantados de ayudarte.