Кэширование

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

Кэширование рекламы до того, как она понадобится, резко сокращает срок ее загрузки, улучшает восприятие игроков и расширяет возможности контроля и управления Chartboost.


Содержание


Обзор

Кэширование (предварительная загрузка) рекламы до того, как понадобится ее показывать, – очень полезное действие, помогающее оптимизировать восприятие приложения игроками. Если реклама уже кэширована на устройстве, то при запросе она отображается намного быстрее; кроме того, перед выбором того, показывать ее или нет, вы можете удостовериться, что реклама уже доступна.

У каждого типа рекламы и у каждого именованного местоположения – свой кэш, поэтому вы можете одновременно кэшировать несколько рекламных материалов для разных именованных локаций (подробнее о том, как пользоваться именованными местоположениями, см. здесь).


Кэширование рекламы

Рекламные вставки, страницы «Другие приложения» и видео с вознаграждением за просмотр можно кэшировать для дальнейшего отображения с помощью следующих методов (в качестве примера именованной локации используется CBLocationHomeScreen):

iOS
[Chartboost cacheInterstitial:CBLocationHomeScreen];
[Chartboost cacheRewardedVideo:CBLocationHomeScreen];
[Chartboost cacheMoreApps:CBLocationHomeScreen];
Android
Chartboost.cacheInterstitial(CBLocation.LOCATION_HOME_SCREEN);
Chartboost.cacheRewardedVideo(CBLocation.LOCATION_HOME_SCREEN);
Chartboost.cacheMoreApps(CBLocation.LOCATION_HOME_SCREEN);
Unity
Chartboost.cacheInterstitial(CBLocation.HomeScreen);
Chartboost.cacheRewardedVideo(CBLocation.HomeScreen);
Chartboost.cacheMoreApps(CBLocation.HomeScreen);
Adobe AIR
Chartboost.getInstance().cacheInterstitial(CBLocation.HOME_SCREEN);
Chartboost.getInstance().cacheRewardedVideo(CBLocation.HOME_SCREEN);
Chartboost.getInstance().cacheMoreApps(CBLocation.HOME_SCREEN);

Примечание: методы для страниц «Другие приложения» требуют параметр местоположения, однако на деле конкретное местоположение не учитывается и обрабатывается при любом запросе страницы «Другие приложения» как локация «По умолчанию» ("Default").


Проверка кэшированной рекламы

Полезная функция кэширования – возможность проверить, загружена ли реклама, прежде чем пытаться ее показать. При этом, если реклама еще не кэширована, лучше всего воспользоваться этой возможностью, чтобы ее загрузить.

iOS
if([Chartboost hasInterstitial:CBLocationHomeScreen] == YES) {
 [Chartboost showInterstitial:CBLocationHomeScreen];
}
else {
 [Chartboost cacheInterstitial:CBLocationHomeScreen];
}
Android
if (Chartboost.hasInterstitial(CBLocation.LOCATION_HOME_SCREEN)) {
 Chartboost.showInterstitial(CBLocation.LOCATION_HOME_SCREEN);
}
else {
 Chartboost.cacheInterstitial(CBLocation.LOCATION_HOME_SCREEN);
}
Unity
if (Chartboost.hasInterstitial(CBLocation.HomeScreen)) {
 Chartboost.showInterstitial(CBLocation.HomeScreen);
}
else {
 Chartboost.cacheInterstitial(CBLocation.HomeScreen);
}
Adobe AIR
if (Chartboost.getInstance().hasInterstitial(CBLocation.HOME_SCREEN)) {
 Chartboost.getInstance().showInterstitial(CBLocation.HOME_SCREEN)
} 
else {
 Chartboost.getInstance().cacheInterstitial(CBLocation.HOME_SCREEN)
} 

Кроме того, вы можете получать от SDK уведомления об успешном кэшировании рекламы, используя перечисленные ниже необязательные методы-делегаты (SDK передает уведомления в именованное местоположение кэшированной рекламы):

