いつもお世話になっております。
現在アプリにインターステイシャル広告を導入してるのですが、google adsense側から広告の停止警告がきてしまいました。調べてみると、広告の表示が、画面遷移後少ししてから表示しているのことが問題になりそうだったため、アプリ起動中に広告のロードを行い、最初の画面が表示されるとともにすぐに広告が表示できるようにしたいと考えていおります。
現在以下のようにコーディングしているのですが、この状態ですと、この画面で読み込みを開始するため、表示が遅くなってしまいます。アプリ起動時に読み込むために、GADRewardBasedVideoAd.sharedInstance()による広告の読み込みをappdelegateなどに記載し、読み込み完了まで、最初のviewコントローラーに遷移しないようにするためにはどのようにすればよいのでしょうか。
不勉強で申し訳ございませんが、ご回答いただけますと幸いです。
よろしくお願いいたします。
Swift
1//AdMob管理画面から確認できるユニットIDを設定 2 let AdMobID = "本番ID" 3 let TEST_DEVICE_ID = "テストID" 4 5 let AdMobTest:Bool = true 6 let SimulatorTest:Bool = false 7 var AdUnitID:String? = nil 8 let simulation = true 9 // Is an ad being loaded. 10 var adRequestInProgress = false 11 var adRedy = false 12 // The reward-based video ad. 13 var rewardBasedVideo: GADRewardBasedVideoAd? 14 var statusLabel: UILabel! 15 16override func viewDidLoad() { 17 super.viewDidLoad() 18 statusLabel = UILabel() 19 rewardBasedVideo = GADRewardBasedVideoAd.sharedInstance() 20 rewardBasedVideo?.delegate = self 21 22 setupRewardBasedVideoAd() 23} 24 25func playAd() { 26 print("adRedy=(adRedy)") 27 28 if GADRewardBasedVideoAd.sharedInstance().isReady && adRedy{ 29 GADRewardBasedVideoAd.sharedInstance().present(fromRootViewController: self) 30 adRedy = false 31 } 32 else{ 33 print("Error: Reward based video not ready") 34 } 35 } 36 func setupRewardBasedVideoAd() { 37 statusLabel.text = "set up" 38 39 if !adRequestInProgress && rewardBasedVideo?.isReady == false { 40 rewardBasedVideo?.load(GADRequest(), 41 withAdUnitID: TEST_DEVICE_ID ) 42 43 adRequestInProgress = true 44 } 45 else{ 46 print("Error: setup RewardBasedVideoAd") 47 } 48 } 49 50 func rewardBasedVideoAd(_ rewardBasedVideoAd: GADRewardBasedVideoAd, 51 didFailToLoadWithError error: Error) { 52 adRequestInProgress = false 53 statusLabel.text = "failed to load" 54 55 print("Reward based video ad failed to load: (error.localizedDescription)") 56 } 57 58 func rewardBasedVideoAdDidReceive(_ rewardBasedVideoAd: GADRewardBasedVideoAd) { 59 statusLabel.text = "ad is received" 60 adRequestInProgress = false 61 adRedy = true 62 63 print("Reward based video ad is received.") 64 playAd() 65 } 66 67 func rewardBasedVideoAdDidOpen(_ rewardBasedVideoAd: GADRewardBasedVideoAd) { 68 statusLabel.text = "Opened reward based video ad." 69 70 print("Opened reward based video ad.") 71 } 72 73 func rewardBasedVideoAdDidStartPlaying(_ rewardBasedVideoAd: GADRewardBasedVideoAd) { 74 print("started playing.") 75 } 76 77 func rewardBasedVideoAdDidClose(_ rewardBasedVideoAd: GADRewardBasedVideoAd) { 78 statusLabel.text = "ad is closed" 79 setupRewardBasedVideoAd() 80 81 print("Reward based video ad is closed.") 82 } 83 84 func rewardBasedVideoAdWillLeaveApplication(_ rewardBasedVideoAd: GADRewardBasedVideoAd) { 85 86 print("Reward based video ad will leave application.") 87 } 88 89 func rewardBasedVideoAd(_ rewardBasedVideoAd: GADRewardBasedVideoAd, 90 didRewardUserWith reward: GADAdReward) { 91 print("Reward received with currency: (reward.type), amount (reward.amount).") 92 } 93