Cache

Última atualização:

Colocar os anúncios em cache antes de precisar deles reduz o tempo de carregamento, melhora a experiência do usuário e fornece mais maneiras de você controlar como usa o Chartboost.


Conteúdo


Visão geral

Colocar anúncios em cache (pré-carregar) antes de você precisar exibi-los é uma boa prática que pode ajudar a otimizar a experiência do usuário dos seus jogos. Quando um anúncio já está em cache no dispositivo, ele é exibido muito mais rápido ao ser solicitado e você pode verificar que há um anúncio disponível antes mesmo de escolher exibi-lo.

Cada tipo de anúncio e local nomeado tem seu próprio cache, assim você tem vários anúncios em cache ao mesmo tempo em diferentes locais nomeados. (Leia mais sobre como usar locais nomeados aqui.)


Colocar anúncios em cache

Anúncios intersticiais, páginas MoreApps e vídeos de recompensa podem ser colocados em cache para serem exibidos posteriormente usando os seguintes métodos (com CBLocationHomeScreen como nosso Local Nomeado de exemplo):

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

Obs.: Embora os métodos MoreApps exijam um parâmetro de local, o local específico é essencialmente ignorado e tratado como "Padrão" para qualquer solicitação de MoreApps.


Verificar anúncios em cache

Um recurso útil de colocar em cache é a possibilidade de testar se um anúncio já foi pré-carregado antes de você tentar exibi-lo. Como melhor prática, se um anúncio ainda não estiver em cache, você deve aproveitar a oportunidade para colocá-lo.

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

Para receber notificações do SDK quando um anúncio entrar em cache com êxito, implemente os métodos delegados opcionais abaixo (o SDK passará no local nomeado do anúncio em cache):

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";

Se a chamada de cache falhar, um método delegado didFailToLoadInterstitial irá disparar (este delegado também dispara se você chamar showInterstitial e um anúncio não for exibido):

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

Cache automático

Chartboost SDKs v4.4+ incluem comportamento para colocar em cache automaticamente os anúncios após serem exibidos com êxito no local nomeado. Contudo, ainda é a melhor prática colocar anúncios em cache manualmente na ativação ou outros pontos lógicos em seu app antes de você precisar exibi-los (adicionalmente a permitir que o cache automático faça a sua mágica).

O cache automático não causa solicitações de rede desnecessárias, pois qualquer chamada de cache (automática ou manual) só enviará solicitações de rede se o cache estiver vazio em um local específico. Ele simplesmente cuida de chamar cacheInterstitial() imediatamente após a exibição com êxito de uma chamada showInterstitial().

Você pode alternar o comportamento de cache automático com os seguintes métodos do SDK:

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

Notas sobre cache automático

  • [Chartboost showInterstitial:CBLocationHomeScreen]; mostra um intersticial em cache se houver algum. Do contrário, solicitará um ao servidor.
  • O cache é recomendado para obter o melhor desempenho, mas é sempre uma boa ideia considerar o uso de dados dos seus usuários
  • Intersticiais em cache expiram automaticamente após 24 horas
  • Solicitações de cache são assíncronas. Tenha isso em mente se você colocar em cache muitos intersticiais ao carregar outros dados para o seu app.