広告を利用するには、SDKを有効にする必要があります。詳細はインストールガイドとSDKの初期化をご確認ください。
簡易版インフィード広告はUITableView
の利用を前提としています。
それ以外での利用については、カスタムインフィード広告をご利用ください。
簡易版インフィード広告の実装例を挙げます。
class YourViewController: UITableViewController, RFPInstreamAdLoaderDelegate {
let adSpotId = "your_adspot_id"
let adPositions = [3, 5]
let instreamAdLoader = RFPInstreamAdLoader.init()
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
// インフィード広告を挿入したいtableViewと広告枠IDを設定
instreamAdLoader.delegate = self
instreamAdLoader.rfpBind(to: tableView, adSpotId: adSpotId)
// インフィード広告ロードを呼び出し
instreamAdLoader.rfpLoadAd()
// 位置を指定して呼び出す場合
instreamAdLoader.rfpLoadAd(UInt(adPositions.count), positions: adPositions)
}
//....
}
tableView.reloadData()
を呼ぶ必要はありません。tableView.reloadData()
を呼ぶ必要がある場合は、instreamAdLoader.rfpReloadData()
を呼んでください。
1リクエストあたりの広告案件数と広告位置配列は、instreamAdLoader.rfpLoadAd(_:positions:)
などのAPIを使ってコントロールすることも出来ます。
インフィード広告の表示をする際に、そのイベントを受け取りたい場合があります。
その場合は RFPInstreamAdLoader
のプロパティである delegate が、RFPInstreamAdLoaderDelegate
に準拠しているので、それ経由で受信する事が出来ます。
override func viewDidLoad() {
super.viewDidLoad()
// (1) delegate を設定
instreamAdLoader.delegate = self
}
// (2) 広告のロード開始時
func rfpInstreamAdLoaderDidStartLoadingAd(_ instreamAdLoader: RFPInstreamAdLoader!) {
}
// (3) 広告のロード完了時
func rfpInstreamAdLoaderDidFinishLoadingAd(_ instreamAdLoader: RFPInstreamAdLoader!) {
}
// (4) 広告Viewのロード完了時
func rfpInstreamAdLoaderDidFinishLoadingAdImage(_ adIndexPath: IndexPath!) {
}
// (5) 広告のクリック処理完了時
func rfpInstreamAdLoaderDidFinishSendingAdClick() {
}
// (6) 広告のロード失敗時
func rfpInstreamAdLoader(_ instreamAdLoader: RFPInstreamAdLoader!, didFailToLoadAdWithError error: Error!) {
}
// (7) 広告Viewのロード失敗時
func rfpInstreamAdLoader(_ adIndexPath: IndexPath!, didFailToLoadAdImageWithError error: Error!) {
}
ユーザーがサイト下部に到達した際に追加フィードを読み込むような UI の場合に、追加で広告ロードを行うことも可能です。
func loadMore {
// 追加の広告をロードして、広告位置配列をもとにテーブル内の適切な位置に挿入します
instreamAdLoader.rfpReloadData()
}
現状、7つの広告フォーマットを利用できます。設定はこちらになります。
// The format looks like this
// -----------------------------------------------------
// | | name |
// | image | ad text |
// | | |
// | 90x90 | |
// | | PR |
// -----------------------------------------------------
// The format looks like this
// -----------------------------------------------------
// | ------- name |
// | | image | PR |
// | | 50x50 | ad text |
// | | | |
// | ------- |
// -----------------------------------------------------
// The format looks like this
// -----------------------------------------------------
// | |
// | ad image |
// | |
// | --------------------------------------------------- |
// | ad text |
// | |
// | |
// | PR |
// | advertiser name |
// -----------------------------------------------------
// The format looks like this
// -----------------------------------------------------
// | advertiser name |
// | PR |
// | ad text |
// | --------------------------------------------------- |
// | |
// | |
// | image |
// | |
// -----------------------------------------------------
// The format looks like this
// -----------------------------------------------------
// | name |
// | PR |
// | --------------------------------------------------- |
// | |
// | |
// | image |
// | |
// | |
// | |
// | --------------------------------------------------- |
// | text |
// -----------------------------------------------------
// The format looks like this
// -----------------------------------------------------
// | name |
// | PR |
// | --------------------------------------------------- |
// | |
// | ad text |
// | |
// | |
// -----------------------------------------------------
instreamAdLoader.rfpBind(to:adSpotId:)
に渡すUITableView
は、section数が1つである場合のみ動作保証されます。