Руководство к обновлению 6.x: Android

Последнее обновление:

Это руководство к обновлению поможет вам интегрировать свои игры с новейшими Chartboost Android SDK версии 6.0 и выше.

Документацию SDK 6.x можно найти здесь.


Важнейшие изменения

Ниже приводится обзор изменений в версии 6.x, о которых следует знать при обновлении предыдущей версии SDK (4.x):

  • Изменен API инициализации SDK и его обязательные параметры
  • Все открытые методы теперь статические, то есть вместо использования вызовов экземпляров вы будете вызывать методы непосредственно по объекту класса (например, this.cb.showInterstitial(location); предстоит заменить на Chartboost.showInterstitial(location);, а также опустить все объявления переменных экземпляра, например, убрать private Chartboost cb;)
  • Замените также метод sharedChartboost в onCreate(); (например, замените this.cb = Chartboost.sharedChartboost(); на новый метод инициализации Chartboost.startWithAppId(this,appId,appSignature);)
  • ChartboostDelegate теперь не интерфейс, а абстрактный класс. Это означает, что вам не нужно заранее знать (или реализовывать) ответные вызовы делегатов, которые понадобятся.
  • Чтобы создать делегат, больше не нужно передавать «null» или делегированный объект в this.cb.onCreate(...). У него есть собственный метод класса Chartboost.setDelegate(cb_delegate);, который нужно разместить до Chartboost.onCreate(this); (подробнее ниже).
  • Замените this.cb.onCreate(this, appId, appSignature, this.chartBoostDelegate); на Chartboost.onCreate(this);
  • Замените все вызовы переменных экземпляров на вызовы методов класса – например, this.cb.cacheInsterstitial() должен стать Chartboost.cacheInterstitial(location);
  • Для всех методов has<CachedObject> меняется название; теперь оно яснее описывает их смысл (например, hasCachedInterstitial, hasCachedMoreApps, hasCachedVideo становятся теперь hasInterstitial, hasMoreApps, hasRewardedVideo). Это статические булевы методы, которые получают как параметр строку местоположения и возвращают «true», если для этого местоположения существует кэшированный контент.
  • Новое: добавлены ответные вызовы активности onPause() и onResume().
  • Новое: setAutoCacheAds(boolean autoCacheAds). Подробнее см. ниже.
  • CBPreferences больше нет, поэтому удалите, пожалуйста, все его вызовы: this.cbPref = CBPreferences.getInstance(); Все показы теперь используют активности. Не забудьте добавить в свой файл 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" />
  • Если существует переопределенный открытый метод для объявления того, показывать ли рекламные вставки на первом сеансе пользователя, то shouldRequestInterstitialsInFirstSession() нужно заменить методом-«сеттером» Chartboost.setShouldRequestInterstitialsInFirstSession(boolean shouldRequest);
  • Необязательное (но полезное): определите appId и appSignature в /res/values/strings.xml, например:

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

    Затем передайте getResources().getString(R.string.appId) , getResources().getString(R.string.appSignature) вместо appId и appSignature как строки в Chartboost.onCreate

 


Сравнение инициализаций

Для справки ниже приведен пример инициализации в 4.x в сравнении с инициализацией в 6.x:

/* Пример устаревшей инициализации с Chartboost SDK 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);
 }
 }

 /* Пример инициализации с Chartboost SDK 6.x */
 public class ChartboostSDKv5 extends Activity {
 private static final String TAG = "Chartboost";

 @Override
 public void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState);
// Полезное: определите константы appId и appSignature в /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);
 }
 }

Шаги

