【Swift】nend広告 iPhoneアプリに実装する方法(メモ)

nendSDKを追加する方法はここを参考にすればできる(はず)
[nendSDK-iOSを手動で追加](https://github.com/fan-ADN/nendSDK-iOS/wiki/SDK%E3%82%92%E6%89%8B%E5%8B%95%E3%81%A7%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B)

##バナー広告を画面下に追加(320×50)

###①
```
NADViewDelegate
private var nadView: NADView!
```
の追加 ↓こんな感じ

```
import UIKit
class : YourAppViewController: UIViewController, NADViewDelegate {

 private var nadView: NADView!

 override func viewDidLoad() {
 super.viewDidLoad()
 }
　　〜省略〜
}
```

###②

```
// 広告枠が端末によって倍率が変わるので調整します
var magnification = self.view.frame.size.width / 320
magnification = 50 * magnification
// 広告枠作成
nadView = NADView(frame: CGRectMake(0, self.view.frame.size.height - magnification , self.view.frame.size.width ,magnification), isAdjustAdSize: true)
// 広告枠のapikey/spotidを設定(必須)
nadView.setNendID("管理画面より発行された apiKey",spotID: "管理画面より発行された spotID")
// nendSDKログ出力の設定(任意)
nadView.isOutputLog = false
// delegateを受けるオブジェクトを指定(必須)
nadView.delegate = self
// 読み込み開始(必須)
nadView.load()
// 通知有無にかかわらずViewに乗せる場合
self.view.addSubview(nadView) 
```
の追加　↓こんな感じ

```
import UIKit
class : YourAppViewController: UIViewController, NADViewDelegate {

 private var nadView: NADView!

 override func viewDidLoad() {
 super.viewDidLoad()
 var magnification = self.view.frame.size.width / 320
 magnification = 50 * magnification
 nadView = NADView(frame: CGRectMake(0, self.view.frame.size.height - magnification , self.view.frame.size.width ,magnification), isAdjustAdSize: true)
 nadView.setNendID("管理画面より発行された apiKey",spotID: "管理画面より発行された spotID")
 nadView.isOutputLog = false
 nadView.delegate = self
 nadView.load()
 self.view.addSubview(nadView)
 }
}
```

#インタースティシャル広告の追加

###①
AppDelegateに

```
NADInterstitial.sharedInstance().loadAdWithApiKey("管理画面より発行された apiKey",spotID: "管理画面より発行された spotID")
```
を追加　↓こんな感じ

```
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
 }
　　〜省略〜
}

```

###②

関数を追加して、呼び出したい場所から関数を呼び出す

```
//adShow関数
func adShow() {
        
        let showResult = NADInterstitial.sharedInstance().showAdFromViewController(self)
        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
        }
}

//呼び出したい場所に追加
adShow()

```

※viewDidLoad（）内にadShow()関数を書いてしまうとエラーが起こってしまう(実際に表示されなかった)ので、何かのボタンが呼ばれた時や、NSTimerを利用して画面が表示されてから何秒後かに広告を表示する必要がある。今回はNSTimerを利用した方法

実際はこんな感じで書いた

```
var timer = NSTimer()

override func viewDidLoad() {
        super.viewDidLoad()
        adTimer()
}

func adTimer(){
        //5秒後にadShow()関数が呼ばれる
        self.timer = NSTimer.scheduledTimerWithTimeInterval(5, target: self, selector: #selector(adShow), userInfo: nil, repeats: false)
}

func adShow() {
        
        let showResult = NADInterstitial.sharedInstance().showAdFromViewController(self)
        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
        }
}

```

誰かの参考になればいいと思います。
[NendSDK iOS 設定マニュアル](http://nend.net/doc/nendSDKiOS_manual.pdf)
ここに全部載ってますが、この通りするとエラーが起こるかも・・・