MENU
コンテンツ再構築中

Swift:iOS アプリで AdMob 広告を実装・表示する

Swift で開発中のプロジェクトへ AdMob を実装する方法を説明します。

一部 Apple公式、Google 公式で説明されている内容を含みますが、この説明を見るだけで AdMob が実装・表示できます。
iOSの無料アプリ開発時にお役立て下さい。

INDEX

iOS アプリで AdMob 広告を実装・表示する

SDK のダウンロード

Google Developers から iOS版の Google Mobile Ads SDK をダウンロードし、Add-ons 以外のファイルを全て プロジェクトにドラッグし追加します。

img_swift-admob-implementation_1

フレームワークのインポート

Project -> TARGET -> General -> Linked Frameworks and Libraries より「+」をクリックし、以下のフレームワークをプロジェクトにインポートします。

  • AdSupport
  • AudioToolbox
  • AVFoundation
  • CoreGraphics
  • CoreTelephony
  • EventKit
  • EventKitUI
  • MessageUI
  • StoreKit
  • SystemConfiguration

img_swift-admob-implementation_2

Bridge-Header.h の作成

AdMob の SDK は Objective-C で記述されています。Swift から Objective-C を実行するために Bridging-Header ファイルを作成します。

Xcode ウインドウの一番左下の「+」より New File… を選択します。

iOS -> Source -> Header File を選択し「Next」をクリック。

img_swift-admob-implementation_3

ファイル名を AdMob-Bridging-Header.h とし、プロジェクトフォルダの任意の場所(ここではプロジェクトルート直下)に追加します。

img_swift-admob-implementation_4

作成された AdMob-Bridging-Header.h ファイルの #define 行の後に以下の2行を追加します。
[code]
#import “GADBannerView.h”
#import “GADInterstitial.h”
[/code]

img_swift-admob-implementation_5

ヘッダーファイルへパスを追加

AdMob-Bridging-Header.h へのパスを追加します。

Project -> TARGET -> Build Settings -> Swift Compiler – Code Generation -> Objective-C Bridging Header の右側の欄へ、先ほど追加したヘッダーファイルまでのパスを定義します。(プロジェクトファイル内までのパスは $(SRCROOT)/$(PROJECT)/ となります)

img_swift-admob-implementation_6

プロジェクトファイル直下に AdMob-Bridging-Header.h を作成した場合のパスの表記は以下のようになります。

[code]
$(SRCROOT)/$(PROJECT)/AdMob-Bridging-Header.h
[/code]

Objective-C Linker Flags の設定

このままではエラーが出てしまいますので、続けて以下の Linker Flags を設定します。

Project -> TARGET -> BuildSettings -> Linking -> Other Linker Flags の右側の欄から「+」をクリックし -ObjC を追加します。

img_swift-admob-implementation_7

ViewController から AdMob を表示

  1. AdMob を表示させたい ViewController のクラスに GADBannerViewDelegate を設定します。
  2. GADBannerView を呼び出すためのファンクションを ViewController に追加します。ファンクション内の “your_id” の部分は AdMob で作成した広告ユニットの ID をセットしておきます。
  3. view.didLoad() 内で GADBannerView インスタンスを作成し、addSubview すれば広告が表示されます。
  4. img_swift-admob-implementation_8

    上記の ViewController のソースコードは以下の通りとなります。

    [code]
    class MainViewController: GADBannerViewDelegate {

    override func viewDidLoad() {
    super.viewDidLoad()
         
    let bannerView:GADBannerView = getAdBannerView()
    self.view.addSubview(bannerView)
    }

    private func getAdBannerView() -> GADBannerView {
    var bannerView: GADBannerView = GADBannerView()
    bannerView = GADBannerView(adSize:kGADAdSizeBanner)
    bannerView.frame.origin = CGPointMake(0, self.view.frame.size.height – bannerView.frame.height)
    bannerView.frame.size = CGSizeMake(self.view.frame.width, bannerView.frame.height)
    bannerView.adUnitID = “your_id” // Enter Ad’s ID here
    bannerView.delegate = self
    bannerView.rootViewController = self

    var request:GADRequest = GADRequest()
    request.testDevices = [GAD_SIMULATOR_ID]
    bannerView.loadRequest(request)

    return bannerView
    }
    }
    [/code]

    また、先ほど GADBannerViewDelegate を ViewController クラスに定義したので、広告表示完了やエラー等の取得は、以下のファンクションで行えます。

    [code]
    func adViewDidReceiveAd(adView: GADBannerView){
    println(“adViewDidReceiveAd:\(adView)”)
    }
    func adView(adView: GADBannerView, didFailToReceiveAdWithError error: GADRequestError){
    println(“error:\(error)”)
    }
    func adViewWillPresentScreen(adView: GADBannerView){
    println(“adViewWillPresentScreen”)
    }
    func adViewWillDismissScreen(adView: GADBannerView){
    println(“adViewWillDismissScreen”)
    }
    func adViewDidDismissScreen(adView: GADBannerView){
    println(“adViewDidDismissScreen”)
    }
    func adViewWillLeaveApplication(adView: GADBannerView){
    println(“adViewWillLeaveApplication”)
    }
    [/code]

    まとめ

    AdMob が Swift に対応してくれる日はいつになるのでしょうか。それまでは Bridge-Header を使用し実装を行う必要がありますね。
    一度やってしまえば大したことはやってないので、ルーチン化して覚えておきましょう。

    この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

Please share it!
  • URLをコピーしました!
  • URLをコピーしました!
INDEX