FIVE iOS SDK version 20210903 マイグレーションガイド

LINE Corporation

2021/09/03

概要

本ガイドでは FiveAd iOS SDK version 20210903 以降の SDK へのマイグレーション方法を説明します。

FiveAd iOS SDK version 20210903 では以下の API 変更が行われました。

以下ではこれらの変更に対応する方法について説明いたします。

FADDelegate の非推奨化と FADLoadDelegate と FADAdViewEventListner の新設

従来のコールバックAPIは、エラーが単一のコールバックで返されておりロード失敗と広告の表示中のエラーの区別がつきにくい、 また静止画の場合にのみ返される fiveAdDidImpressionImage というコールバックが存在したが、動画と静止画で処理を分ける必要があり扱いづらいといった問題がありました。 そこで、今回のアップデートではこれらの問題を解決するようにコールバックAPIを再設計しました。

FADDelegateFADLoadDelegateFADAdViewEventListner に分割されました。 FADDelegate を利用したコードは従来通り動作しますが、新しい API には以下のような優位点があります。

具体的な手順

以下のプログラムをマイグレーションすることを考えます。

// マイグレーション前
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!) {
    // 広告が閉じたときの処理
  }
}
  1. FADDelegate を実装していたクラスが FADLoadDelegateFADAdViewEventListner を実装するように書きかえます。 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!) {
    // 広告が閉じたときの処理
  }
}
  1. 広告表示中のエラーを受け取るコールバック 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) {
    // 広告表示中のエラーの処理
  }
}
  1. FADLoadDelegateFADAdViewEventListner をそれぞれ広告ビューに登録します。 FADLoadDelegatesetLoadDelegate メソッドで、FADAdViewEventListnersetAdViewEventListener メソッドで登録します。 setLoadDelegateloadAdAsync よりも先に呼ぶ必要があります。 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) {
    // 広告表示中のエラーの処理
  }
}
  1. 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) {
    // 広告表示中のエラーの処理
  }
}

音声設定 API の再設計

従来のSDKは音声設定が分かりづらかったため、音声設定に関する再設計を行いました。 簡単にまとめると、

音声設定 API の詳細

新しいSDKでは、音声設定には以下のような明確な優先順位が付けられました。

  1. ユーザによる音声ボタン操作
  2. 広告ごとの設定
  3. スロットごとの設定
  4. アプリ全体のデフォルト設定

広告ごとの音声設定は FADAdInterfaceenableSound で設定することが可能です。 これは従来通りの API となっています。

アプリ全体のデフォルト設定は、SDK初期化時に FADConfigenableSound(byDefault:) で設定することができます。 従来の SDK では FADSettings.enableSound により設定していましたが、こちらは非推奨となりました。 また FADSettings.isSoundEnabled もあわせて非推奨となっています。

アプリ全体のデフォルト設定は管理画面でも設定できますが、管理画面の設定よりもSDK初期化時の設定が優先されます。 スロットごとの設定については、現在管理画面のリニューアルを行っており、リニューアル後に解放される予定です。

従来のSDKでは、ユーザがある広告で音声ボタンを操作すると、その設定が保存されて他の広告枠でも音声設定が変わるようになっていました。 しかしこれはメディア側の意図に反する動作をしてしまうことがあったため、今回の修正で廃止されました。 したがって、ユーザがある広告で音声ボタンを操作しても、他の広告でそれが反映されることはありません。

音声の仕様については、今後も改良を重ねていこうと考えています。

FADConfig.fiveAdFormat の廃止

FADAdViewW320H180 及び FADInFeed の機能が削除されたことにより FADConfig.fiveAdFormat の設定は不要になりました。 FADConfig.fiveAdFormat への代入コードは削除してください。

FADErrorCode の Swift 対応と一部エラーコードのリネーム及び非推奨化

FADErrorCode を Swift に対応するように書き直しました。 これにより、FADErrorCode の enum 定数名が変わっていますが、古い enum 定数名もエイリアスとして残しています。

同時に、kFADErrorNoCachedAdkFADErrorCodeNoAd という名前に変更しました。 これは Cached が誤解を招きやすいと判断したためです。

また NoFill, UnsupportedOsVersion, 及び ContentUnavailable のエラーコードは利用されていないため、非推奨化しました。 これらのエラーコードを FiveSDK が返すことはありません。

loadAd の非推奨化

loadAd は将来廃止される予定です。 loadAdAsync をご利用ください。

非推奨だった FADAdViewW320H180 及び FADInFeed の削除

FADAdViewCustomLayout を代わりにご利用ください。

非推奨だった WebView 機能の削除

この機能は完全に削除されました。