【问题标题】:Interstitial Ads hide immediately with unwind segue插页式广告立即隐藏并展开转场
【发布时间】:2019-09-15 16:21:23
【问题描述】:

我正在尝试将插页式广告添加到我的应用中。我有 6 个连续的视图控制器。我在 VC #5 上有 3 个按钮。其中两个是 VC#1 和 VC#3 的展开序列。第三个按钮通向 VC#6。我希望每个按钮触发添加。我没有问题将广告添加到第三个按钮与前进segue。但我正在努力解开 segue 按钮。广告仅显示第二次,然后继续展开。

var interstitial: GADInterstitial!

override func viewDidLoad() {
        super.viewDidLoad()
        interstitial = createAndLoadInterstitial()
}

    func createAndLoadInterstitial() -> GADInterstitial {
        let interstitial = GADInterstitial(adUnitID: "ca-app-pub-3940256099942544/4411468910")
        interstitial.delegate = self
        interstitial.load(GADRequest())
        return interstitial
    }
    func interstitialDidDismissScreen(_ ad: GADInterstitial) {
        interstitial = createAndLoadInterstitial()
    }

我尝试对一个按钮使用带有标识符的 unwind segue,而对第二个按钮使用带有按钮的直接 segue。

@IBAction func againButtonPressed(_ sender: UIButton) {

        if interstitial.isReady {
            interstitial.present(fromRootViewController: self)
        } else {
            print("Ad wasn't ready")
        }
        performSegue(withIdentifier: "backToInstruction", sender: self)

    }

 @IBAction func endButtonPressed(_ sender: UIButton) {

if interstitial.isReady {
            interstitial.present(fromRootViewController: self)
        } else {
            print("Ad wasn't ready")
        }
    }

我尝试在 interstitialDidDismissScreen 函数中使用 performSegue。它有点工作,它在 add 被解雇后触发 segue,但在 As 的十字架被按下后需要 10 秒才能进入 VC,这不是最好的体验。 所以,我不知道还能尝试什么......

【问题讨论】:

    标签: ios swift admob


    【解决方案1】:

    您不应在显示 Add 后立即触发 performSegue。相反,您需要将其推迟到 Add 被解除。为此,您需要将 Segue 代码移动到 interstitialDidDismissScreen 回调。像这样,

    func interstitialDidDismissScreen(_ ad: GADInterstitial) {
        if isAgainButtonPressed {
            performSegue(withIdentifier: "backToInstruction", sender: self)
            return
        }
        interstitial = createAndLoadInterstitial()
    }
    

    然后你在 againButtonPresed 方法中将 isAgainButtonPressed 设置为 true。

    【讨论】:

    • 这是一个选项,但我只是不明白:如果使用“forward segue”,它会在用户关闭它之前显示广告-> 在广告被关闭后触发 segue,我不需要使用调度队列。但是 unwind segue 会立即触发。必须有一个选项可以让 unwind segue 表现得像 forward 一样。
    • 在 unwind segue 的情况下,被解除的 viewController 被释放。前向转场并非如此。推送其他 viewController 的 viewController 仍然存在。
    • @VadimKat 我用更好的逻辑更新了答案。看看吧。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多