LoginSignup
30
28

More than 5 years have passed since last update.

2日目にして早くも iOS Advent Calendar 2nd が途切れそうなので急遽書かせて頂きます!

iAdの実装方法

一昔前

#import <iAd/iAd.h>
adView = [[ADBannerView alloc] initWithAdType:ADAdTypeBanner];
adView.frame = CGRectMake(0, self.view.frame.size.height -
    adView.frame.size.height, adView.frame.size.width, adView.frame.size.height);
adView.autoresizesSubviews = YES;
adView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin;
adView.delegate = self;
[self.view addSubview:adView];

バナーオブジェクトを生成して、表示位置を表示して、回転時の表示に対応して、、いろいろ大変でした。

import iAd
self.canDisplayBannerAds = true

たったこれだけ!

Simulator Screen Shot 2015.12.02 10.14.34.png

画面の最下部にAdを表示してくれます。(表示位置は変えられないようです

ちなみに、canDisplayBannerAds プロパティは iOS 7 から UIViewControlleriAdAdditions に追加されています。

@available(iOS 7.0, *)
public var canDisplayBannerAds: Bool

インタースティシャルにも対応

あらかじめAdを読み込んでおき、

UIViewController.prepareInterstitialAds()

interstitialPresentationPolicyAutomatic を指定します。

self.interstitialPresentationPolicy = ADInterstitialPresentationPolicy.Automatic

Simulator Screen Shot 2015.12.02 10.19.31.png

これだといつ表示されるかわからないので、任意のタイミングで表示することもできます。

self.interstitialPresentationPolicy = ADInterstitialPresentationPolicy.Manual
let displayed = self.requestInterstitialAdPresentation()

どうやってAdを表示してるのか

試しに View UI Hierarchy で表示してみました。

スクリーンショット 2015-12-02 10.38.39.png

UIViewController の subview として ADBannerView を addSubview しているようですね。

(lldb) po self.view.subviews
▿ 2 elements
  - [0] : <UITableView: 0x7f959983c600; frame = (0 0; 375 617); clipsToBounds = YES; autoresize = W+H; gestureRecognizers = <NSArray: 0x7f95995685d0>; layer = <CALayer: 0x7f95995597b0>; contentOffset: {0, -64}; contentSize: {375, 880}>
  - [1] : <ADBannerView: 0x7f959943bb30; frame = (0 617; 375 50); clipsToBounds = YES; layer = <CALayer: 0x7f959942e0c0>>

ちなみに、Ad表示前にもともと表示していたビュー(上の例だとUITableView)には self.originalContentView でアクセスできます。

(lldb) po self.originalContentView  
<UITableView: 0x7f959983c600; frame = (0 0; 375 617); clipsToBounds = YES; autoresize = W+H; gestureRecognizers = <NSArray: 0x7f95995685d0>; layer = <CALayer: 0x7f95995597b0>; contentOffset: {0, -64}; contentSize: {375, 880}>

サンプルコード

ちょっと試してみたい方はこちら
https://github.com/koogawa/iAdSample

肝心のフィルレートは…?

その話はやめておきます。

30
28
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
28