iOS
- (void)didCacheInterstitial:(CBLocation)location
- (void)didCacheRewardedVideo:(CBLocation)location
- (void)didCacheMoreApps:(CBLocation)location
Android
public void didCacheInterstitial(String location)
public void didCacheRewardedVideo(String location)
public void didCacheMoreApps(String location)
Unity
void didCacheInterstitial(CBLocation location)
void didCacheRewardedVideo(CBLocation location)
void didCacheMoreApps(CBLocation location)
Adobe AIR
public static const DID_CACHE_INTERSTITIAL:String = "didCacheInterstitial";
public static const DID_CACHE_MORE_APPS:String = "didCacheMoreApps";
public static const DID_CACHE_REWARDED_VIDEO:String = "didCacheRewardedVideo";

Если же вызов кэширования окажется неудачным, будет запущен делегированный метод didFailToLoadInterstitial (он также запускается, если производится вызов showInterstitial, но реклама не отображается):

iOS
- (void)didFailToLoadInterstitial:(CBLocation)location withError:(CBLoadError)error
- (void)didFailToLoadRewardedVideo:(CBLocation)location withError:(CBLoadError)error
- (void)didFailToLoadMoreApps:(CBLocation)location withError:(CBLoadError)error
Android
public void didFailToLoadInterstitial(String location, CBImpressionError error)
public void didFailToLoadRewardedVideo(String location, CBImpressionError error)
public void didFailToLoadMoreApps(String location, CBImpressionError error)
Unity
void didFailToLoadInterstitial(CBLocation location, CBImpressionError error)
void didFailToLoadRewardedVideo(CBLocation location, CBImpressionError error)
void didFailToLoadMoreApps(CBLocation location, CBImpressionError error)
Adobe AIR
Chartboost.getInstance().addDelegate(ChartboostEvent.DID_FAIL_TO_LOAD_INTERSTITIAL, function (location:String))
Chartboost.getInstance().addDelegate(ChartboostEvent.DID_FAIL_TO_LOAD_MOREAPPS, function(location:String))
Chartboost.getInstance().addDelegate(ChartboostEvent.DID_FAIL_TO_LOAD_REWARDED_VIDEO, function(location:String))

Автоматическое кэширование

Chartboost SDK версий 4.4+ содержат поведение для автоматического кэширования рекламы после того, как она успешно отображается в именованном местоположении. Тем не менее, лучшим подходом до сих пор остается кэширование рекламы вручную при запуске приложения либо в соответствующих логических пунктах приложения еще до того, как рекламу понадобится показать (в дополнение к волшебной функции автоматического кэширования).

Автоматическое кэширование не влечет лишних сетевых запросов, поскольку любой вызов кэша (автоматически или вручную) подает сетевой запрос только если в соответствующем местоположении кэш пуст. Автокэширование просто берет на себя вызов cacheInterstitial() сразу после успешного показа при вызове showInterstitial().

Включать и отключать автоматическое кэширование можно следующими методами SDK:

iOS
[Chartboost setAutoCacheAds:BOOLEAN];
Android
Chartboost.setAutoCacheAds(boolean);
Unity
Chartboost.setAutoCacheAds(boolean);
Adobe AIR
Chartboost.getInstance().setAutoCacheAds(shouldCache:Boolean);

Примечания о кэшировании

  • [Chartboost showInterstitial:CBLocationHomeScreen]; отображает кэшированную вставку, если она существует. В противном случае вставка будет запрошена с сервера.
  • Кэширование рекомендуется для повышения производительности, однако при использовании данных очень стоит учитывать интересы пользователя.
  • Кэширование рекламных вставок истекает спустя 24 часа.
  • Запросы рекламных вставок асинхронны. Помните об этом, если кэшируете много рекламных вставок при загрузке других данных для вашего приложения.