iOSアプリでの全画面広告

iOSのSDKには、iAd BannerViewという便利な広告表示用オブジェクト(オブジェクト?名前としては、クラスかWidgetの方が正しいのでは?)があるけれど、バナーなので、フルスクリーンに表示できない。

フルスクリーンに表示したければ、Google Mobile Ads(GMA)を使用しよう。
GMA 6までは、Objective-Cのソースが配布されていたようだが、現在は、GoogleMobileAds.frameworkとして配布されている。

これを使用して、iPhone 6 plusに全画面広告を出してみた。

●まず、https://developers.google.com/mobile-ads-sdk/docs/admob/advanced?hl=ja#ios をよく読む。「インタースティシャル」のところ。
●左のダウンロードから、iOS用のframeworkをダウンロードする。
●自分のXcodeのプロジェクトのTARGETのGeneralにあるLinked Frameworks and Librariesに、そのfremeworkを登録する。このとき、Embedded Binariesに入れてはいけない。codesignでエラーになった。想像だが、Enbeddedにしようとしているので、frameworkに対して、Xcodeで使用しているプロファイルでサイン使用しているみたい。
●ソースコードを書く。インタースティシャルのiOSのところにあるサンプルは、Objective-C用。Swiftでは以下のようにする。

import UIKit
import GoogleMobileAds

class ViewController: UIViewController , GADInterstitialDelegate {

let MY_INTERSTITIAL_UNIT_ID :String = "XXXXXXXXXXXXXX"
var interstitial_ : GADInterstitial?

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

interstitial_ = GADInterstitial()
interstitial_!.adUnitID = MY_INTERSTITIAL_UNIT_ID
interstitial_!.loadRequest(GADRequest())
interstitial_?.delegate = self
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

func interstitialDidReceiveAd(ad: GADInterstitial!) {
println("interstitialDidReceiveAd")
interstitial_?.presentFromRootViewController(self)
}

func interstitial(ad: GADInterstitial!, didFailToReceiveAdWithError error: GADRequestError!) {
println("error = \(error.localizedFailureReason)")
}
}

MY_INTERSTITIAL_UNIT_IDには、https://apps.admob.com/ で登録するiOSアプリの広告ユニットIDを設定しよう。

とりあえず、これだけ書いておけば、iOS Simulatorでは、Googleの広告が、実機ではiOSアプリの広告が表示される。
さて、ここで疑問点。

・admodには、いつの段階で作成しようとしているiOSアプリを登録できるのだろう?審査開始前でも取れるのかな?
・実機の広告は、すくなくとも数回試しただけでは、同じゲームの広告ばかりなんだけど、いつ変わるんだろう?

iOSアプリをリリースするまでに、調べておこう。