Audience Networkを利用すると、iOS用アプリにFacebook広告を掲載して収益を生み出すことができます。このガイドでは、バナーや中サイズ矩形広告を表示するiOSアプリの作成方法について説明します。
You can change placements in Monetization Manager to the Medium Rectangle format if these were previously configured as Banner for bidding. Similarly, for any new medium rectangle placements, navigate to the placement settings page in Monetization Manager and select Medium Rectangle (not Banner).
Placements will deliver as normal even if they are not changed to the medium rectangle format. However, to avoid confusion, we recommend that you change these placements to medium rectangle.
他の種類の広告ユニットに興味がある場合は、使用できる種類の一覧をご覧ください。
次のバナー広告配置を実装してみましょう。
先に進む前に、iOS設定ガイドの手順を完了してあることを確認してください。
ネイティブ広告とバナー広告をデザインする際には、ユーザーが快適に利用できるよう「iOSレイアウトのガイドライン」に従ってください。
adContainer
という名前を付けます。FBAudienceNetwork
をインポートし、FBAdViewDelegate
プロトコルへの適合性を宣言し、広告ユニットのインスタンス変数を追加します。
import UIKit
import FBAudienceNetwork
class ViewController: UIViewController, FBAdViewDelegate {
@IBOutlet private var adContainer: UIView!
private var adView: FBAdView?
}
viewDidLoad
に追加します。FBAdView
の新しいインスタンスを作成して、ビューに追加します。FBAdView
はUIView
のサブクラスです。これを、他のビューと同じようにビュー階層に追加できます。
override func viewDidLoad() {
super.viewDidLoad()
// Instantiate an AdView object.
// NOTE: the placement ID will eventually identify this as your app, you can ignore 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 adView = FBAdView(placementID: "YOUR_PLACEMENT_ID", adSize: kFBAdSizeHeight50Banner, rootViewController: self)
adView.frame = CGRect(x: 0, y: 0, width: 320, height: 250)
adView.delegate = self
adView.loadAd()
self.adView = adView
}
FBAdView
に対するadSizeパラメーターにkFBAdSizeHeight250Rectangle
を指定するだけです。FBAdView
で使う3種類の広告サイズがサポートされています。ユニットの幅は320ピクセル以上であれば自由に設定でき、高さのみが定義されています。広告フォーマット | AdSizeのリファレンス | サイズ | 推奨事項 |
---|---|---|---|
中サイズ矩形 |
| 300×250 | このフォーマットは、パフォーマンス、品質、CPU効率が高まるので、強くおすすめします |
標準的なバナー |
| 320×50 | このフォーマットは、携帯電話に適していますが、パフォーマンスと品質が十分でないためおすすめできません |
大サイズのバナー |
| 320×90 | このフォーマットは、タブレットや大型のデバイスに適していますが、パフォーマンスと品質が十分でないためおすすめできません |
YOUR_PLACEMENT_ID
は自分の配置ID文字列に置き換えてください。配置IDがない場合や、その取得方法が分からない場合は、スタートガイドをご覧ください。ビルドターゲットにデバイスを選択し、上記のコードを実行すると、次のように表示されます。シミュレーターで広告を実行するときには、設定をテストモードに変更しないとテスト広告が表示されません。詳しくは、テストモードの使用方法に関するページをご覧ください。
また、必要に応じて以下の関数を追加し、広告が閉じられた場合やクリックされた場合に処理を実行することもできます。
func adViewDidClick(_ adView: FBAdView) {
print("Ad was clicked.")
}
func adViewDidFinishHandlingClick(_ adView: FBAdView) {
print("Ad did finish click handling.")
}
func adViewWillLogImpression(_ adView: FBAdView) {
print("Ad impression is being captured.")
}
広告の読み込みの失敗に対処するために、ビューコントローラーに以下の2つのデリゲート関数を追加して実装します。
func adView(_ adView: FBAdView, didFailWithError error: Error) {
print("Ad failed to load with error: \(error.localizedDescription)")
}
func adViewDidLoad(_ adView: FBAdView) {
print("Ad was loaded and ready to be displayed")
showAd()
}
private func showAd() {
guard let adView = adView, adView.isAdValid else {
return
}
adContainer.addSubview(adView)
}
表示する広告がない場合は、error.code
を1001
に設定してadView:didFailWithError:
が呼び出されます。独自のカスタムレポートレイヤーやメディエーションレイヤーを使う場合は、必要に応じてコードの値を確認して、表示する広告がない状況を検出できます。表示する広告がない場合、別のアドネットワークをフォールバックとして使用できますが、直後に広告のリクエストを再送信しないようにしてください。
NativeAdSample
は、FBAudienceNetwork/samples
フォルダにあります。プロジェクトをXcodeで開き、デバイス上またはシミュレータ上で実行してください。