バナーと中サイズ矩形広告をiOSアプリに追加する

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.

他の種類の広告ユニットに興味がある場合は、使用できる種類の一覧をご覧ください。

バナー広告と中サイズ矩形広告の手順

次のバナー広告配置を実装してみましょう。



ステップ1: 広告ビューを読み込んで表示する

ステップ2: インプレッションとクリックのログ記録を確認する

ステップ3: 広告が表示されない場合のデバッグ方法

ステップ4: 広告の連携をテストする

ステップ1: 広告ビューを読み込んで表示する

先に進む前に、iOS設定ガイドの手順を完了してあることを確認してください。

ネイティブ広告とバナー広告をデザインする際には、ユーザーが快適に利用できるよう「iOSレイアウトのガイドライン」に従ってください。

  1. iOSのスタートガイドに従って新規プロジェクトを作成したら、Main.storyboardを開きます。UIView要素をメインのView要素に追加し、adContainerという名前を付けます。
  2. 次に、動画コントローラーヘッダーファイル(Swiftユーザーの場合は、Swiftファイル)でFBAudienceNetworkをインポートし、FBAdViewDelegateプロトコルへの適合性を宣言し、広告ユニットのインスタンス変数を追加します。
    import UIKit
    import FBAudienceNetwork
    
    class ViewController: UIViewController, FBAdViewDelegate {
    
      @IBOutlet private var adContainer: UIView!
    
      private var adView: FBAdView?
    }
    #import <UIKit/UIKit.h>
    @import FBAudienceNetwork;
    
    @interface ViewController : UIViewController <FBAdViewDelegate>
    
    @property (nonatomic, weak) IBOutlet UIView *adContainer;
    @property (nonatomic, strong) FBAdView *adView;
    
    @end

  3. 以下のコードをviewDidLoadに追加します。FBAdViewの新しいインスタンスを作成して、ビューに追加します。FBAdViewUIViewのサブクラスです。これを、他のビューと同じようにビュー階層に追加できます。
    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
    }
    - (void)viewDidLoad
    {
      [super viewDidLoad];
      // Instantiate an AdView object. 
      // NOTE: the placement ID will eventually identify this as your App, you can ignore it for
      // now, 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).
      self.adView = [[FBAdView alloc] initWithPlacementID:@"YOUR_PLACEMENT_ID" adSize:kFBAdSizeHeight50Banner rootViewController:self];
      self.adView.frame = CGRectMake(0, 0, 320, 250);
      self.adView.delegate = self;
      [self.adView loadAd];
    }
    代わりに中サイズ矩形広告を追加する場合は、FBAdViewに対するadSizeパラメーターにkFBAdSizeHeight250Rectangleを指定するだけです。

    Audience Networkでは、FBAdViewで使う3種類の広告サイズがサポートされています。ユニットの幅は320ピクセル以上であれば自由に設定でき、高さのみが定義されています。

    広告フォーマット AdSizeのリファレンス サイズ 推奨事項

    中サイズ矩形

    kFBAdSizeHeight 250Rectangle

    300×250

    このフォーマットは、パフォーマンス、品質、CPU効率が高まるので、強くおすすめします

    標準的なバナー

    kFBAdSizeHeight 50Banner

    320×50

    このフォーマットは、携帯電話に適していますが、パフォーマンスと品質が十分でないためおすすめできません

    大サイズのバナー

    kFBAdSizeHeight 90Banner

    320×90

    このフォーマットは、タブレットや大型のデバイスに適していますが、パフォーマンスと品質が十分でないためおすすめできません

  4. YOUR_PLACEMENT_IDは自分の配置ID文字列に置き換えてください。配置IDがない場合や、その取得方法が分からない場合は、スタートガイドをご覧ください。ビルドターゲットにデバイスを選択し、上記のコードを実行すると、次のように表示されます。



シミュレーターで広告を実行するときには、設定をテストモードに変更しないとテスト広告が表示されません。詳しくは、テストモードの使用方法に関するページをご覧ください。

ステップ2: インプレッションとクリックのログ記録を確認する

また、必要に応じて以下の関数を追加し、広告が閉じられた場合やクリックされた場合に処理を実行することもできます。

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.")
}
- (void)adViewDidClick:(FBAdView *)adView
{
  NSLog(@"Ad was clicked.");
}

- (void)adViewDidFinishHandlingClick:(FBAdView *)adView
{
  NSLog(@"Ad did finish click handling.");
}

- (void)adViewWillLogImpression:(FBAdView *)adView
{
  NSLog(@"Ad impression is being captured.");
}

ステップ3: 広告が表示されない場合のデバッグ方法

広告の読み込みの失敗に対処するために、ビューコントローラーに以下の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)
}
- (void)adView:(FBAdView *)adView didFailWithError:(NSError *)error
{
  NSLog(@"Ad failed to load with error: %@", error);
}

- (void)adViewDidLoad:(FBAdView *)adView
{
  NSLog(@"Ad was loaded and ready to be displayed");
  [self showAd];
}

- (void)showAd
{
  if (self.adView && self.adView.isAdValid) {
    [self.adContainer addSubview:self.adView];
  }
}

表示する広告がない場合は、error.code1001に設定してadView:didFailWithError:が呼び出されます。独自のカスタムレポートレイヤーやメディエーションレイヤーを使う場合は、必要に応じてコードの値を確認して、表示する広告がない状況を検出できます。表示する広告がない場合、別のアドネットワークをフォールバックとして使用できますが、直後に広告のリクエストを再送信しないようにしてください。


次のステップ

  • ネイティブ広告の使い方を示すコードサンプルを読み、研究してください。SDKの一部として提供されるNativeAdSampleは、FBAudienceNetwork/samplesフォルダにあります。プロジェクトをXcodeで開き、デバイス上またはシミュレータ上で実行してください。