6.x アップグレードガイド:Android

最終更新:

このアップグレードガイドは、ChartboostのAndroid SDK v6.0+をお客様のゲームに使用するためのものです。

SDK 6.xについての詳細解説は、 こちらをご覧ください。


主な変更点

以前のSDK(4.x)からアップグレードする際に注意していただきたい6.xの主な変更点を下記します。

  • SDK初期化API、およびこれに必要なパラメータが変わりました。
  • すべての公開メソッドが静的メソッドになりました。そのため、今後はインスタンス呼び出しは使わず、クラスオブジェクトのメソッドを直接呼び出し、(this.cb.showInterstitial(location);Chartboost.showInterstitial(location); に置換するなど)、インスタンス変数宣言は省略します( private Chartboost cb; を削除するなど)。
  • onCreate(); 内のsharedChartboostメソッドを置換します。(例えば、 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() をsetterメソッド Chartboost.setShouldRequestInterstitialsInFirstSession(boolean shouldRequest); に置き換えてください。
  • オプション(推奨):appId と appSignature を /res/values/strings.xml に定義します。例えば、

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

    次に Chartboost.onCreate でgetResources().getString(R.string.appId)getResources().getString(R.string.appSignature) iを appId と appSignature の代わりに文字列として渡します。

 


初期化の相違点

参考までに4.x の初期化と 6.x の初期化の比較を下記します。

/* 廃止されたChartboost 4.x SDK用の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);
 }
 }

 /* Chartboost 6.x SDK用のSDK初期化のサンプル */
 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.propertiesdocディレクトリをlibsに追加し、IDEでJavadocを取得することもできます。
  3. プロジェクトの依存関係にGoogle Play開発者サービス ライブラリがあることを確認します。
    • Google Play開発者サービス ライブラリには、AndroidマニフェストおよびProguard構成ファイルへの追加事項を記載した導入手順が含まれています。
    • Google開発者ウェブサイトに記載されているGoogle の設定手順に従ってください。
  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を使用するすべてのアクティビティにChartboost SDKがインポートされているか確認します。
  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のコールバックとAPI呼び出しを作成できるように、ランチャーアクティビティ クラスでChartboost SDK初期化を更新します。
    初期化には、2通りの方法があります。

    • ChartboostActivityを拡張するだけで、SDKによる初期化が可能になります。この方法を使うと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. 重要: すべてのインタースティシャル広告、MoreApps、インプレーおよびビデオの呼び出しには静的メソッドを使います。呼び出しには 必ず場所文字列を渡してください。 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)を呼び出す前にこのメソッドを呼び出すようにしてください。

    • メソッドが使うパラメータdelegate objectは、任意のメソッドをオーバーライドして対象のイベントへの応答を可能にします。これは、抽象クラスChartboostDelegateのオブジェクトをパラメータに設定するだけでOKです。

      private ChartboostDelegate cb_delegate = new ChartboostDelegate() {
      // 追跡および管理したいChartboostデリゲート コールバックをオーバーライドする
      }; 
      
    • この新しいメソッドを使えば、以前のSDKバージョンのときのようにChartboostDefaultDelegateを拡張しなくてすみます。

  12. アクティビティではなくChartboostActivityを拡張してChartboostを使うアクティビティを作成できます。詳細は、README.md をお読みください。重要: このメソッドで統合する場合には、super.onCreate()を呼び出す()

前に Chartboost.startWithAppId()メソッドを使ってChartboostを初期化する必要があります。そうしないと例外が発生します(SDKが内部でChartboost.onCreate()を呼び出す前にSDK初期化が行われなくてはならないため)。例:
public class <Your class name> extends ChartboostActivity {
    @Override
    public void onCreate() {
        Chartboost.startWithAppId(this, appId, appSignature);
        super.onCreate();
        fooBar();
    }
}

ポストインストール・アナリティクス(PIA)

お客様のゲームにアプリ内購入機能がある場合には、ポストインストール・アナリティクス(PIA)の導入をお勧めします。収益、ARPU、継続率、レベルなどのデータを用いて、UA アドバタイジング・キャンペーンの最適化や、リターゲティングおよびプレイヤーのセグメント化に使うカスタム ユーザーグループの作成ができるようになります。


年齢確認

年齢確認機能に以下のメソッドを使っている場合は、

didPauseClickForConfirmation()

メソッドが次のように新しくなったのでご留意ください。

public void didPauseClickForConfirmation(Activity activity)

より深く学びたい方は

SDK、サンプルアプリのほかにJava APIドキュメンテーションも提供されます。

CBSampleのコード例をご参照ください。

Proguardを使う場合は、以下をproguard.cfgファイルに追加します(Google Play開発者サービス ライブラリのProguardに関する指示にも従ってください)。

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

お問い合わせください

SDK実装がスムーズにでき、お客様がより多くの時間をゲーム開発に費やすことができるのが弊社の願いです。うまくいかない場合やご質問は、お気軽にサポートまでお問い合わせください。