環境
主なファイル構成
- GameViewController
- GameScene.swift
Admobの登録
SDKのインストール
- ここの説明に従いCocoaPodsからSDKをインストールした
- Podfileは以下のようにした
- 適切なバージョンがわからなかったので、バージョン指定はなしになっている (参考)
source 'http://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!
pod 'Google-Mobile-Ads-SDK'
target 'プロジェクト名' do
end
ビルドするとBitcodeのエラーが出た
GoogleMobileAds.framework/GoogleMobileAds(GADDefaultInAppPurchaseFlow.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture arm64
- Bitcodeを無効にして対応(参考)
- TARGETS > プロジェクト名 > Build Setting > Build Options > Enable Bitcode を「No」に変更した (最初、表示をBasicにしていて検索しても出てこなかった)
(Bitcodeって?)
- よくわかっていなかったので調べてみた
- 「Bitcodeを含めてビルドアップロードすると、将来CPUアーキテクチャが変わっても自動で対応してくれる」ってことだろうか
- 参考
- TARGETS > プロジェクト名 > General > Linked Frameworks and Libraries から必要なフレームワークを追加
- AdSupport
- AudioToolbox
- AVFoundation
- CoreGraphics
- CoreMedia
- CoreTelephony
- EventKit
- EventKitUI
- MessageUI
- StoreKit
- SystemConfiguration
バナー広告の追加
- ここにはStoryboardを利用したやり方しかのっていなかったので、こちらを参考にさせてもらい作業をすすめる
- GameViewController.swiftに参考記事のコードを記述したら表示された (以下を
viewDidLoad
から呼び出す)
func showAd() {
let banner:GADBannerView = GADBannerView(adSize: kGADAdSizeSmartBannerPortrait)
banner.adUnitID = "ca-app-pub-xxxxxxxxxxxxxxxxxxxxxxxx"
banner.delegate = self
banner.rootViewController = self
let gadRequest:GADRequest = GADRequest()
banner.loadRequest(gadRequest)
self.view.addSubview(banner)
}
- GameScene.swift上でバナーの表示非表示をコントロールしたかったので、
var banner: GADBannerView!
をグローバル変数とし、banner.hidden = true/false
でコントロールした
インタースティシャル広告の追加
var interstitialAD: GADInterstitial!
class GameViewController: UIViewController, GADBannerViewDelegate, GADInterstitialDelegate {
override func viewDidLoad() {
super.viewDidLoad()
interstitialAD = createAndLoadInterstitial()
}
func createAndLoadInterstitial()->GADInterstitial {
let interstitial = GADInterstitial(adUnitID: "ca-app-pub-xxxxxxxxxxxxxxxxxxxxxx")
interstitial?.delegate = self
let gadRequest:GADRequest = GADRequest()
interstitial?.loadRequest(gadRequest)
return interstitial!
}
func interstitialDidDismissScreen(ad: GADInterstitial!) {
interstitialAD = createAndLoadInterstitial()
}
}
- 広告の呼び出しは、こちらを参考にさせていただき、以下のように行っている
func showInterstitial() {
let currentViewController: UIViewController? = UIApplication.sharedApplication().keyWindow?.rootViewController!
interstitialAD?.presentFromRootViewController(currentViewController)
}