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って書けばいいんですけど、PROJECTとTARGETの両方にこれを記入してください。どちらか片方だけだとエラーになります。
パスが通ったら、あとはフレームワークを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つ教えてもらって、これじゃないほうが王道みたいな話だったんですが、そっちはエラーになったので、今回のものを採用しました。
しかし親切に教えてくれたネンドさんには感謝しかありません。ネンドさん、ありがとうございます。
関連記事