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

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

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

AdMobは、事前に指定した条件に従ってアプリに広告を表示するGoogleのサービス。開発者の向けのサービスで、広告を掲載することにより、収益を得ることが可能です。その他、見た目や雰囲気などアプリに合う広告に変更したり、広告表示の場所を指定することもできます。

iOS

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

Xcode

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

Q&A

0回答

240閲覧

自分のiOS 広告を表示させたい(テストは表示可能)

Fuji-1996

総合スコア4

AdMob

AdMobは、事前に指定した条件に従ってアプリに広告を表示するGoogleのサービス。開発者の向けのサービスで、広告を掲載することにより、収益を得ることが可能です。その他、見た目や雰囲気などアプリに合う広告に変更したり、広告表示の場所を指定することもできます。

iOS

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

Xcode

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

0グッド

0クリップ

投稿2020/11/03 09:29

前提・実現したいこと

前提
Xcode11, AdMobを使っています。
アプリは完成しました。
テスト広告も表示することができました。
Info.plist > GADApplicationIdentifierには、アプリIDを入れています。
また、広告ユニットIDを申請してから1週間以上経っています。

実現したいこと
自分の広告ユニットIDを使って広告を表示させたい。

発生している問題

テスト専用広告ユニットID
ca-app-pub-3940256099942544/4411468910
を使用した場合、テスト広告を表示することができました。

しかし、adUnitIDの部分をテスト広告用から自分用に変更した場合、
表示されませんでした。

試したこと

自分用adUnitIDで一度実装した場合は、表示されませんでした。
特にエラーも出ていません。

ダメもとで、申請をして通りましたが、やはり表示されません。

伺いたいこと

テスト専用広告ユニットIDが表示された後に、
変更した部分はどこかをご教示いただけると幸いです。

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

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

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

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

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

ichi888

2020/11/03 15:42

広告が表示されない原因は色々考えられます。 特にエラーが出ていないということですが、didFailToReceiveAdWithErrorが呼ばれていないということでしょうか? adViewDidReceiveAdは呼ばれてますでしょうか?
Fuji-1996

2020/11/04 12:13

私のコードの書き方に問題があるかもしれませんが、 adViewDidReceiveAdWithErrorは出力されていません。 こちらのページを参考にしています。 https://developers.google.com/admob/ios/interstitial コードでは、 func createAndLoadInterstitial() -> GADInterstitial { interstitial = GADInterstitial(adUnitID: "ca-app-pub-2194536474023463/5731991643") interstitial.delegate = self interstitial.load(GADRequest()) return interstitial } func interstitialDidDismissScreen(_ ad: GADInterstitial) { interstitial = createAndLoadInterstitial() } @IBAction func button(_ sender: Any) { if interstitial.isReady{ interstitial.present(fromRootViewController: self) }else{ print("Ad wasn't ready.") } } と書いています。 自分の広告にすると"Ad wasn't ready."が表示されます。 アプリを開いてから1分以上経ってからボタンを押しても"Ad wasn't ready."が表示されます。 ichi888さんが仰っているのは、こちらの内容でしょうか? /// Tells the delegate an ad request failed. func interstitial(_ ad: GADInterstitial, didFailToReceiveAdWithError error: GADRequestError) { print("interstitial:didFailToReceiveAdWithError: \(error.localizedDescription)") } この関数は、先程のページにも載っていたのですが、 @IBAcition 関数の中に書いた場合と、外に書いた場合を試しましたが、 "Ad wasn't ready."のみが出力されます。 関数を書く場所が悪いのでしょうか? ご回答をよろしくお願いいたします。
ichi888

2020/11/04 13:52 編集

そもそもですが、広告を読み込んでいるか確認していただけますでしょうか? https://developers.google.com/admob/ios/interstitial の抜粋になりますが、viewDidLoadでcreateAndLoadInterstitialを実行してますでしょうか? ``` override func viewDidLoad() { super.viewDidLoad() interstitial = createAndLoadInterstitial() } ``` func createAndLoadInterstitiall() -> GADInterstitialメソッド内にある interstitial.load(GADRequest())を呼び出してからでないと、いつまでたってもinterstitial.isReady == true にはなりません。 もし上記問題なければ、他の原因を探るためにGADInterstitialDelegateのメソッドを実装して、デバッグしていくことになりますが、func interstitial(_ ad: GADInterstitial, didFailToReceiveAdWithError error: GADRequestError)が呼ばれないということは、delegateの設定もうまくいっていない可能性があるので、 その時はまたご連絡ください(できればViewControllerのコードを全部添付していただけるとより正確な回答ができると思います。)
Fuji-1996

2020/11/05 07:37

