mzgkworks

iOSを中心にプログラミング関係について書く

【Swift】UITabBarの上にGoogle AdMobのバナーを追加する方法

iPhoneのタブバーの上にAdMobを表示させる方法。
StoryBoardのAutoLayoutで領域を設定する際は注意が必要。

  • Xcode 6.3.2
  • Swift 1.2
  • cocoaPods 0.37.2
  • GoogleMobileAds 7.3.1

cocoaPodsでAdMobを追加する

  1. Podfileを用意する
platform :ios, '8.0'
pod 'Google-Mobile-Ads-SDK'
  1. Terminalから $pod install する

GoogleMobileAdsがFrameworkになったので、Bridging-Headerとかの用意は不要

コードでバナー領域を設定

バナーを表示するViewをコードで定義する方法。

import UIKit
import GoogleMobileAds  // ←追加

class FirstViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        // バナー表示
        var bannerView: GADBannerView = GADBannerView(adSize: kGADAdSizeSmartBannerPortrait)
        // bannerViewの開始位置=(x=0, y=親ビューの高さ(画面高さ) - タブバーの高さ49 - bannerViewの高さ50)
        bannerView.frame.origin = CGPointMake(0, self.view.frame.size.height - 49 - 50) // タブバーの上に表示
        bannerView.adUnitID = "ca-app-pub-3940256099942544/2934735716"  // テスト用ID
        bannerView.rootViewController = self
        self.view.addSubview(bannerView)
        bannerView.loadRequest(GADRequest())
    }
}

StoryBoardでAutoLayoutを使ってバナー領域を設定

  • StoryBoardでタブバーの上に右のライブラリーペインからUIViewをドラッグ&ドロップ
  • 追加したUIViewに以下の制約を追加
  • pin定義
    • 左右 = 0
    • 下 = 49(▼でViewを選択し画面下辺からの制約をつけること。49→タブバーの高さ)
    • 他画面からの戻り時にバナーがタブバーの裏にまわってしまうため
    • Constrain to margins = OFF
    • Height = 50
  • Outlet接続
import UIKit
import GoogleMobileAds  // ←追加

class FirstViewController: UIViewController {

    @IBOutlet weak var bannerView: GADBannerView! // ←Outlet接続
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        // bannerViewはStoryBoardでAutoLayout定義ずみ
        // Pin:左右=0, 下=Viewを選択し画面下辺から49、Constrain to margins=OFF, Height=50
        // ★下はViewを選択しないと、他画面から戻った際にタブバーの裏にまわってしまう★
        bannerView.adSize = kGADAdSizeSmartBannerPortrait
        bannerView.adUnitID = "ca-app-pub-3940256099942544/2934735716"  // テスト用ID
        bannerView.rootViewController = self
        bannerView.loadRequest(GADRequest())
    }
}