首页 文章

在viewdidload的每个x加载上显示插页式广告

提问于
浏览
0

我想弄清楚,在每个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()
    }
}

2 回答

  • 3

    每次加载视图时,您都可以使用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)
            }
        }
    }
    
  • 1

    取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.
        }
    }
    

相关问题