interstitial = createAndLoadInterstitial()は、 override func viewDidLoad() {}メソッド内に記載されています。 画面が表示された(viewDidLoadのメソッドが実行された)時に、createAndLoadInterstitial()関数が呼び出されて、自分の広告であるinterstitialが返るので、interstitial.isReady == trueになってくれているはずなのに、何故かfalseになってしまっているという状況です。 func interstitial(_ ad: GADInterstitial, didFailToReceiveAdWithError error: GADRequestError)は、@IBActionの中に書いているのですが、場所は正しいのでしょうか? ご回答をよろしくお願いいたします。
Fuji-1996

2020/11/05 07:52

ViewController.swiftの全文が1万を超えてしまっているので、 こちら(https://developers.google.com/admob/ios/interstitial)を参考に、 抜粋したものを記載します。 ``` import UIKit import AVFoundation import MessageUI import CoreData import GoogleMobileAds class ViewController: UIViewController, UIScrollViewDelegate, AVAudioRecorderDelegate, AVAudioPlayerDelegate, MFMailComposeViewControllerDelegate, GADInterstitialDelegate { override func viewDidLoad() { super.viewDidLoad() interstitial = createAndLoadInterstitial() interstitial.delegate = self } func createAndLoadInterstitial() -> GADInterstitial { interstitial = GADInterstitial(adUnitID: "ca-app-pub-2194536474023463/5731991643") interstitial.delegate = self interstitial.load(GADRequest()) return interstitial } func interstitialDidDismissScreen(_ ad: GADInterstitial) { interstitial = createAndLoadInterstitial() } @IBAction func button(_ sender: Any) { if interstitial.isReady{ interstitial.present(fromRootViewController: self) }else{ print("Ad wasn't ready.") } /// Tells the delegate an ad request succeeded. func interstitialDidReceiveAd(_ ad: GADInterstitial) { print("interstitialDidReceiveAd") } /// Tells the delegate an ad request failed. func interstitial(_ ad: GADInterstitial, didFailToReceiveAdWithError error: GADRequestError) { print("interstitial:didFailToReceiveAdWithError: \(error.localizedDescription)") } /// Tells the delegate that an interstitial will be presented. func interstitialWillPresentScreen(_ ad: GADInterstitial) { print("interstitialWillPresentScreen") } /// Tells the delegate the interstitial is to be animated off the screen. func interstitialWillDismissScreen(_ ad: GADInterstitial) { print("interstitialWillDismissScreen") } /// Tells the delegate that a user click will open another app /// (such as the App Store), backgrounding the current app. func interstitialWillLeaveApplication(_ ad: GADInterstitial) { print("interstitialWillLeaveApplication") } } } ```
ichi888

2020/11/05 12:05

@IBAction func button(_ sender: Any)の外に出してください。 添付されたコードでビルドできましたか? Σ(□゜/)/ 以下のように修正します。 ``` @IBAction func button(_ sender: Any) { if interstitial.isReady{ interstitial.present(fromRootViewController: self) }else{ print("Ad wasn't ready.") } } /// Tells the delegate an ad request succeeded. func interstitialDidReceiveAd(_ ad: GADInterstitial) { print("interstitialDidReceiveAd") } /// Tells the delegate an ad request failed. func interstitial(_ ad: GADInterstitial, didFailToReceiveAdWithError error: GADRequestError) { print("interstitial:didFailToReceiveAdWithError: \(error.localizedDescription)") } // 省略 ``` delegateがしっかり実装されていれば、広告を読み込んで数秒後に以下のどちらかが呼ばれるはずです。 成功した時:func interstitialDidReceiveAd(_ ad: GADInterstitial) 失敗した時:func interstitial(_ ad: GADInterstitial, didFailToReceiveAdWithError error: GADRequestError) 厳密には、func interstitialDidReceiveAd(_ ad: GADInterstitial) が呼ばれたあと、 interstitial.isReady == trueになります。 func interstitial(_ ad: GADInterstitial, didFailToReceiveAdWithError error: GADRequestError) が呼ばれている場合は、Admob管理画面上の設定など、コード以外にも原因がある可能性があるので、error内容を出力してデバッグしてください。
Fuji-1996

2020/11/06 12:53

ichi888さん、丁寧なご対応をありがとうございます。 添付したコードでもビルドできました。 ///Tells the delegate an ad request failed. "interstitial:didFailToReceiveAdWithError: \(error.localizedDescription)" の返り値として、 interstitial:didFailToReceiveAdWithError: Account not approved yet. の一文が入っていました。 GoogleAdMobから「お客様はすでにアカウントをお持ちです」という謎のメールが何度か送られていたのですが、無視していました。 どうやら、これが原因でAccount not approved yet.の状態になってしまっているんだと考えています。 先程、片方のデータを消したので一度待ってみようと思います。 ichi888さんには、ご丁寧な対応をしていただいたにもかかわらず、変なところのミスで申し訳なさいっぱいです。m(_ _)m 広告が表示された場合と、一週間を過ぎても変化が無い場合には、こちらのページにて報告いたします。
ichi888

2020/11/06 13:19

デバッグできてよかったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問