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

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

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

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Swift 2

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

Q&A

3回答

1938閲覧

インタースティシャル広告をロード完了次第表示する方法

lyzmfeqpxs54

総合スコア237

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Swift 2

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

0グッド

0クリップ

投稿2016/11/14 13:06

swiftに関する質問です。
viewDidLoad()内に下記コードを書いています。
ロード時間を考慮し、画面が表示されてから3秒後に広告を表示するようにしております。現状でも正しく表示されているのですが、これを広告のロードが完了次第表示をするにはどのようにすればよいのでしょうか。勉強が足らず申し訳ございません。
ご教示のほどよろしくお願い申し上げます。

swift

1override func viewDidLoad() { 2 super.viewDidLoad() 3let interstitial = GADInterstitial(adUnitID: AdMobID) 4let request = GADRequest() 5request.testDevices = [AdMobID] 6interstitial.loadRequest(request) 7 8 9let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(3 * Double(NSEC_PER_SEC))) 10 11 dispatch_after(delayTime, dispatch_get_main_queue()) 12 { 13 self.showAdMob(interstitial) 14 } 15} 16 17func showAdMob(interstitial: GADInterstitial) 18 { 19 if (interstitial.isReady) 20 { 21 interstitial.presentFromRootViewController(self) 22 23 } 24 }

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

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

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

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

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

guest

回答3

0

画面が表示されてから3秒後に広告を表示する

確かにsample codeも適当にこうなっていたような感じでしたね
それでは問題もあるようです
http://qiita.com/Doggy/items/c320546b7771e5781936

/// Called when an interstitial ad request succeeded. func interstitialDidReceiveAd(ad: GADInterstitial!) { print("interstitialDidReceiveAd") }

参考:Firebaseでも使っているような...
https://firebase.google.com/docs/admob/ios/ad-events?hl=ja
http://cocoadocs.org/docsets/Google-Mobile-Ads-SDK/6.11.1/Protocols/GADInterstitialDelegate.html#//api/name/interstitialDidReceiveAd:

投稿2016/11/15 07:45

aja

総合スコア3733

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

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

0

たぶんこれでいけると思います

プロトコル批准(継承に続けて記述します)

swift

1class ViewController: UIViewController,GADInterstitialDelegate{

デリゲート

swift

1override func viewDidLoad() { 2 super.viewDidLoad() 3 let interstitial = GADInterstitial(adUnitID: AdMobID) 4 interstitial.delegate = self // デリゲート 5 let request = GADRequest() 6 request.testDevices = [AdMobID] 7 interstitial.loadRequest(request)

デリゲート実装

swift

1func interstitialDidReceiveAd(interstitial: GADInterstitial){ 2 interstitial.presentFromRootViewController(self) 3} 4

投稿2016/11/15 04:26

fromageblanc

総合スコア2724

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

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

lyzmfeqpxs54

2016/11/15 13:09

ご回答ありがとうございます。 ご教示いただいたコードですが、広告が表示されなくなってしまいます。 下記のようにコード内にprintを書いても表示されない状態です。 お手数をおかけして申し訳ございません。 func interstitialDidReceiveAd(interstitial: GADInterstitial){   pirnt("ロード完了") interstitial.presentFromRootViewController(self) }
guest

0

ロードが完了した時コールされるデリゲートメソッドが用意されてると思いますよ

投稿2016/11/14 17:22

fromageblanc

総合スコア2724

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

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

lyzmfeqpxs54

2016/11/15 00:40

早速のご回答ありがとうございます。 大変申し訳ございません。interstitialDidReceiveAdを使うのではないかということはわかったのですが、具体的なコードの記述が分からず……。 勉強不足で申し訳ありませんが、具体的なコードをご教示いただけないでしょうか。 よろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問