Swift で開発中のプロジェクトへ AdMob を実装する方法を説明します。
一部 Apple公式、Google 公式で説明されている内容を含みますが、この説明を見るだけで AdMob が実装・表示できます。
iOSの無料アプリ開発時にお役立て下さい。
iOS アプリで AdMob 広告を実装・表示する
SDK のダウンロード
Google Developers から iOS版の Google Mobile Ads SDK をダウンロードし、Add-ons 以外のファイルを全て プロジェクトにドラッグし追加します。
フレームワークのインポート
Project -> TARGET -> General -> Linked Frameworks and Libraries より「+」をクリックし、以下のフレームワークをプロジェクトにインポートします。
- AdSupport
- AudioToolbox
- AVFoundation
- CoreGraphics
- CoreTelephony
- EventKit
- EventKitUI
- MessageUI
- StoreKit
- SystemConfiguration
Bridge-Header.h の作成
AdMob の SDK は Objective-C で記述されています。Swift から Objective-C を実行するために Bridging-Header ファイルを作成します。
Xcode ウインドウの一番左下の「+」より New File… を選択します。
iOS -> Source -> Header File を選択し「Next」をクリック。
ファイル名を AdMob-Bridging-Header.h とし、プロジェクトフォルダの任意の場所(ここではプロジェクトルート直下)に追加します。
作成された AdMob-Bridging-Header.h ファイルの #define 行の後に以下の2行を追加します。
[code]
#import “GADBannerView.h”
#import “GADInterstitial.h”
[/code]
ヘッダーファイルへパスを追加
AdMob-Bridging-Header.h へのパスを追加します。
Project -> TARGET -> Build Settings -> Swift Compiler – Code Generation -> Objective-C Bridging Header の右側の欄へ、先ほど追加したヘッダーファイルまでのパスを定義します。(プロジェクトファイル内までのパスは $(SRCROOT)/$(PROJECT)/ となります)
プロジェクトファイル直下に 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 を追加します。
ViewController から AdMob を表示
- AdMob を表示させたい ViewController のクラスに GADBannerViewDelegate を設定します。
- GADBannerView を呼び出すためのファンクションを ViewController に追加します。ファンクション内の “your_id” の部分は AdMob で作成した広告ユニットの ID をセットしておきます。
- view.didLoad() 内で GADBannerView インスタンスを作成し、addSubview すれば広告が表示されます。
上記の 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で共有していただければ幸いです。