public class NativeAds: NSObject, GADNativeExpressAdViewDelegate {
public static func getInstance() -> NativeAds {...}
private let adId = "MY_AD_ID"
private var ads = [GADNativeExpressAdView]()
public func getAd(_ vc: UIViewController) -> GADNativeExpressAdView?
{
requestAd()
if (ads.count == 0) {return nil}
let ad = ads[0]
ad.rootViewController = vc
ads.remove(at: 0)
return ad
}
private func requestAd()
{
print("Requesting ad...")
let ad = GADNativeExpressAdView()
ad.adUnitID = adId
ad.rootViewController = UIViewController()
ad.delegate = self
ad.load(GADRequest())
}
public func nativeExpressAdViewDidReceiveAd(_ nativeExpressAdView: GADNativeExpressAdView)
{
ads.append(nativeExpressAdView)
print("Ad loaded ! (count = \(ads.count))")
}
public func nativeExpressAdView(_ nativeExpressAdView: GADNativeExpressAdView, didFailToReceiveAdWithError error: GADRequestError)
{
print("Ad failed to load... \(error.localizedDescription)...)
}
} public static func getInstance() -> NativeAds
{
if (instance != nil) {return instance}
instance = NativeAds()
instance.initFirstAd()
return instance
}
private func initFirstAd()
{
requestAd()
}
private var tmpVC : UIViewController!
private override init()
{
super.init()
let appDelegate = UIApplication.shared.delegate as! AppDelegate
tmpVC = appDelegate.window!.rootViewController as! ViewController
}