gpt4 book ai didi

ios - Swift/XCode - AdMob 在 dismissViewController 期间插入

转载 作者:行者123 更新时间:2023-11-28 06:38:56 26 4
gpt4 key购买 nike

我有一个简单的应用程序,需要一些帮助才能正确触发插页式广告。该应用程序只是两个 View 。 MainVC 和 ModalVC。在 ModalVC 上,有一个 [CLOSE] 按钮可以让用户返回到 MainVC:

@IBAction func closeButtonPressed(sender: UIButton) {
self.dismissViewControllerAnimated(true, completion: nil).
}

为了从 MainVC 到 ModalVC,我使用了以下内容:

self.performSegueWithIdentifier("mainSegue", sender: self)
// Present Modally segue, default presentation, cross dissolve transition.

我遇到的主要问题 是在 closeButtonPressed 上触发插页式广告。我希望插页式广告能够触发,而在后台执行 dismissViewController。这样,一旦用户完成插页式广告,他们将返回到 MainVC。 (Interstitial 将每 4 个转换触发一次。仅供引用。对我的主要问题不是很重要。)发生的是 Interstitial 加载,然后立即关闭。见下面的代码:

@IBAction func closeButtonPressed(sender: UIButton) {
//INTERSTITIAL TRIGGER!
if (self.interstitial.isReady) {
self.interstitial.presentFromRootViewController(self)
self.interstitial = self.createAd()
dismissViewControllerAnimated(true, completion: nil)
}
else {
dismissViewControllerAnimated(true, completion: nil)
}
}

此外,我尝试了以下 GADInterstitialDelegate 方法...它偶然产生了与上述代码相同的结果:

@IBAction func closeButtonPressed(sender: UIButton) {
//INTERSTITIAL TRIGGER!
if (self.interstitial.isReady) {
self.interstitial.presentFromRootViewController(self)
self.interstitial = self.createAd()

interstitialDidReceiveAd(interstitial)
}
else {
dismissViewControllerAnimated(true, completion: nil)
}
}
/// Called when an interstitial ad request succeeded.
func interstitialDidReceiveAd(ad: GADInterstitial!) {
print("interstitialDidReceiveAd")
self.dismissViewControllerAnimated(true, completion: nil)
}

我还在 [CLOSE] 按钮上尝试了 Unwind segue,它在 MainVC 上触发了以下内容:

@IBAction func unwindToMain(segue: UIStoryboardSegue) {
// unwinded
if (self.interstitial.isReady) {
self.interstitial.presentFromRootViewController(self)
self.interstitial = self.createAd()
}
}

这给了我这个错误:警告:尝试在 testAd.MainVC 上呈现 GADInterstitialViewController:0x7f9e01ca7a80:0x7f9e02c44b50,其 View 不在窗口层次结构中!

理想情况下,我希望 Interstitial 触发器全部保留在 ModalVC 上,只是因为我希望 Interstitial 在 MainVC 出现之前出现。

任何帮助表示赞赏。我的轮胎已经在这个轮胎上旋转了一天多了……呃……提前致谢!

最佳答案

终于明白了。这里的技巧是仅使用 View Controller 中的按钮来触发插页式广告。然后在与插页式广告相同的 View 上,使用 GADInterstitialDelegate 方法,具体为:interstitialWillDismissScreen

class ModalVC: UIViewController, GADInterstitialDelegate 

func interstitialWillDismissScreen(ad: GADInterstitial!) {
self.dismissViewControllerAnimated(true, completion: nil)
}

以下是您可以使用的所有插页式委托(delegate)​​方法的完整列表:https://firebase.google.com/docs/admob/ios/ad-events

关于ios - Swift/XCode - AdMob 在 dismissViewController 期间插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38469656/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com