在每 x 次加载的 viewdidload 上显示插页式广告
Posted
技术标签:
【中文标题】在每 x 次加载的 viewdidload 上显示插页式广告【英文标题】:Showing interstitial ad on every x loads of viewdidload 【发布时间】:2018-12-10 09:30:45 【问题描述】:我想弄清楚,在每 x 次 viewdidload 调用时显示一个插页式广告。 当我的 viewdidload 调用时,我正在加载该广告。但是我想加载它,当viewdidload调用x的时候。 任何帮助将不胜感激。这是我的代码;
class DetailController: UIViewController, GADInterstitialDelegate
//Admob
...
...
var fullScreenAds : GADInterstitial!
//Interstitial-Ad
func createAndLoadInterstitial() -> GADInterstitial?
fullScreenAds = GADInterstitial(adUnitID: myInterstitialID)
guard let fullScreenAds = fullScreenAds else
return nil
let request = GADRequest()
request.testDevices = [ kGADSimulatorID ]
fullScreenAds.load(request)
fullScreenAds.delegate = self
return fullScreenAds
func interstitialDidReceiveAd(_ ad: GADInterstitial)
print("Ads loaded.")
ad.present(fromRootViewController: self)
func interstitialDidFail(toPresentScreen ad: GADInterstitial)
print("Ads not loaded.")
//MARK: View functions
override func viewDidLoad()
super.viewDidLoad()
......
SVProgressHUD.show()
imageView.af_setImage(withURL: URL(string: pic.largeImageURL!)!, placeholderImage: imgPlaceHolder, filter: nil, progress: nil, progressQueue: DispatchQueue.main, imageTransition: .crossDissolve(0.2), runImageTransitionIfCached: true) (data) in
SVProgressHUD.dismiss()
scrollView.delegate = self
setupScrollView()
setupGestureRecognizers()
setupBanner()
self.fullScreenAds = createAndLoadInterstitial()
【问题讨论】:
您可以使用 UserDefaults 存储一个计数,然后检查它是否已达到限制,展示您的广告并重置计数 @sashatheitguy 你的意思是“每次 X 视图控制器加载后”吗? @LadumorDineshkumar 是的。 我之前没有使用过 UserDefaults。如果有例子。它会帮助我.. @Scriptable @sashatheitguy 检查我的答案。 【参考方案1】:您可以使用UserDefaults 来存储每次加载视图时的计数。一旦达到其限制,重置计数并显示广告。
示例代码:
class ViewController: UIViewController
private let adFrequency = 5
private let userDefaults: UserDefaults = .standard
private let defaultsKey = "passwordScreenViewCount"
override func viewDidLoad()
super.viewDidLoad()
let count = userDefaults.integer(forKey: defaultsKey)
if count + 1 >= adFrequency
userDefaults.set(0, forKey: defaultsKey)
// show the ad
else
userDefaults.set(count + 1, forKey: defaultsKey)
【讨论】:
【参考方案2】:取1个全局变量viewDidLoadCount
并设置为0。
假设您希望每 5 个viewDidLoad()
展示一次广告。所以,
在每个 viewDidLoad()
方法中将 viewDidLoadCount
增加 1 并检查
//取全局变量
var viewDidLoadCount : Int = 0
override func viewDidLoad()
super.viewDidLoad()
viewDidLoadCount+=1
if viewDidLoadCount == 5
//send post notification to your main viewcontroller in which you have done code of ad delegate.
【讨论】:
以上是关于在每 x 次加载的 viewdidload 上显示插页式广告的主要内容,如果未能解决你的问题,请参考以下文章
ARCgisEngine二次开发,输入坐标点,在axmapcontrol上显示?(vs2008)
在 UIViewController 上加载数据:viewDidLoad 和 viewWillAppear - 啥是正确的逻辑?