使用导航后退按钮时显示 Admob 插页式 iOS Swift
show Admob interstitial when with nav back button press iOS Swift
我有两个视图控制器 imageViewController 和 InfoViewController。我希望我的广告在用户点击 InfoViewController
的后退按钮时显示
class imageViewController: UIViewController , GADInterstitialDelegate {
var interstitial: GADInterstitial!
override func viewDidLoad() {
self.interstitial = self.createAndLoadInterstitial()
super.viewDidLoad()
}
func createAndLoadInterstitial() -> GADInterstitial {
let interstitial: GADInterstitial = GADInterstitial(adUnitID: "ca-app-pub-3940256099942544/4411468910")
interstitial.delegate = self
let request = GADRequest()
interstitial.loadRequest(request)
print("req sent")
return interstitial
}
func interstitialDidReceiveAd(ad: GADInterstitial!) {
if (interstitial.isReady) {
print("ad ready")
interstitial.presentFromRootViewController(self)
}}
func interstitialDidDismissScreen(interstitial: GADInterstitial) {
}
我应该如何通过从 infoViewController 到 ImageViewCroller 的后退按钮单击来调用它。我也没有用全局变量解决这个问题,因为我是 iOS
的新手
我建议在 UIViewController
的方法之一中调用它。例如:
isMovingFromParentViewController()
编辑:
实际上,如果你想有一个 VC 作为代理,你应该从父 VC 调用它,否则你将通过后退按钮弹出它而失去代理。
您可以通过几种方式做到这一点。一种是使用 closure。在这里,您可以将回调方法放在第一个 VC 中,并在第二个 VC 中有一个 属性,如下所示:
var onBack:()->()?
并且您需要在显示第二个 VC 时设置它的值(例如在 prepareForSegue
方法中):
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if let destination = segue.destinationViewController as? InfoViewController {
destination.onBack = { ()->() in
self.createAndLoadInterstitial()
}
}
}
然后,在第二个视图控制器中执行此操作:
override func isMovingFromParentViewController() -> Bool {
onBack?()
}
顺便说一下,这还没有测试:)
它会在背面显示广告 按
var interstitial: GADInterstitial!
var showAd = true
viewdidload {
self.createandLoadInterstitial()
}
func createAndLoadInterstitial() {
interstitial = GADInterstitial(adUnitID: "ca-app-pub-3940256099942544/4411468910")
interstitial.delegate = self
let request = GADRequest()
interstitial.loadRequest(request)
}
override func viewDidAppear(animated: Bool) {
if (interstitial.isReady && showAd) {
showAd = false
print("iterstitalMain is ready")
interstitial.presentFromRootViewController(self)
self.createAndLoadInterstitial()
}
else{
showAd = true
}
}
我检测 ios 后退并在 backPressed 上显示 admob 插页式广告的最简单方法是在我的 childViewController 中使用 willMoveToParentViewController
或 didMoveToParentViewController
,在你的情况下 InfoViewController
.
我在 appDelegate 上创建了我的插页式 admob 插页式实例。所以,我可以在全球范围内使用它并且只使用一个 instance/shared 实例(我认为)
然后像这样在 willMoveToParentViewController
或 didMoveToParentViewController
上调用它。两者几乎相同。 (willMoveToParentViewController
将提前调用(我的观察:广告将在转换回来时显示)didMoveToParentViewController
(我的观察:广告将在完全转换回来时显示))
override func willMoveToParentViewController(parent: UIViewController?) {
super.willMoveToParentViewController(parent)
if parent == nil {
appDelegate.showInterstitialAd()
}
}
或
override func didMoveToParentViewController(parent: UIViewController?) {
super.didMoveToParentViewController(parent)
if parent == nil {
appDelegate.showInterstitialAd()
}
}
从这个答案中得到了灵感。
PS。调用 interstitial.presentFromRootViewController(self) on
interstitialDidReceiveAd` 并不是调用它的最佳方式,因为您无法控制它何时显示。
完美的测试代码,用于添加插页式广告。在后退按钮中。
在 secondviewController 中添加此代码。无需在 FirstViewcontroller 中添加任何内容。
func createAndLoadInterstitial() {
interstitial = GADInterstitial(adUnitID: "your id")
interstitial.delegate = self
let request = GADRequest()
interstitial.loadRequest(request)
}
override func viewWillDisappear(animated: Bool) {
if (interstitial.isReady && showAd) {
showAd = false
print("iterstitalMain is ready")
interstitial.presentFromRootViewController(parentViewController!)
self.createAndLoadInterstitial()
}
else{
}
}
置顶答案更新功能
override func willMove(toParent parent: UIViewController?) {
super.willMove(toParent: parent)
if parent == nil {
if interstitial.isReady {
interstitial.present(fromRootViewController: self)
} else {
print("Ad wasn't ready")
}
}
}``
我有两个视图控制器 imageViewController 和 InfoViewController。我希望我的广告在用户点击 InfoViewController
的后退按钮时显示class imageViewController: UIViewController , GADInterstitialDelegate {
var interstitial: GADInterstitial!
override func viewDidLoad() {
self.interstitial = self.createAndLoadInterstitial()
super.viewDidLoad()
}
func createAndLoadInterstitial() -> GADInterstitial {
let interstitial: GADInterstitial = GADInterstitial(adUnitID: "ca-app-pub-3940256099942544/4411468910")
interstitial.delegate = self
let request = GADRequest()
interstitial.loadRequest(request)
print("req sent")
return interstitial
}
func interstitialDidReceiveAd(ad: GADInterstitial!) {
if (interstitial.isReady) {
print("ad ready")
interstitial.presentFromRootViewController(self)
}}
func interstitialDidDismissScreen(interstitial: GADInterstitial) {
}
我应该如何通过从 infoViewController 到 ImageViewCroller 的后退按钮单击来调用它。我也没有用全局变量解决这个问题,因为我是 iOS
的新手我建议在 UIViewController
的方法之一中调用它。例如:
isMovingFromParentViewController()
编辑:
实际上,如果你想有一个 VC 作为代理,你应该从父 VC 调用它,否则你将通过后退按钮弹出它而失去代理。
您可以通过几种方式做到这一点。一种是使用 closure。在这里,您可以将回调方法放在第一个 VC 中,并在第二个 VC 中有一个 属性,如下所示:
var onBack:()->()?
并且您需要在显示第二个 VC 时设置它的值(例如在 prepareForSegue
方法中):
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if let destination = segue.destinationViewController as? InfoViewController {
destination.onBack = { ()->() in
self.createAndLoadInterstitial()
}
}
}
然后,在第二个视图控制器中执行此操作:
override func isMovingFromParentViewController() -> Bool {
onBack?()
}
顺便说一下,这还没有测试:)
它会在背面显示广告 按
var interstitial: GADInterstitial!
var showAd = true
viewdidload {
self.createandLoadInterstitial()
}
func createAndLoadInterstitial() {
interstitial = GADInterstitial(adUnitID: "ca-app-pub-3940256099942544/4411468910")
interstitial.delegate = self
let request = GADRequest()
interstitial.loadRequest(request)
}
override func viewDidAppear(animated: Bool) {
if (interstitial.isReady && showAd) {
showAd = false
print("iterstitalMain is ready")
interstitial.presentFromRootViewController(self)
self.createAndLoadInterstitial()
}
else{
showAd = true
}
}
我检测 ios 后退并在 backPressed 上显示 admob 插页式广告的最简单方法是在我的 childViewController 中使用 willMoveToParentViewController
或 didMoveToParentViewController
,在你的情况下 InfoViewController
.
我在 appDelegate 上创建了我的插页式 admob 插页式实例。所以,我可以在全球范围内使用它并且只使用一个 instance/shared 实例(我认为)
然后像这样在 willMoveToParentViewController
或 didMoveToParentViewController
上调用它。两者几乎相同。 (willMoveToParentViewController
将提前调用(我的观察:广告将在转换回来时显示)didMoveToParentViewController
(我的观察:广告将在完全转换回来时显示))
override func willMoveToParentViewController(parent: UIViewController?) {
super.willMoveToParentViewController(parent)
if parent == nil {
appDelegate.showInterstitialAd()
}
}
或
override func didMoveToParentViewController(parent: UIViewController?) {
super.didMoveToParentViewController(parent)
if parent == nil {
appDelegate.showInterstitialAd()
}
}
从这个答案中得到了灵感。
PS。调用 interstitial.presentFromRootViewController(self) on
interstitialDidReceiveAd` 并不是调用它的最佳方式,因为您无法控制它何时显示。
完美的测试代码,用于添加插页式广告。在后退按钮中。 在 secondviewController 中添加此代码。无需在 FirstViewcontroller 中添加任何内容。
func createAndLoadInterstitial() {
interstitial = GADInterstitial(adUnitID: "your id")
interstitial.delegate = self
let request = GADRequest()
interstitial.loadRequest(request)
}
override func viewWillDisappear(animated: Bool) {
if (interstitial.isReady && showAd) {
showAd = false
print("iterstitalMain is ready")
interstitial.presentFromRootViewController(parentViewController!)
self.createAndLoadInterstitial()
}
else{
}
}
置顶答案更新功能
override func willMove(toParent parent: UIViewController?) {
super.willMove(toParent: parent)
if parent == nil {
if interstitial.isReady {
interstitial.present(fromRootViewController: self)
} else {
print("Ad wasn't ready")
}
}
}``