Audience Networkを利用すると、iOS用アプリにFacebook広告を掲載して収益を生み出すことができます。インタースティシャル広告は、アプリ内に表示できるフルスクリーン広告です。この種類の広告ユニットを表示する場合は、このガイドの指示に従ってください。違う種類の広告ユニットに興味がある場合は、使用できる種類の一覧をご覧ください。
次のインタースティシャル広告配置を実装してみましょう。
FBAudienceNetwork
をインポートし、ViewController
がFBInterstitialAdDelegate
プロトコルを実装していることを宣言し、インタースティシャル広告ユニットのインスタンス変数を追加します。
import UIKit
import FBAudienceNetwork
class ViewController: UIViewController, FBInterstitialAdDelegate {
private var interstitialAd: FBInterstitialAd?
}
viewDidLoad
メソッドで広告オブジェクトを初期化し、interstitialAdDidLoad
を実装します。
override func viewDidLoad() {
super.viewDidLoad()
// Instantiate an InterstitialAd object.
// NOTE: the placement ID will eventually identify this as your app. You can ignore it while you are testing
// and replace it later when you have signed up.
// While you are using this temporary code you will only get test ads and if you release
// your code like this to the App Store your users will not receive ads (you will get a 'No Fill' error).
let interstitialAd = FBInterstitialAd(placementID: "YOUR_PLACEMENT_ID")
interstitialAd.delegate = self
// For auto play video ads, it's recommended to load the ad at least 30 seconds before it is shown
interstitialAd.load()
self.interstitialAd = interstitialAd
}
func interstitialAdDidLoad(_ interstitialAd: FBInterstitialAd) {
guard interstitialAd.isAdValid else {
return
}
print("Ad is loaded and ready to be displayed")
interstitialAd.show(fromRootViewController: self)
}
YOUR_PLACEMENT_ID
で表示されるIDは、テスト専用の一時的なIDです。
この一時的なIDを実際のコードで使用しても、ユーザーは広告を受け取りません(No Fillエラーを受け取ります)。テスト後にここに戻って、一時的なIDを実際の配置IDに置き換えてください。
実際の配置IDの生成方法については、Audience Network設定をご覧ください
ビルドターゲットにデバイスを選択し、上記のコードを実行すると、次のように表示されます。シミュレーターで広告を実行するときには、設定をテストモードに変更しないとテスト広告が表示されません。詳しくは、テストモードの使用方法に関するページをご覧ください。
広告が画面に表示されている間は、FBInterstitialAdでloadAd
を呼び出さないでください。将来使用するために別のFBInterstitialAdを読み込む必要がある場合は、ユーザーが現在のものを閉じた後に、例えばinterstitialAdDidClose
コールバックなどで読み込むことができます。
また、必要に応じて以下の関数を追加し、ユーザーが広告を表示した場合、クリックした場合、閉じた場合に処理を実行することができます
func interstitialAdWillLogImpression(_ interstitialAd: FBInterstitialAd) {
print("The user sees the ad")
// Use this function as indication for a user's impression on the ad.
}
func interstitialAdDidClick(_ interstitialAd: FBInterstitialAd) {
print("The user clicked on the ad and will be taken to its destination")
// Use this function as indication for a user's click on the ad.
}
func interstitialAdWillClose(_ interstitialAd: FBInterstitialAd) {
print("The user clicked on the close button, the ad is just about to close")
// Consider to add code here to resume your app's flow
}
func interstitialAdDidClose(_ interstitialAd: FBInterstitialAd) {
print("The user clicked on the close button, the ad is just about to close")
// Consider to add code here to resume your app's flow
}
ビューコントローラーの実装ファイルに、広告の読み込み失敗を処理するための以下の関数を追加し実装します。
func interstitialAd(_ interstitialAd: FBInterstitialAd, didFailWithError error: Error) {
print("Interstitial ad failed to load with error: \(error.localizedDescription)")
}
表示する広告がない場合は、error.code
が1001
に設定されてinterstitialAd:didFailWithError:
が呼び出されます。独自のカスタムレポートレイヤーやメディエーションレイヤーを使用する場合は、必要に応じてコードの値を確認して、表示する広告がない状況を検出できます。表示する広告がない場合、別のアドネットワークをフォールバックとして使用できますが、直後に広告のリクエストを再送信しないようにしてください。
NativeAdSample
は、FBAudienceNetwork/samples
フォルダにあります。プロジェクトをXcodeで開き、デバイス上またはシミュレータ上で実行してください。