Guia de atualização para 6.x: Android

Última atualização:

Este guia de atualização ajuda a atualizar seus jogos para usarem os Chartboost Android SDKs v6.0+ mais recentes.

Você também encontra a documentação autônoma para o SDK 6.x aqui.


Principais alterações

Abaixo encontra-se uma visão geral das alterações que você deve conhecer no 6.x ao atualizar de uma versão anterior (4.x) do SDK:

  • API de inicialização do SDK e seus parâmetros obrigatórios foram alterados
  • Todos os métodos públicos agora são estáticos, então em vez de usar chamadas de instância, você chama os métodos diretamente no objeto de classe (ex: você substitui this.cb.showInterstitial(local); por Chartboost.showInterstitial(local); e omite qualquer declaração de variável de instância (ex: remover private Chartboost cb;)
  • Substitua o método sharedChartboost dentro de onCreate(); (ex: substitua this.cb = Chartboost.sharedChartboost(); com o novo método de inicialização, Chartboost.startWithAppId(this,appId,appSignature);)
  • ChartboostDelegate não é mais uma interface, e sim uma classe abstrata. Isso significa que você não precisa saber com antecedência (ou implementar) as chamadas de retorno delegadas que serão necessárias.
  • Para criar delegados, não passe mais "null" ou um objeto delegado para this.cb.onCreate(...). Ele tem seu próprio método de classe, Chartboost.setDelegate(cb_delegate); que deve ser colocado antes de Chartboost.onCreate(this); (detalhes abaixo).
  • Substitua this.cb.onCreate(this, appId, appSignature, this.chartBoostDelegate); por Chartboost.onCreate(this);
  • Substitua todas as chamadas de variáveis de instância por chamadas de método de classe, ex: this.cb.cacheInsterstitial() deve se tornar Chartboost.cacheInterstitial(location);
  • Mudanças em nomes de métodos em todos os métodos has<CachedObject> para esclarecer melhor os significados, ex. hasCachedInterstitial, hasCachedMoreApps, hasCachedVideo etc. agora são hasInterstitial, hasMoreApps, hasRewardedVideo. Estes métodos são booleanos estáticos que tomam um parâmetro de local de string e retornam verdadeiro se conteúdo em cache existir para o local.
  • Novo: chamadas de retorno adicionadas: onPause() e onResume().
  • Novo: setAutoCacheAds(booleano autoCacheAds). Leia abaixo para obter mais informações.
  • Não existe mais CBPreferences, então remova todas as chamadas de instância para ele: this.cbPref = CBPreferences.getInstance(); Todas as impressões agora usam atividades. Adicione a seguinte entrada ao seu arquivo 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" />
  • Se for usado, o método público substituído para declarar se intersticiais são mostrados na primeira sessão de um usuário shouldRequestInterstitialsInFirstSession() precisa ser substituído com o método Chartboost.setShouldRequestInterstitialsInFirstSession(boolean shouldRequest);
  • Opcional (melhor prática): definir appId e appSignature em /res/values/strings.xml, ex.

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

    Depois passe getResources().getString(R.string.appId) , getResources().getString(R.string.appSignature) em vez de appId e appSignature como strings em Chartboost.onCreate

 


Comparação de inicialização

Abaixo encontra-se um exemplo de uma inicialização 4.x, comparada com uma inicialização 6.x para referência:

/* Inicialização do SDK de amostra obsoleto para o Chartboost 4.x SDK */

 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);
 }
 }

 /* Inicialização do SDK de amostra para o Chartboost 6.x SDK */
 public class ChartboostSDKv5 extends Activity {
 private static final String TAG = "Chartboost";

 @Override
 public void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState);
// Melhor prática: definir constantes de appId e appSignature em /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);
 }
 }

Passos

