キャッシュ

最終更新:

広告をキャッシュしておくと 読み込み時間が短縮できUXが向上するだけでなく、Chartboostの利便性も上がります。


目次


概要

ゲームのUXを最適化する最も良い方法のひとつが表示前に広告をキャッシュ(プリロード)することです。デバイスに広告をキャッシュしておくと、リクエスト送信後に広告がすばやく表示されるようになります。また、どこに何を表示するかまだ決めていなくても、広告在庫がすでにある状態を保てます。

広告のタイプと広告掲載場所にはそれぞれ固有のキャッシュが割り当てられます。このため、異なる広告掲載場所で複数の広告を同時にキャッシュすることが可能です。(広告掲載場所の詳細はこちら。)


広告をキャッシュする

インタースティシャル広告、MoreAppsページおよびリワードビデオ広告をキャッシュするには以下のメソッドを使います(広告掲載場所の例として、ここでは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);

注: MoreAppsメソッドにも場所パラメータを入れる必要がありますが、MoreAppsリクエストでは特定の場所は無視されデフォルトとして扱われます。


キャッシュした広告をテストする

キャッシュには、表示前に広告がプリロードされているかテストできる便利な機能があります。まだキャッシュされていない広告がある場合には、ぜひキャッシュしておくことをお勧めします。

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 v4.4以降では、広告掲載場所で広告が正常に表示されると広告を自動的にキャッシュします。ただし自動キャッシュだけに頼らず、起動時などアプリ内でポイントとなる場所では広告表示前に手動でキャッシュしておくのがベストです。

自動キャッシュでは必要のないネットワークリクエストは生成されません。自動か手動かにかかわらず、キャッシュの呼び出しによりネットワークリクエストが送られるのは、特定の場所でキャッシュが空の場合のみとなります。自動キャッシュ機能は、showInterstitial() 呼び出しで広告が正常に表示されるとcacheInterstitial()呼び出しが起動される仕組みになっています。

自動キャッシュの動作は以下のSDKメソッドで切り替え可能です。

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

キャッシュについての注記

  • [Chartboost showInterstitial:CBLocationHomeScreen];は、キャッシュされたインタースティシャル広告がある場合は、それを表示します。ない場合はサーバーからリクエストします。
  • キャッシュするとパフォーマンスが大幅に向上しますが、ユーザーのデータ使用量に対する考慮も必要です。
  • キャッシュされたインタースティシャル広告は、24時間後に自動的に期限切れになります。
  • キャッシュのリクエストは非同期です。アプリの他のデータを読み込んでいる間に多くのインタースティシャル広告をキャッシュする場合は、この点にご注意ください。