2021/09/03
本ガイドでは FiveAd iOS SDK version 20210903 以降の SDK へのマイグレーション方法を説明します。
FiveAd iOS SDK version 20210903 では以下の API 変更が行われました。
FADDelegate
の非推奨化と FADLoadDelegate
と FADAdViewEventListner
の新設FADConfig.fiveAdFormat
の廃止FADErrorCode
の Swift 対応と一部エラーコードのリネーム及び非推奨化loadAd
の非推奨化FADAdViewW320H180
及び FADInFeed
の削除以下ではこれらの変更に対応する方法について説明いたします。
従来のコールバックAPIは、エラーが単一のコールバックで返されておりロード失敗と広告の表示中のエラーの区別がつきにくい、 また静止画の場合にのみ返される fiveAdDidImpressionImage
というコールバックが存在したが、動画と静止画で処理を分ける必要があり扱いづらいといった問題がありました。 そこで、今回のアップデートではこれらの問題を解決するようにコールバックAPIを再設計しました。
FADDelegate
は FADLoadDelegate
と FADAdViewEventListner
に分割されました。 FADDelegate
を利用したコードは従来通り動作しますが、新しい API には以下のような優位点があります。
fiveAdDidImpressionImage
コールバックが廃止され、代わりに fiveAdDidImpression
コールバックが新設された。これにより静止画と動画のインプレッションを共通のコールバックで検出できるようになった。以下のプログラムをマイグレーションすることを考えます。
// マイグレーション前
class Before : FADDelegate {
private var customLayoutAd: FADAdViewCustomLayout?
func showAd() {
self.customLayoutAd = FADAdViewCustomLayout(slotId: SLOT_ID, width: Float(SLOT_WIDTH))
self.customLayoutAd?.delegate = self
self.customLayoutAd?.loadAdAsync()
}
func fiveAdDidLoad(_ ad: FADAdInterface!) {
// ロード成功時の処理
}
func fiveAd(_ ad: FADAdInterface!, didFailedToReceiveAdWithError errorCode: FADErrorCode) {
// エラー時の処理
}
func fiveAdDidStart(_ ad: FADAdInterface!) {
// 動画広告の再生開始を計測
}
func fiveAdDidImpressionImage(_ ad: FADAdInterface!) {
// 静止画広告のインプレッションを計測
}
func fiveAdDidClose(_ ad: FADAdInterface!) {
// 広告が閉じたときの処理
}
}
FADDelegate
を実装していたクラスが FADLoadDelegate
と FADAdViewEventListner
を実装するように書きかえます。 fiveAdDidImpressionImage
を実装していた場合は fiveAdDidImpression
という名前に書きかえます。 fiveAdDidImpression
は静止画と動画の両方でインプレッション時に発火する点に注意してください。// マイグレーション step 1
class Step1 : FADDelegate, FADLoadDelegate, FADAdViewEventListener {
private var customLayoutAd: FADAdViewCustomLayout?
func showAd() {
self.customLayoutAd = FADAdViewCustomLayout(slotId: SLOT_ID, width: Float(SLOT_WIDTH))
self.customLayoutAd?.delegate = self
self.customLayoutAd?.loadAdAsync()
}
func fiveAdDidLoad(_ ad: FADAdInterface!) {
// ロード成功時の処理
}
func fiveAd(_ ad: FADAdInterface!, didFailedToReceiveAdWithError errorCode: FADErrorCode) {
// エラー時の処理
}
func fiveAdDidStart(_ ad: FADAdInterface!) {
// 動画広告の再生開始を計測
}
func fiveAdDidImpression(_ ad: FADAdInterface!) {
// インプレッションを計測
}
func fiveAdDidClose(_ ad: FADAdInterface!) {
// 広告が閉じたときの処理
}
}
fiveAd(_: didFailedToShowAdWithError:)
を追加します。 もともと実装されていたエラーコールバック fiveAd(_: didFailedToReceiveAdWithError:)
はロード失敗時の処理だけを記述するように書き直します。// マイグレーション step 2
class Step2 : FADDelegate, FADLoadDelegate, FADAdViewEventListener {
private var customLayoutAd: FADAdViewCustomLayout?
func showAd() {
self.customLayoutAd = FADAdViewCustomLayout(slotId: SLOT_ID, width: Float(SLOT_WIDTH))
self.customLayoutAd?.delegate = self
self.customLayoutAd?.loadAdAsync()
}
func fiveAdDidLoad(_ ad: FADAdInterface!) {
// ロード成功時の処理
}
func fiveAd(_ ad: FADAdInterface!, didFailedToReceiveAdWithError errorCode: FADErrorCode) {
// ロード失敗時の処理
}
func fiveAdDidStart(_ ad: FADAdInterface!) {
// 動画広告の再生開始を計測
}
func fiveAdDidImpression(_ ad: FADAdInterface!) {
// インプレッションを計測
}
func fiveAdDidClose(_ ad: FADAdInterface!) {
// 広告が閉じたときの処理
}
func fiveAd(_ ad: FADAdInterface!, didFailedToShowAdWithError errorCode: FADErrorCode) {
// 広告表示中のエラーの処理
}
}
FADLoadDelegate
と FADAdViewEventListner
をそれぞれ広告ビューに登録します。 FADLoadDelegate
は setLoadDelegate
メソッドで、FADAdViewEventListner
は setAdViewEventListener
メソッドで登録します。 setLoadDelegate
は loadAdAsync
よりも先に呼ぶ必要があります。 setAdViewEventListener
は実際に広告をビューに貼るよりも前に行う必要があります。// マイグレーション step 3
class Step3 : FADDelegate, FADLoadDelegate, FADAdViewEventListener {
private var customLayoutAd: FADAdViewCustomLayout?
func showAd() {
self.customLayoutAd = FADAdViewCustomLayout(slotId: SLOT_ID, width: Float(SLOT_WIDTH))
self.customLayoutAd?.delegate = self
self.customLayoutAd?.setLoadDelegate(self)
self.customLayoutAd?.setAdViewEventListener(self)
self.customLayoutAd?.loadAdAsync()
}
func fiveAdDidLoad(_ ad: FADAdInterface!) {
// ロード成功時の処理
}
func fiveAd(_ ad: FADAdInterface!, didFailedToReceiveAdWithError errorCode: FADErrorCode) {
// ロード失敗時の処理
}
func fiveAdDidStart(_ ad: FADAdInterface!) {
// 動画広告の再生開始を計測
}
func fiveAdDidImpression(_ ad: FADAdInterface!) {
// インプレッションを計測
}
func fiveAdDidClose(_ ad: FADAdInterface!) {
// 広告が閉じたときの処理
}
func fiveAd(_ ad: FADAdInterface!, didFailedToShowAdWithError errorCode: FADErrorCode) {
// 広告表示中のエラーの処理
}
}
delegate
の代入を削除し、FADDelegate
プロトコルを実装するのをやめます。// マイグレーション step 4
class Step4 : FADLoadDelegate, FADAdViewEventListener {
private var customLayoutAd: FADAdViewCustomLayout?
func showAd() {
self.customLayoutAd = FADAdViewCustomLayout(slotId: SLOT_ID, width: Float(SLOT_WIDTH))
self.customLayoutAd?.setLoadDelegate(self)
self.customLayoutAd?.setAdViewEventListener(self)
self.customLayoutAd?.loadAdAsync()
}
func fiveAdDidLoad(_ ad: FADAdInterface!) {
// ロード成功時の処理
}
func fiveAd(_ ad: FADAdInterface!, didFailedToReceiveAdWithError errorCode: FADErrorCode) {
// ロード失敗時の処理
}
func fiveAdDidStart(_ ad: FADAdInterface!) {
// 動画広告の再生開始を計測
}
func fiveAdDidImpression(_ ad: FADAdInterface!) {
// インプレッションを計測
}
func fiveAdDidClose(_ ad: FADAdInterface!) {
// 広告が閉じたときの処理
}
func fiveAd(_ ad: FADAdInterface!, didFailedToShowAdWithError errorCode: FADErrorCode) {
// 広告表示中のエラーの処理
}
}
従来のSDKは音声設定が分かりづらかったため、音声設定に関する再設計を行いました。 簡単にまとめると、
FADSettings.enableSound
を呼ぶ代わりに FADConfig
の enableSound(byDefault:)
を呼ぶように修正してくださいFADSettings.isSoundEnabled
は利用しないでください新しいSDKでは、音声設定には以下のような明確な優先順位が付けられました。
広告ごとの音声設定は FADAdInterface
の enableSound
で設定することが可能です。 これは従来通りの API となっています。
アプリ全体のデフォルト設定は、SDK初期化時に FADConfig
の enableSound(byDefault:)
で設定することができます。 従来の SDK では FADSettings.enableSound
により設定していましたが、こちらは非推奨となりました。 また FADSettings.isSoundEnabled
もあわせて非推奨となっています。
アプリ全体のデフォルト設定は管理画面でも設定できますが、管理画面の設定よりもSDK初期化時の設定が優先されます。 スロットごとの設定については、現在管理画面のリニューアルを行っており、リニューアル後に解放される予定です。
従来のSDKでは、ユーザがある広告で音声ボタンを操作すると、その設定が保存されて他の広告枠でも音声設定が変わるようになっていました。 しかしこれはメディア側の意図に反する動作をしてしまうことがあったため、今回の修正で廃止されました。 したがって、ユーザがある広告で音声ボタンを操作しても、他の広告でそれが反映されることはありません。
音声の仕様については、今後も改良を重ねていこうと考えています。
FADAdViewW320H180
及び FADInFeed
の機能が削除されたことにより FADConfig.fiveAdFormat
の設定は不要になりました。 FADConfig.fiveAdFormat
への代入コードは削除してください。
FADErrorCode
を Swift に対応するように書き直しました。 これにより、FADErrorCode
の enum 定数名が変わっていますが、古い enum 定数名もエイリアスとして残しています。
同時に、kFADErrorNoCachedAd
は kFADErrorCodeNoAd
という名前に変更しました。 これは Cached
が誤解を招きやすいと判断したためです。
また NoFill
, UnsupportedOsVersion
, 及び ContentUnavailable
のエラーコードは利用されていないため、非推奨化しました。 これらのエラーコードを FiveSDK が返すことはありません。
loadAd
は将来廃止される予定です。 loadAdAsync
をご利用ください。
FADAdViewCustomLayout
を代わりにご利用ください。
この機能は完全に削除されました。