Для обновления SDK до версии 6.x проделайте следующие шаги. Завершив их, еще раз сверьтесь с разделом «Важнейшие изменения», чтобы ничего не упустить.

  1. Убедитесь, что ваше приложение соответствует минимальным требованиям:
    • API уровня не ниже 9 (Android OS 2.3)
    • Обязательное разрешение: android.permission.INTERNET
    • Обязательное разрешение: android.permission.ACCESS_NETWORK_STATE
    • Необязательное (но рекомендуемое) разрешение: android.permission.WRITE_EXTERNAL_STORAGE
    • Необязательное (рекомендуемое) разрешение: android.permission.ACCESS_WIFI_STATE
    • Необязательное (но рекомендуемое) разрешение:android.permission.READ_PHONE_STATE
  2. Сначала удалите из своего проекта все старые файлы chartboost.jar.
    • Если в вашем проекте нет каталога libs, создайте его и добавьте туда файл .jar.
    • Можно (но не обязательно) добавить chartboost.jar.properties и каталог doc в libs, чтобы в вашей IDE был Javadocs
  3. Убедитесь, что библиотека Google Play Services является зависимостью в вашем проекте.
    • У библиотеки Google Play Services есть свой набор указаний к интеграции, включая добавления в Android Manifest и в конфигурацию Proguard.
    • Вы можете следовать указаниям Google к настройке, приведенным на веб-сайте Google Developer.
  4. Для отображения рекламы с плавными переходами и плавным воспроизведением видео добавьте в свой файл 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" />
  5. Убедитесь, что Chartboost SDK импортирован в каждую активность, которая задействует 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. Если активность, в которой вы отображаете показы Chartboost, поддерживает разные ориентации, то вам следует добавить в эту активность в файле AndroidManifest.xml следующий атрибут, необходимый для плавного воспроизведения видео при смене ориентации:

    android:configChanges="keyboardHidden|orientation|screenSize"
    
  8. Обновите инициализацию Chartboost SDK в своем классе активности запуска, чтобы можно было делать ответные вызовы и вызовы API Chartboost.
    Есть два варианта инициализации:

    • Можно оставить ее управление самому SDK и просто расширить ChartboostActivity. Это избавляет вас от необходимости переопределять такие методы жизненного цикла активности, как onCreate, то есть можно просто вызывать Chartboost.OnCreate(). ПЕРЕЙТИ СРАЗУ НА ШАГ 11.
    • Вы можете явно расширить основную активность приложения (перейдите к шагам 7–8). См. пример:

      public class <Your class name> extends Activity 
      
      @Override
      public void onCreate() {
       super.onCreate();
       Chartboost.startWithAppId(this, appId, appSignature);
       /* Необязательно: если хотите запрограммировать отклики на события Chartboost, используйте здесь делегированный объект (подробнее см. шаг 10). */
      // Chartboost.setDelegate( cb_delegate );
       Chartboost.onCreate(this);
       } 
      }
  9. Обновите методы onStart(), onPause(), onResume(), onStop(), onDestroy() и onBackPressed() своей активности следующим кодом:

    @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() {
    // Если вставка на экране, закрыть ее.
     if (Chartboost.onBackPressed())
     return;
     else
     super.onBackPressed();
    }
    
  10. Внимание! Любые вызовы рекламной вставки, страницы «Другие приложения», InPlay и Video – статические. Вы должны передавать в каждом вызове строку местоположения (null уже не допускается). Если не передать местоположение, то SDK не сможет извлечь рекламу. Для получения списка констант местоположения по умолчанию и определения собственных констант можно использовать интерфейсный класс CBLocation. Если местоположение использовано хотя бы однажды, оно будет добавлено на вашу панель пользователя, где можно будет задать его настройки.

    • Примеры вызова рекламы:

      // Статичные вставки и рекламные видеовставки
      Chartboost.cacheInterstitial(CBLocation.LOCATION_DEFAULT);
      Chartboost.showInterstitial(CBLocation.LOCATION_DEFAULT);
      
      
      // Видео с вознаграждением за просмотр
      Chartboost.showRewardedVideo(CBLocation.LOCATION_GAMEOVER);
      Chartboost.cacheRewardedVideo(CBLocation.LOCATION_GAMEOVER);
      
  11. Должно быть, вы заметили на шаге 7 Chartboost.setDelegate(delegate). Примечание: Мы больше не передаем null или делегированный объект в переопределенный onCreate() для создания делегатов, поскольку теперь у него есть собственный классовый метод. Вызывайте этот метод до того, как вызываете Chartboost.onCreate(this) в ходе инициализации.

    • Параметр, которым он пользуется, является делегированным объектом и позволяет откликаться на интересующие вас события, переопределяя методы по собственному выбору. Просто воспользуйтесь объектом абстрактного класса ChartboostDelegate как параметром:

      private ChartboostDelegate cb_delegate = new ChartboostDelegate() {
      // Переопределить делегированные ответные вызовы Chartboost, которые вы хотите отслеживать и контролировать
      }; 
      
    • Этот новый метод избавляет от необходимости расширения от ChartboostDefaultDelegate, как было в предыдущих версиях SDK.

  12. Вы также можете сделать так, чтобы ваши активности использовали расширение Chartboost от ChartboostActivity, а не от Activity. Подробнее об этом – в нашем README.md. Внимание! При таком способе интеграции вы должны инициализировать Chartboost методом Chartboost.startWithAppId() до того, как вызываете super.onCreate(). В противном случае произойдет исключение, поскольку SDK следует инициализировать до того, как он совершает внутренний вызов Chartboost.onCreate(). Пример:

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

Послеустановочная аналитика

Если вы намерены предлагать в своей игре покупки внутри приложения, то подумайте об интеграции послеустановочной аналитики. Это ключ к полезнейшей информации (выручка, средний доход от одного пользователя, удержание, уровни и многое другое), которая поможет оптимизировать кампании рекламирования и строить собственные группы пользователей для ретаргетинга и сегментации.


Возрастная проверка

Если вы использовали метод

didPauseClickForConfirmation()

для обработки функциональности проверки возраста, то теперь этот метод обновлен до:

public void didPauseClickForConfirmation(Activity activity)

Копаем глубже

К SDK добавлена документация Java API и образец приложения.

Ознакомьтесь с примерами в коде CBSample.

Если вы намерены использовать Proguard, добавьте в свой файл proguard.cfg следующее (а также не забудьте ознакомиться с указаниями Proguard в отношении библиотеки Google Play Services):

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

Есть вопросы?

Мы хотим, чтобы ваша интеграция SDK прошла быстро и гладко – и вы могли посвятить больше времени созданию своих замечательных игр! Если вы столкнетесь с какими-либо проблемами, обращайтесь к нашей группе технической поддержки. Мы всегда рады помочь!