У меня есть несколько внештатных проектов, которые используют Google Admob. Теперь менеджер проекта сказал мне, что проекты не соответствуют политике Google Admob, по-видимому, Google временно прекратил показывать рекламу для определенного проекта.
Вот идеальный поток, который хочет Google Admob (ref: https://support.google.com/admob/answer/6201362?hl=en&ref_topic=2745287):
Насколько я знаю, такого рода реализация в iOS невозможна. То, что в настоящее время делают проекты, - это после закрытия промежуточной рекламы (с помощью функции делегата в Admob Framework, interstitialDidDismissScreen
или interstitialWillDismissScreen
), только тогда будет показан следующий экран. Короче говоря, после отклонения модально представленной промежуточной рекламы, следующий экран, как ожидается, будет уже и прекрасно представлен!
У меня было несколько попыток сделать это, только чтобы привести к этому, конечно, как мы все знаем:
Предупреждение. Попытайтесь указать, чей вид не находится в иерархии окон!
Итак, мой вопрос: есть ли способ представить экран в задней части представленного экрана?
Я пробовал другие способы, такие как удаление анимации, но предыдущий экран все еще можно увидеть. Простой проект для тех, кто хочет что-то попробовать:
AppDelegate.swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let vc1 = ViewController()
let vc1navcon = UINavigationController(rootViewController: vc1)
self.window = UIWindow(frame: UIScreen.main.bounds)
self.window?.rootViewController = vc1navcon
self.window?.makeKeyAndVisible()
return true
}
MultipleVCs.swift
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = .red
let barButton = UIBarButtonItem(title: "VC3", style: .plain, target: self, action: #selector(self.presentVc3))
self.navigationItem.leftBarButtonItem = barButton
}
@objc func presentVc3() {
let vc3navcon = UINavigationController(rootViewController: ViewController3())
self.present(vc3navcon, animated: true, completion: nil)
}
}
class ViewController2: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = .green
}
}
class ViewController3: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = .blue
let barButton = UIBarButtonItem(title: "AddVC2", style: .plain, target: self, action: #selector(self.addVc2))
self.navigationItem.leftBarButtonItem = barButton
let barButton2 = UIBarButtonItem(title: "dismiss", style: .plain, target: self, action: #selector(self.dismissVc3))
self.navigationItem.rightBarButtonItem = barButton2
}
@objc func dismissVc3() {
self.dismiss(animated: true, completion: {
})
}
@objc func addVc2() {
let vc2 = ViewController2()
let vc2navcon = UINavigationController(rootViewController: vc2)
var viewControllers = UIApplication.shared.keyWindow?.rootViewController?.childViewControllers
viewControllers?.append(vc2navcon)
}
}