ホーリーのプログラミング日記

ホーリーのプログラミング日記

エキセントリック・スーパーアプリクリエイター / アプリ総DL数 約180万 / 全然分からない 俺は雰囲気でアプリを作ってる / iOS : apple.co/3m3HxSm / Android : bit.ly/3ma0liZ

SpriteKitにnendのインタースティシャル広告を実装する方法(Swift)

 

最近はSpriteKitを使ってポンコツゲームを作ることが多いんですが、そのゲームにnend(ネンド)のインタースティシャル広告を実装するのに手こずりました。なのでその実装方法を、ちょっと書いてみようと思います。

 

SDKを追加する

まずはnendからSDKをダウンロードして、それを追加しましょう。マニュアルを見ながらやれば、だいたい大丈夫だと思います。

SDKを手動で追加する · fan-ADN/nendSDK-iOS Wiki · GitHub

 

注意するべきポイントは、NendAd-Bridging-Header.h へのパスを設定するところですね。

Build SettingsのObjective-C Bridging Headerってところに、$(SRCROOT)/$(PRODUCT_NAME)/NendAd-Bridging-Header.hって書けばいいんですけど、PROJECTTARGETの両方にこれを記入してください。どちらか片方だけだとエラーになります。

 

f:id:gevvoihorry:20160711054953j:plain

 

パスが通ったら、あとはフレームワークを3つほど追加すればOKです。この辺はマニュアルを見れば問題ないでしょう。ちなみに、僕は上記のパスが片方にしか通っていなかったため、丸一日を費やしましたw

 

インタースティシャル広告実装手順 

まずはAppDelegate.swiftに以下のコードを書きましょう。これはマニュアルに載ってるそれですね。

インタースティシャル広告実装手順 · fan-ADN/nendSDK-iOS Wiki · GitHub

 

import UIKit @UIApplicationMain

class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

 

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

        // Override point for customization after application launch.

 

        NADInterstitial.sharedInstance().loadAdWithApiKey("管理画面より発行された apiKey", spotId: "管理画面より発行されたspotID")

 

        return true

    }

 

   //〜省略〜

 

}

 

 

実際に書き込むのは赤字の部分だけ。なので一行ですね。これを書きましょう。

んで、管理画面より発行された apiKeyと管理画面より発行されたspotIDを入力します。これはネンドの管理画面を見て、自分のそれを入力しましょう。

 

次に画面に表示するわけなんですが、マニュアルのそれをコピペしても、SpriteKitだと表示されません。結論から言うと、こう書けば大丈夫です。

 

func showButtonClicked() {

    

    let showResult = NADInterstitial.sharedInstance().showAdFromViewController(UIApplication.sharedApplication().keyWindow?.rootViewController)

    

    switch(showResult){

    case .AD_SHOW_SUCCESS:

        print("広告の表示に成功しました。")

        break

    case .AD_SHOW_ALREADY:

        print("既に広告が表示されています。")

        break

    case .AD_FREQUENCY_NOT_REACHABLE:

        print("広告のフリークエンシーカウントに達していません。")

        break

    case .AD_LOAD_INCOMPLETE:

        print("抽選リクエストが実行されていない、もしくは実行中です。")

        break

    case .AD_REQUEST_INCOMPLETE:

        print("抽選リクエストに失敗しています。")

        break

    case .AD_DOWNLOAD_INCOMPLETE:

        print("広告のダウンロードが完了していません。")

        break

    case .AD_CANNOT_DISPLAY:

        print("指定されたViewControllerに広告が表示できませんでした。")

        break

    }

}

 

こう書いておいて、任意の場所でself.showButtonClicked()とでも書けば、普通に表示されますよ。

(自分で書いておいてなんだけど、上記のこれは関数なのかな?まあ多分関数なんでしょう。多分w)

 

override func didMoveToView(view: SKView) {

self.backgroundColor = UIColor.redColor()

titleLabel.text = "Title"

titleLabel.fontSize = 70

titleLabel.position = CGPoint(x: 375, y: 900)

self.addChild(titleLabel)

startLabel.text = "START"

startLabel.fontSize = 60

startLabel.position = CGPoint(x: 375, y: 300)

self.addChild(startLabel)

self.showButtonClicked()

}

 

まあほんとに適当なんですが、こんな風に差し込めば、無事に表示されると思います。

 

最後に

最後に書きますが、僕はこのコードはネンドの人から教えてもらいました。分からなかったんで問い合わせて。

なんかそのときに2つ教えてもらって、これじゃないほうが王道みたいな話だったんですが、そっちはエラーになったので、今回のものを採用しました。

しかし親切に教えてくれたネンドさんには感謝しかありません。ネンドさん、ありがとうございます。 

 

関連記事