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

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

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

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

AdMob

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

SDK

SDK(software development kit)は特定のハードウェアのプラットフォーム、開発環境又はソフトウェアパッケージでソフトウェアをつくるのに必要な開発ツールのセットです。SDKはAPI、IDE又は他の開発ツールとフレームワークを組み合わせたもので構成されていることがあります。

Xcode

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

Swift

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

Q&A

解決済

1回答

1560閲覧

AdMobの広告を表示したい。

Fuji-1996

総合スコア4

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

AdMob

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

SDK

SDK(software development kit)は特定のハードウェアのプラットフォーム、開発環境又はソフトウェアパッケージでソフトウェアをつくるのに必要な開発ツールのセットです。SDKはAPI、IDE又は他の開発ツールとフレームワークを組み合わせたもので構成されていることがあります。

Xcode

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

Swift

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

0グッド

0クリップ

投稿2020/10/25 13:08

前提・実現したいこと

前提
macOS Catalina (version 10.15.7)
iOSアプリの申請は通りました。
画面全体に表示されるinterstitial広告を導入したいと思っています。
ターミナル、GoogleAdMob、Firebaseの連携ということもあり、
広告掲載に必要な条件(全体像?)がよく理解できていません。

実現したいこと
AdMobの広告を表示したい。

発生している問題

問題:広告が出ないこと

エラーメッセージはありません。普通に動きます。
コード以外で問題があると考えています。

該当のソースコード

Swift

1 @objc private func didTapButton(){ 2 if interstitialAd?.isReady == true{ 3 interstitialAd?.present(fromRootViewController: self) 4 }else{ 5 print("Error") 6 } 7 }

コードの一部になりますが、ボタンをクリックすると
Errorの文字がConsoleに表示されます。

試したこと

・Google AdMobの登録
Google AdMob>アプリ>アプリの設定 にて
アプリID:ca-app-pub-XXXXXXXXXXXXXXXX~XXXXXXXXXX

Google AdMob>アプリ>広告ユニット にて
広告ユニット: ca-app-pub-XXXXXXXXXXXXXXXX/XXXXXXXXXX

・Firebaseの登録
FirebaseとGoogle Analyticsはリンクしています。
Firebaseとアプリケーションもリンクしています。

ターミナル関連
https://firebase.google.com/docs/admob/ios/quick-start
を参考にしています。

前提条件となる
1.Firebase SDKのインストール
2.AdMobアカウントの作成と、アプリの登録
3.アプリをFirebaseプロジェクトにリンク
に関しては、ページの方針に沿って進めました。

$ open Podfileで以下を確認できます。

Podfile

1# Uncomment the next line to define a global platform for your project 2# platform :ios, '9.0' 3 # Comment the next line if you don't want to use dynamic frameworks 4 use_frameworks! 5# add the Firebase pod for Google Analytics 6pod 'Firebase/Analytics' 7pod 'Firebase/AdMob' 8pod 'Google-Mobile-Ads-SDK' 9# add pods for any other desired Firebase products 10# https://firebase.google.com/docs/ios/setup#available-pods 11end

Xcode関連
.wcworkspaceでプロジェクトを開いています。

・Info.plistでは、GADApplicationIdentifierにアプリIDを代入しています。
Xcode>Info.plist>GADApplicationIdentifier>String>ca-app-pub-XXXXXXXXXXXXXXXX~XXXXXXXXXX

以下、AppDelegate.swift

swift

1import UIKit 2import Firebase 3import GoogleMobileAds 4 5@UIApplicationMain 6class AppDelegate: UIResponder, UIApplicationDelegate { 7 8 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 9 //以下追加 10 FirebaseApp.configure() 11 GADMobileAds.sharedInstance().start(completionHandler: nil) 12 //以上追加 13 return true 14 } 15}

以下、ボタンを押して広告を表示したいページ

swift

1import UIKit 2import CoreData 3import GoogleMobileAds 4 5class initialViewController: UIViewController { 6 7 struct Constants { 8//広告ユニットを使用しています。 9 static let adsenseID = "ca-app-pub-XXXXXXXXXXXXXXXX/XXXXXXXXXX" 10 } 11 private var interstitialAd: GADInterstitial? 12 override func viewDidLoad() { 13 super.viewDidLoad() 14 self.interstitialAd = createdAd() 15 16 let button = UIButton(frame: CGRect(x: 0, y: 0, width: 200, height: 55)) 17 button.backgroundColor = .link 18 button.center = view.center 19 button.setTitle("Show Ad", for: .normal) 20 button.setTitleColor(.white, for: .normal) 21 view.addSubview(button) 22 button.addTarget(self, action: #selector(didTapButton), for: .touchUpInside) 23 } 24 25//ボタンを押すとConsoleにErrorが表示される 26 @objc private func didTapButton(){ 27 if interstitialAd?.isReady == true{ 28 interstitialAd?.present(fromRootViewController: self) 29 }else{ 30 print("Error") 31 } 32 } 33 34 private func createdAd() -> GADInterstitial{ 35 let ad = GADInterstitial(adUnitID: Constants.adsenseID) 36 ad.delegate = self 37 ad.load(GADRequest()) 38 return ad 39 }

メッセージ

問題がどこにあるのかを考えていると、
アプリIDと広告ユニットが怪しく感じています。
しかし、ターミナル、GoogleAdMob、Firebaseと広範囲なこともあり、
問題の特定には至っていません。
曖昧な質問で申し訳ございません。

AdMobでiOSアプリへの広告を掲載された方、
アドバイスをいただけると幸いです。

よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

GADInterstitialDelegateのメソッドは実装されていましたでしょうか?
実装は必須ではないのですが、デバッグや、広告の読み込み状況を分析するのに役立ちます。

func interstitialDidReceiveAd(_ ad: GADInterstitial) { // ここが呼ばれたら、interstitialAd?.isReadyがtrueになります。 } func interstitial(_ ad: GADInterstitial, didFailToReceiveAdWithError error: GADRequestError) { // 失敗している場合は、errorの内容をご確認ください print(error) }

詳しくは、ドキュメントをご覧ください。
https://developers.google.com/admob/ios/interstitial

投稿2020/10/31 11:13

ichi888

総合スコア81

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問