20211029
本ガイドでは FiveAd Android SDK version 20211029 以降の SDK へのマイグレーション方法を説明します。
FiveAd Android SDK version 20211029 では以下の API 変更が行われました。
FiveAdListener
の非推奨化と FiveAdLoadListener
と FiveAdViewEventListener
の新設FiveAdConfig.formats
の廃止loadAd
の非推奨化FiveAdW320H180
及び FiveAdInFeed
の削除以下ではこれらの変更に対応する方法について説明いたします。
従来のコールバックAPIは、エラーが単一のコールバックで返されておりロード失敗と広告の表示中のエラーの区別がつきにくい、 また静止画の場合にのみ返される onFiveAdImpressionImage
というコールバックが存在したが、動画と静止画で処理を分ける必要があり扱いづらいといった問題がありました。 そこで、今回のアップデートではこれらの問題を解決するようにコールバックAPIを再設計しました。
FiveAdListener
は FiveAdLoadListener
と FiveAdViewEventListener
に分割されました。 FiveAdListener
を利用したコードは従来通り動作しますが、新しい API には以下のような優位点があります。
onFiveAdImpressionImage
コールバックが廃止され、代わりに onFiveAdImpression
コールバックが新設された。これにより静止画と動画のインプレッションを共通のコールバックで検出できるようになった。以下のプログラムをマイグレーションすることを考えます。
// マイグレーション前
class Before extends Activity implements FiveAdListener {
private FiveAdCustomLayout customLayoutAd;
private void showAd() {
= new FiveAdCustomLayout(this, SLOT_ID);
customLayoutAd .setListener(this);
customLayoutAd.loadAdAsync();
customLayoutAd}
public void onFiveAdLoad(@NonNull FiveAdInterface ad) {
// ロード成功時の処理
}
public void onFiveAdError(@NonNull FiveAdInterface ad, @NonNull FiveAdListener.ErrorCode errorCode) {
// ロードエラー時の処理
// 表示エラー時の処理
}
public void onFiveAdStart(@NonNull FiveAdInterface ad) {
// 動画広告の再生開始を計測
}
public void onFiveAdImpressionImage(@NonNull FiveAdInterface ad) {
// 静止画広告のインプレッションを計測
}
public void onFiveAdClose(@NonNull FiveAdInterface ad) {
// 広告が閉じたときの処理
}
// 他の FiveAdListener メソッド
}
FiveAdListener
を実装していたクラスに FiveAdLoadListener
インターフェイスと FiveAdViewEventListener
インターフェイスを追加します。 FiveAdLoadListener
で追加された onFiveAdLoadError
メソッドを追加します。 FiveAdViewEventListener
で追加された onFiveAdImpression
メソッドと onFiveAdViewError
メソッドを追加します。// マイグレーション step 1
class Step1 extends Activity implements FiveAdListener, FiveAdLoadListener, FiveAdViewEventListener {
private FiveAdCustomLayout customLayoutAd;
private void showAd() {
= new FiveAdCustomLayout(this, SLOT_ID);
customLayoutAd .setListener(this);
customLayoutAd.loadAdAsync();
customLayoutAd}
public void onFiveAdLoad(@NonNull FiveAdInterface ad) {
// ロード成功時の処理
}
public void onFiveAdError(@NonNull FiveAdInterface ad, @NonNull FiveAdListener.ErrorCode errorCode) {
// ロードエラー時の処理
// 表示エラー時の処理
}
public void onFiveAdStart(@NonNull FiveAdInterface ad) {
// 動画広告の再生開始を計測
}
public void onFiveAdImpressionImage(@NonNull FiveAdInterface ad) {
// 静止画広告のインプレッションを計測
}
public void onFiveAdClose(@NonNull FiveAdInterface ad) {
// 広告が閉じたときの処理
}
public void onFiveAdImpression(@NonNull FiveAdInterface ad) {
// インプレッションを計測
}
public void onFiveAdLoadError(@NonNull FiveAdInterface ad, @NonNull FiveAdErrorCode errorCode) {
// ロードエラー時の処理
}
public void onFiveAdViewError(@NonNull FiveAdInterface ad, @NonNull FiveAdErrorCode errorCode) {
// 表示エラー時の処理
}
// 他の FiveAdListener メソッド
}
FiveAdLoadListener
と FiveAdViewEventListener
をそれぞれ広告オブジェクトに追加し、FiveAdListener
の設定を取りやめます。// マイグレーション step 2
class Step2 extends Activity implements FiveAdListener, FiveAdLoadListener, FiveAdViewEventListener {
private FiveAdCustomLayout customLayoutAd;
private void showAd() {
= new FiveAdCustomLayout(this, SLOT_ID);
customLayoutAd .setLoadListener(this);
customLayoutAd.setViewEventListener(this);
customLayoutAd.loadAdAsync();
customLayoutAd}
public void onFiveAdLoad(@NonNull FiveAdInterface ad) {
// ロード成功時の処理
}
public void onFiveAdError(@NonNull FiveAdInterface ad, @NonNull FiveAdListener.ErrorCode errorCode) {
// ロードエラー時の処理
// 表示エラー時の処理
}
public void onFiveAdStart(@NonNull FiveAdInterface ad) {
// 動画広告の再生開始を計測
}
public void onFiveAdImpressionImage(@NonNull FiveAdInterface ad) {
// 静止画広告のインプレッションを計測
}
public void onFiveAdClose(@NonNull FiveAdInterface ad) {
// 広告が閉じたときの処理
}
public void onFiveAdImpression(@NonNull FiveAdInterface ad) {
// インプレッションを計測
}
public void onFiveAdLoadError(@NonNull FiveAdInterface ad, @NonNull FiveAdErrorCode errorCode) {
// ロードエラー時の処理
}
public void onFiveAdViewError(@NonNull FiveAdInterface ad, @NonNull FiveAdErrorCode errorCode) {
// 表示エラー時の処理
}
// 他の FiveAdListener メソッド
}
FiveAdListener
のみに存在するメソッド (i.e. onFiveAdError
, onFiveAdImpressionImage
) を削除し、FiveAdListener
インターフェイスの実装を止めます。// マイグレーション step 3
class Step3 extends Activity implements FiveAdLoadListener, FiveAdViewEventListener {
private FiveAdCustomLayout customLayoutAd;
private void showAd() {
= new FiveAdCustomLayout(this, SLOT_ID);
customLayoutAd .setLoadListener(this);
customLayoutAd.setViewEventListener(this);
customLayoutAd.loadAdAsync();
customLayoutAd}
public void onFiveAdLoad(@NonNull FiveAdInterface ad) {
// ロード成功時の処理
}
public void onFiveAdStart(@NonNull FiveAdInterface ad) {
// 動画広告の再生開始を計測
}
public void onFiveAdClose(@NonNull FiveAdInterface ad) {
// 広告が閉じたときの処理
}
public void onFiveAdImpression(@NonNull FiveAdInterface ad) {
// インプレッションを計測
}
public void onFiveAdLoadError(@NonNull FiveAdInterface ad, @NonNull FiveAdErrorCode errorCode) {
// ロードエラー時の処理
}
public void onFiveAdViewError(@NonNull FiveAdInterface ad, @NonNull FiveAdErrorCode errorCode) {
// 表示エラー時の処理
}
// 他の FiveAdListener メソッド
}
FiveAdListener.onFiveAdError
は FiveAdListener.ErrorCode
enum を引数として受け取っていましたが、
FiveAdLoadListener.onFiveAdLoadError
と FiveAdViewEventListener.onFiveAdViewError
は、FiveAdErrorCode
enum を引数として受け取るようになります。
FiveAdErrorCode
は FiveAdListener.ErrorCode
に対して以下の変更があります。
FiveAdListener.ErrorCode.NO_CACHED_AD
は、FiveAdErrorCode
では、FiveAdErrorCode.NO_AD
とリネームされました。FiveAdListener.ErrorCode
に存在した enum は使われなくなったため非推奨化されました。そのため、FiveAdErrorCode
には存在しません。
NO_FILL
UNSUPPORTED_OS_VERSION
CONTENT_UNAVAILABLE
従来のSDKは音声設定が分かりづらかったため、音声設定に関する再設計を行いました。 簡単にまとめると、
FiveAd.enableSound
を呼ぶ代わりに FiveAdConfig
の enableSoundByDefault
を呼ぶように修正してくださいFiveAd.isSoundEnabled
は利用しないでください新しいSDKでは、音声設定には以下のような明確な優先順位が付けられました。
広告ごとの音声設定は FiveAdInterface
の enableSound
で設定することが可能です。 これは従来通りの API となっています。
アプリ全体のデフォルト設定は、SDK初期化時に FiveAdConfig
の enableSoundByDefault
で設定することができます。 従来の SDK では FiveAd.enableSound
により設定していましたが、こちらは非推奨となりました。 また FiveAd.isSoundEnabled
もあわせて非推奨となっています。
アプリ全体のデフォルト設定は管理画面でも設定できますが、管理画面の設定よりもSDK初期化時の設定が優先されます。 スロットごとの設定については、現在管理画面のリニューアルを行っており、リニューアル後に解放される予定です。
従来のSDKでは、ユーザがある広告で音声ボタンを操作すると、その設定が保存されて他の広告枠でも音声設定が変わるようになっていました。 しかしこれはメディア側の意図に反する動作をしてしまうことがあったため、今回の修正で廃止されました。 したがって、ユーザがある広告で音声ボタンを操作しても、他の広告でそれが反映されることはありません。
音声の仕様については、今後も改良を重ねていこうと考えています。
FADAdViewW320H180
及び FADInFeed
の機能が削除されたことにより FiveAdConfig.formats
の設定は不要になりました。 FiveAdConfig.formats
への代入コードは削除してください。
loadAd
は将来廃止される予定です。 loadAdAsync
をご利用ください。
FADAdViewCustomLayout
を代わりにご利用ください。
この機能は完全に削除されました。
2021 年の Google Play 開発者サービスの更新(https://support.google.com/googleplay/android-developer/answer/6048248) に対応するために、 FiveAd Android SDK はライブラリマニフェストにて以下の広告 ID の宣言を行うように変更されました。
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
ビルド時にFiveAd Android SDK のライブラリマニフェストはアプリのマニフェストに統合されるため、明示的な宣言は不要です。 最終的に生成されたマニフェストに広告 ID が宣言されていることをご確認ください。
一方で、広告 ID の宣言が禁止されているアプリに FiveAd Android SDK を組み込む場合には、 広告 ID を取得する宣言がアプリマニフェストに統合されないようにする必要があります。
詳細は、前述の Google のドキュメントをご参照ください。