現状
保存するボタンを押すと入力したデータのモデルがRealmに保存され、Tableviewが表示されているVIewControllerへ戻ってくる。
やりたいこと
戻ってくるタイミング(または保存ボタンを押したタイミング)でインタースティシャル広告を表示させたい。
うまくいかないこと
公式のスタートガイドを元に広告を作成し表示する関数を定義したのですが、どのタイミングで遷移する関数presentAd()
を呼べば表示されるのかがわかりません。。
class ItemTableViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UISearchBarDelegate, GADFullScreenContentDelegate { ... var interstitial: GADInterstitialAd! override func viewDidLoad() { super.viewDidLoad() createInterstitial() ... } func createInterstitial(){ let request = GADRequest() GADInterstitialAd.load(withAdUnitID:"ca-app-pub-3940256099942544/4411468910", request: request) { [self] ad, error in if let error = error { print("Failed to load interstitial ad with error: (error.localizedDescription)") return } interstitial = ad interstitial.fullScreenContentDelegate = self } } func presentAd() { if interstitial != nil { interstitial.present(fromRootViewController: self) } else { print("Ad wasn't ready") } }
試したこと
戻ってきた時に実行される関数unwindToItemList
で実行。Realmに保存し、通知処理をした後で呼び出しましたが表示されませんでした。
@IBAction func unwindToItemList(sender: UIStoryboardSegue) { if let sourceViewController = sender.source as? ItemEditPageViewController { // データモデル作成(省略) ... // Realm更新。 try! realm.write { realm.add(item, update: .modified) } // 通知登録 setNotification(date: item.date) } // 実行したが表示されない presentAd() }
viewWillAppear
で呼び出しても表示されませんでした。
公式のサンプルではボタンアクションの処理内に書いているだけなので、もしかしたら複数の処理の中で実行してもうまく読み込めていないのではないかと思いました。
公式サンプル
@IBAction func doSomething(_ sender: Any) { if interstitial != nil { interstitial.present(fromRootViewController: self) } else { print("Ad wasn't ready") } }
「俺だったらこうするよ」っていう方がいましたら、ご教授いただけたら嬉しいです。
補足
保存ボタンをタップしてテーブルビューに戻ってくる処理はUnwind Segue
で実装しています。
あなたの回答
tips
プレビュー