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

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

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

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

Swift

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

Q&A

0回答

912閲覧

SwiftUIでのAdmobリワード広告v8の実装について

punipuni0100

総合スコア0

AdMob

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

Swift

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

0グッド

0クリップ

投稿2021/07/19 07:15

前提・実現したいこと

swiftUIでAdmobリワード広告v8を実装したい

該当のソースコード

一応、広告の表示には成功しますが
高確率で「広告の準備ができていませんでした」と表示されます

swift

1import Foundation 2import GoogleMobileAds 3import AVFoundation 4 5class RewardedAdDelegate: NSObject, GADFullScreenContentDelegate, ObservableObject { 6 static var instance = RewardedAdDelegate() 7 var rewardedAd: GADRewardedAd? 8 9 override init() { 10 super.init() 11 let request = GADRequest() 12 // テストIDを使ってます 13 GADRewardedAd.load(withAdUnitID: "ca-app-pub-8123415297019784/4985798738", 14 request: request, completionHandler: { (ad, error) in 15 if let error = error { 16 return 17 } 18 19 self.rewardedAd = ad 20 self.rewardedAd?.fullScreenContentDelegate = self 21 } 22 ) 23 } 24 25 // 広告を表示して報酬を獲得する 26 func showRewardedAd() { 27 let root = UIApplication.shared.windows.first?.rootViewController 28 if let ad = rewardedAd { 29 ad.present(fromRootViewController: root!, 30 userDidEarnRewardHandler: { 31 print("報酬を獲得しました。") 32 } 33 ) 34 } else { 35 print("広告の準備ができていませんでした") 36 } 37 } 38 39 //広告が表示されたタイミング 40 func adDidPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) { 41 print("広告を表示しました") 42 } 43 44 //報酬獲得が失敗したタイミング 45 func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) { 46 // 動画の視聴を途中で止めるなどで報酬を獲得できなかった時に、インスタンスを作り直す 47 // インスタンスは使い捨てなので、作り直さないと再視聴できない 48 RewardedAdDelegate.instance = RewardedAdDelegate() 49 } 50 51 //既に報酬を獲得している場合 52 func ad(_ ad: GADFullScreenPresentingAd, 53 didFailToPresentFullScreenContentWithError error: Error) { 54 print("Rewarded ad failed to present with error: (error.localizedDescription).") 55 } 56}

swiftUI

1struct Ad: View { 2 var body: some View { 3 Button(action: { 4 let reward = RewardedAdDelegate.instance 5 reward.showRewardedAd() 6 }) { 7 Text("広告表示") 8 } 9 } 10}

試したこと

https://amusia-web.com/blog/swift_admob_reward_v8/
ソースコードはこちらを参考にしてちょっと変えました

何が原因なのか知識不足でわからないので助けてくれたら嬉しいです

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問