zoukankan      html  css  js  c++  java
  • IOS 广告

    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

  • 相关阅读:
    MSSQL大量数据时,建立索引或添加字段后保存更改超时该这么办
    POJ 3261 Milk Patterns (后缀数组)
    POJ 1743 Musical Theme (后缀数组)
    HDU 1496 Equations (HASH)
    694. Distinct Substrings (后缀数组)
    POJ 1222 EXTENDED LIGHTS OUT (枚举 或者 高斯消元)
    POJ 1681· Painter's Problem (位压缩 或 高斯消元)
    POJ 1054 The Troublesome Frog (hash散列)
    HDU 1716 排列2
    HDU 4405 Aeroplane chess (概率DP & 期望)
  • 原文地址:https://www.cnblogs.com/ziyeSky/p/4145348.html
Copyright © 2011-2022 走看看