Siga estes passos para atualizar seu SDK para 6.x. Depois de concluir estes passos, revise novamente as principais alterações para assegurar que percorreu tudo.

  1. Verifique se o seu app ainda atende aos requisitos mínimos:
    • Mínimo API nível 9 (Android OS 2.3)
    • Permissão necessária:android.permission.INTERNET
    • Permissão necessária:android.permission.ACCESS_NETWORK_STATE
    • Permissão opcional (recomendada): android.permission.WRITE_EXTERNAL_STORAGE
    • Permissão opcional (recomendada): android.permission.ACCESS_WIFI_STATE
    • Permissão opcional (recomendada): android.permission.READ_PHONE_STATE
  2. Primeiro, remova arquivos chartboost.jar antigos do seu projeto.
    • Se você não tem um diretório libs em seu projeto, crie um e adicione o arquivo .jar.
    • Opcional: Adicione chartboost.jar.properties e o diretório doc a libs para obter Javadocs em seu IDE.
  3. Verifique se a biblioteca Google Play Services é uma dependência do seu projeto.
    • A biblioteca Google Play Services tem seu próprio conjunto de integrações, incluindo adições à sua configuração de Android Manifest e ProGuard.
    • Você pode seguir as instruções de instalação delineadas pelo Google no site Google Developer
  4. Adicione a seguinte entrada ao seu arquivo AndroidManifest.xml para mostrar anúncios com transições e reprodução de vídeo suaves:

    <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. Verifique se o Chartboost SDK está importado em qualquer atividade que usa o 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. Se qualquer atividade em que você mostra impressões do Chartboost pode girar entre diferentes orientações, você deve adicionar o seguinte atributo à atividade no arquivo AndroidManifest.xml para obter a reprodução de vídeo suave durante mudanças de orientação:

    android:configChanges="keyboardHidden|orientation|screenSize"
    
  8. Atualize a inicialização do Chartboost SDK em sua classe de atividade do inicializador para que as chamadas de retorno do Chartboost e chamadas API possam ser realizadas.
    Há duas escolhas para inicialização:

    • Você pode deixar o SDK manipular isso para você estendendo ChartboostActivity. Isso remove a necessidade de substituir métodos de ciclo de vida de atividade, como onCreate, e você pode simplesmente chamar Chartboost.OnCreate(). PULE PARA O PASSO 11.
    • Você pode estender explicitamente a atividade principal do aplicativo (continue seguindo os passos 7 a 8). Veja o exemplo:

      public class <Your class name> extends Activity 
      
      @Override
      public void onCreate() {
       super.onCreate();
       Chartboost.startWithAppId(this, appId, appSignature);
       /* Opcional: se você quer programar respostas para eventos do Chartboost, forneça um objeto delegado aqui e veja o passo (10) para obter mais informações */
      //Chartboost.setDelegate( cb_delegate );
       Chartboost.onCreate(this);
       } 
      }
  9. Atualize os métodos onStart(), onPause(), onResume(), onStop(), onDestroy() e onBackPressed() da sua atividade com o seguinte:

    @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() {
    // Se houver um intersticial na tela, feche-o.
     if (Chartboost.onBackPressed())
     return;
     else
     super.onBackPressed();
    }
    
  10. Importante: todas as suas chamadas de intersticiais, MoreApps, InPlay e de vídeo são estáticas. Você precisa passar a string do local para cada chamada; null não está mais disponível. Se você não passar o local, o SDK não irá obter os anúncios. Você pode usar a classe de interface CBLocation para obter uma lista de constantes de local padrão e também definir as suas. Quando um local é usado, ele é adicionado ao seu painel, onde você pode personalizar suas configurações.

    • Chamadas de anúncio de exemplo:

      // Intersticiais estáticos e em vídeo
      Chartboost.cacheInterstitial(CBLocation.LOCATION_DEFAULT);
      Chartboost.showInterstitial(CBLocation.LOCATION_DEFAULT);
      
      
      // Vídeo de recompensa
      Chartboost.showRewardedVideo(CBLocation.LOCATION_GAMEOVER);
      Chartboost.cacheRewardedVideo(CBLocation.LOCATION_GAMEOVER);
      
  11. De volta ao passo (7), você pode ter notado Chartboost.setDelegate(delegate). Obs.: não passamos 'null' ou um método delegado a um onCreate() substituído para criar delegados, pois agora tem seu próprio método de classe. Chame o método antes de chamar Chartboost.onCreate(this) durante a inicialização.

    • O parâmetro que ele utiliza é um objeto delegado, que permite responder aos eventos do seu interesse substituindo os métodos da sua escolha. Basta fornecer um objeto da classe abstrata ChartboostDelegate como parâmetro:

      private ChartboostDelegate cb_delegate = new ChartboostDelegate() {
      //Substitua as chamadas de retorno de delegado Chartboost que você deseja acompanhar e controlar
      }; 
      
    • Este novo método elimina a necessidade de estender do ChartboostDefaultDelegate como nas versões anteriores do SDK.

  12. Você pode optar por fazer as suas atividades que usam o Chartboost estenderem de ChartboostActivity em vez de Activity. Leia mais sobre isso em README.md. Importante: se você usar este método de integração, é necessário inicializar o Chartboost com o método Chartboost.startWithAppId() antes de chamar super.onCreate(). Se não fizer isso, ocorrerá uma exceção, pois o SDK precisa inicializar primeiro, antes do SDK chamar Chartboost.onCreate() internamente. Exemplo:

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

Análises pós-instalação

Se você pretende oferecer compras no aplicativo em seu jogo, considere integrar Análises pós-instalação: você obterá dados úteis, como receita, ARPU, retenção, níveis e mais, para otimizar campanhas de publicidade UA ou construir grupos de usuários personalizados para redirecionamento e segmentação.


Restrição de idade

Se você estava usando o

didPauseClickForConfirmation()

método para manipular o recurso de restrição de idade, esse método foi atualizado para:

public void didPauseClickForConfirmation(Activity activity)

Aprofundamento

Documentos de Java API fornecidos com SDK e um app de amostra.

Verifique o código dentro de CBSample para ver exemplos.

Se você planeja usar Proguard, adicione o seguinte ao seu arquivo proguard.cfg (certifique-se também de seguir as instruções do Proguard para a biblioteca Google Play Services):

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

Dúvidas?

Nós queremos que a sua integração do SDK seja a mais simples possível, para você gastar mais tempo desenvolvendo seus jogos incríveis! Se você tiver algum problema, contate nossa equipe de suporte e teremos prazer em ajudar.