質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

解決済

1回答

2754閲覧

nendのインタースティシャル広告実装について

rookie

総合スコア26

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

0グッド

0クリップ

投稿2016/07/08 02:06

現在アプリ開発をしているものです。

今回nendさんのインタースティシャル広告を実装しようと思い、
調べていたのですがどうしてもエラーが出て詰まってしまいました。

下記にコードを掲載していますので、
おかしな点がありましたらご指導お願いします。

①ヘッダーファイルをダウンロードして、プロジェクト内に入れる
②imageIO.framework,Security.framework,AdSupport.frameworkを追加
③NendAd-Bridging-Header.hを入れる
④下記コードを記入

swift

1<AppDelegate.swift> 2import UIKit 3 4@UIApplicationMain 5class AppDelegate: UIResponder, UIApplicationDelegate{ 6 var window: UIWindow? 7 8 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 9 10 //表示テスト用のIdを入れてます 11 NADInterstitial.sharedInstance().loadAdWithApiKey("308c2499c75c4a192f03c02b2fcebd16dcb45cc9", spotId:"213208") 12 13 return true 14 }

swift

1<ViewController.swift> 2import UIKit 3 4class ViewController: UIViewController, NADViewDelegate { 5 6 override fun viewDidLoad(){ 7 super.viewDidLoad() 8 9 testAd() 10 11 } 12 13 func testAd() { 14 15 let showResult = NADInterstitial.sharedInstance().showAdFromViewController(UIApplication.sharedApplication().keyWindow?.rootViewController) 16 17 switch(showResult){ 18 case .AD_SHOW_SUCCESS: 19 print("広告の表示に成功しました。") 20 break 21 case .AD_SHOW_ALREADY: 22 print("既に広告が表示されています。") 23 break 24 case .AD_FREQUENCY_NOT_REACHABLE: 25 print("広告のフリークエンシーカウントに達していません。") 26 break 27 case .AD_LOAD_INCOMPLETE: 28 print("抽選リクエストが実行されていない、もしくは実行中です。") 29 break 30 case .AD_REQUEST_INCOMPLETE: 31 print("抽選リクエストに失敗しています。") 32 break 33 case .AD_DOWNLOAD_INCOMPLETE: 34 print("広告のダウンロードが完了していません。") 35 break 36 case .AD_CANNOT_DISPLAY: 37 print("指定されたViewControllerに広告が表示できませんでした。") 38 break 39 } 40 }

これを実行してもエラーが起きてしまいます。

どの部分が悪いのか教えて下さい。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TakeOne

2016/07/08 14:09

何をした時にどこでどのようなエラーが出たのですか? エラーの内容を具体的に説明してください。
guest

回答1

0

ベストアンサー

本当は具体的なエラー内容の説明を補足してもらってから回答したいところですが、とりあえずまずそうに思えるのは、viewDidLoadのタイミングでインタースティシャル広告を表示しようとしている点です。
viewDidLoadのタイミングは、まだviewを表示する準備ができてない状態ですから、このタイミングではおそらく表示できないんじゃないかなと思います。

https://github.com/fan-ADN/nendSDK-iOS/wiki/インタースティシャル広告実装手順#swift
のサンプルコードのように、一旦画面を表示している状態で何かボタンをタップしたタイミングで表示してみてください。最初から広告を表示したいならviewDidLoadじゃなくてviewDidAppearのタイミングで表示してもよいと思います。

投稿2016/07/08 15:13

TakeOne

総合スコア6299

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rookie

2016/07/11 08:29

ご返答ありがとうございます! ボタンをタップしたタイミングでの表示は成功しました! ただ最初から広告を表示する際に、 viewDidAppearにtestAd()メソッドを入れても 「抽選リクエストが実行されていない、もしくは実行中です。」 とログが出てきて表示されません。 最初から表示させるためにはどうしたら良いでしょうか?
TakeOne

2016/07/11 09:19

あぁなるほど。アプリ起動直後のviewDidAppearのタイミングだと、まだ広告のロードができてなくて早すぎるんですね。 どうしてもアプリ起動直後にインタースティシャル広告を表示したいなら、そのエラーが出た時に0.5秒くらいタイマーをかけてtestAd()を再呼び出ししてリトライしてみるしかないと思います。 でも、アプリ起動直後にいきなりインタースティシャル広告を表示するのは、ユーザーの印象を悪くするのでやめた方がいいと思いますよ。ちなみに、Nendに規約があったかどうかわかりませんが、Admobならアプリの読み込み時や終了時にインタースティシャル広告を表示するのは禁止であることが明記されています。 (参考) https://support.google.com/admob/answer/6201362?hl=ja AppStoreの審査項目でも「広告が主のアプリはリジェクト」という項目があるので、アプリを起動していきなり広告が表示されるアプリは、広告が主のアプリと認識されてリジェクトされる可能性があります。 インタースティシャル広告は、やっぱりユーザーの作業が一段落して一息つくタイミングで表示すべきものだと思います。 (参考) https://support.google.com/admob/answer/6201350?hl=ja
rookie

2016/07/12 00:02

色々教えて頂きありがとうございます! 参考サイトなど確認して広告表示方法を検討したいと思います。 まだ未熟者でまた質問投稿することがあると思いますが、 よろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問