【swift】複数のアドの設定をAdMobメディエーションで設定(NendとiAdとAdMob)【CoffeeNote開発日記】

友人にたのんでいたアイコンのデザインがなかなかいい感じになってきたのでそろそろ本気でCoffeeNoteリリースできるかなぁと思えてきたところで、最後の最後にやらなければいけない作業がアドの設定。

多分かなりめんどくさいと予測。でも頑張る。

iOSのアドについて一通りいろいろなサービスの比較記事とかを読んで、結論Nend、iAd、AdMobでいくことにした。

3つを切り替えてうまくFillされない確率を減らして、ePCMが大きいアドを表示するようにしたいところ。

とうことで、今回完全合致だったこの記事にお世話になりながら広告を設定してみる。

http://kojisatoapp.blogspot.jp/2014/03/admobnendiadadmob.html

各サービスへの登録

まずすることは各サービスへの登録

  • nend

http://nend.net/

アプリをリリースしていなくても登録はできるらしい。3日以内にアプリの審査の結果が返ってくるらしいけど、リリースしていないものの場合どうなるんだろ。

  • AdMob

https://apps.admob.com/

  • iAd

ここを参考に

http://codewithchris.com/iad-tutorial/

これがめっちゃめんどかった。


ここまでだけで結構時間かかった...。

AdMobエディメーション設定

AdMobのダッシュボードの広告の設定画面からエディメーション設定にいける。

そこでiAdとNendを追加。

とりあえずNendは保留でiAdだけ追加して先に進むことにする。

SDKのダウンロード

各アドのSDKをダウンロード。

http://developers.google.com/mobile-ads-sdk/download#downloadios

  • iAdアダプター

http://developers.google.com/mobile-ads-sdk/docs/admob/mediation-networks?hl=ja

自分のダッシュボードのAdのところの広告枠のところからSDL最新版をダウンロード


ダウンロードできたら、それぞれXcodeのプロジェクトにぶっこんでおく。

frameworkいろいろ設定

Xcodeのプロジェクトのところで下記のframeworkをインポートしておく

(TARGETS→General→Linked Frameworks and Libraries→+)

  • AdSupport.framework
  • AudioToolbox.framework
  • AVFoundation.framework
  • CoreGraphics.framework
  • MessageUI.framework
  • StoreKit.framework
  • SystemConfiguration.framework
  • CoreTelephony.framework
  • iAd.framework
  • Security.framework

PROJECT→BuildSettings→Linking→Other Linker Flagsに「-ObjC」を追加する。DebugとRelease両方。

Ad実装(swift

ここあたりを参考に

http://stackoverflow.com/questions/24760156/xcode-6-swift-ads-googlemobileadssdkios

Bridging-Header.hでGADBannerView.hをimport

#import "GADBannerView.h"

GADBannerDelegateを追加

// 冒頭
class ViewController: UIViewController, GADBannerViewDelegate {

viewDidAppearで広告の生成の部分を作成

override func viewDidAppear(animated: Bool)  {
    super.viewDidAppear(animated)

    var origin = CGPointMake(0.0,
        self.view.frame.size.height -
            CGSizeFromGADAdSize(kGADAdSizeBanner).height); // place at bottom of view

    var size = GADAdSizeFullWidthPortraitWithHeight(50) // set size to 50
    var adB = GADBannerView(adSize: size, origin: origin) // create the banner
    adB.adUnitID = MY_BANNER_UNIT_ID  //"ca-app-pub-XXXXXXXX/XXXXXXX"
    adB.delegate = self // ??
    adB.rootViewController = self // ??
    self.view.addSubview(adB) // ??
    var request = GADRequest() // create request
    request.testDevices = [ GAD_SIMULATOR_ID ]; // set it to "test" request
    adB.loadRequest(request) // actually load it (?)
}

うーん、まぁstack over flowの回答ではviewDidAppearで読んでたけど、画面が読まれるために実行される必要もない気がするので、これはviewDidLoadで自分はいい気がする。僕はそうしました。

やったーーーーーーーーー表示された!!!!嬉しい