首页 > 代码库 > IOS 广告 - 集成 admob 和 iAd,并且设置分地区使用

IOS 广告 - 集成 admob 和 iAd,并且设置分地区使用

1、向项目里添加 iAd 的 banner(横条)。

  引入框架 iAd.framework;

  定义一个 iAd bannerView 的变量 iAdView, 并加入 iAd 框架(import iAd)和 ADBannerViewDelegate 协议

var iAdView:ADBannerView?

  实现 iAdView 实例,并规定其位置

    iAdView = ADBannerView(adType: ADAdType.Banner)    iAdView?.frame = CGRectMake(0, 0 - iAdView!.frame.height, iAdView!.frame.width, iAdView!.frame.height)    statusbarHeight = self.view.frame.size.height - iAdView!.frame.height    iAdView?.delegate = self    self.view.addSubview(iAdView!)

  并且实现 ADBannerViewDelegate 协议

    // iAdBannerViewDelegate    func bannerViewWillLoadAd(banner: ADBannerView!) {        println("bannerViewWillLoadAd")    }        func bannerViewDidLoadAd(banner: ADBannerView!) {        println("bannerViewDidLoadAd")        relayoutViews()    }        func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) {        println("didFailToReceiveAd error:\(error)")    }        func bannerViewActionDidFinish(banner: ADBannerView!) {        println("bannerViewActionDidFinish")    }        func bannerViewActionShouldBegin(banner: ADBannerView!, willLeaveApplication willLeave: Bool) -> Bool {        println("bannerViewActionShouldBegin")        return true;    }

 

2、向代码中添加 AdMob。

  引入框架 AdSupport.framework, 导入 AdMob 的相应SDK代码

  定义一个 GADBannerView 的变量 bannerView, 并加入 GADBannerViewDelegate 协议

var bannerView:GADBannerView?

  实现 bannerView 实例,并规定其位置

    bannerView = GADBannerView(adSize: kGADAdSizeBanner)    bannerView?.adUnitID = "ca-app-pub-3724477525755491/7721017568"    // 设置 AdMob 的广告 ID    statusbarHeight = self.view.frame.size.height - bannerView!.frame.height   // 设置 banner 的 y 轴位置    bannerView?.frame.size.width = self.view.frame.size.width          // 设置 bannerView 的宽度,以应对不同尺寸的手机屏幕    bannerView?.delegate = self    bannerView?.rootViewController = self    self.view.addSubview(bannerView!)    bannerView?.loadRequest(GADRequest())

  实现 GADBannerViewDelegate 协议

// GADBannerViewDelegate    func adViewDidReceiveAd(view: GADBannerView!) {        println("adViewDidReceiveAd:\(view)");    }        func adView(view: GADBannerView!, didFailToReceiveAdWithError error: GADRequestError!) {        println("\(view) error:\(error)")    }        func adViewWillPresentScreen(adView: GADBannerView!) {        println("adViewWillPresentScreen:\(adView)")    }        func adViewWillLeaveApplication(adView: GADBannerView!) {        println("adViewWillLeaveApplication:\(adView)")    }        func adViewWillDismissScreen(adView: GADBannerView!) {        println("adViewWillDismissScreen:\(adView)")    }

 

3、实现不同地区显示不同的广告,原因是 iAd 只支持为数不多的地区,代码如下:

// iAd func 判断该地区支不支持 iAd    func iAdTimeZoneSupported()->Bool {        let iAdTimeZones = "America/;US/;Pacific/;Asia/Tokyo;Europe/".componentsSeparatedByString(";")        var myTimeZone = NSTimeZone.localTimeZone().name        for zone in iAdTimeZones {            if (myTimeZone.hasPrefix(zone)) {                return true;            }        }                return false;    }

 

4、在app加载 bannerView 后重新刷新界面(在 ADBannerViewDelegate 和 GADBannerViewDelegate 方法中刷新),对比要的视图/控件调整位置

// 重画 banner 视图    func relayoutViews() {        var bannerFrame = iAdSupported ? iAdView!.frame : bannerView!.frame        bannerFrame.origin.x = 0        bannerFrame.origin.y = statusbarHeight        if iAdSupported {            iAdView!.frame = bannerFrame        } else {            bannerView!.frame = bannerFrame        }                // 使原来的视图高度减少一个 banner 的高度,或者上移一个 banner 的高度        self.mainMapView.frame.size.height = self.view.frame.size.height - bannerFrame.size.height        self.settingBtn.frame.size.height = self.view.frame.size.height - bannerFrame.size.height    }

   更新 ADBannerViewDelegate 和 GADBannerViewDelegate 的实现方法

    // iAdBannerViewDelegate    func bannerViewWillLoadAd(banner: ADBannerView!) {        println("bannerViewWillLoadAd")    }        func bannerViewDidLoadAd(banner: ADBannerView!) {        println("bannerViewDidLoadAd")        relayoutViews()    }        func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) {        println("didFailToReceiveAd error:\(error)")        relayoutViews()   // 重画框架    }        func bannerViewActionDidFinish(banner: ADBannerView!) {        println("bannerViewActionDidFinish")        relayoutViews()   // 重画框架    }        func bannerViewActionShouldBegin(banner: ADBannerView!, willLeaveApplication willLeave: Bool) -> Bool {        println("bannerViewActionShouldBegin")        return true;    }    // MARK: - GADBannerView        // GADBannerViewDelegate    func adViewDidReceiveAd(view: GADBannerView!) {        println("adViewDidReceiveAd:\(view)");        relayoutViews()    }        func adView(view: GADBannerView!, didFailToReceiveAdWithError error: GADRequestError!) {        println("\(view) error:\(error)")        relayoutViews()    }        func adViewWillPresentScreen(adView: GADBannerView!) {        println("adViewWillPresentScreen:\(adView)")        relayoutViews()    }        func adViewWillLeaveApplication(adView: GADBannerView!) {        println("adViewWillLeaveApplication:\(adView)")        relayoutViews()    }        func adViewWillDismissScreen(adView: GADBannerView!) {        println("adViewWillDismissScreen:\(adView)")        relayoutViews()    }

 可参见代码:http://www.swiftmi.com/code4swift/29.html , https://github.com/goldenfiredo/Swift_GoogleAd

IOS 广告 - 集成 admob 和 iAd,并且设置分地区使用