CPAdManager 1.4.3

CPAdManager 1.4.3

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最新发布2017年8月
SwiftSwift 版本3.1
SPM支持 SPM

Chope 维护。



  • yoonhg84

一个通过按顺序请求多个广告平台来列举可能广告的库。

使用广告平台赚更多钱。

特性

  • Admob
    • 横幅广告(仅竖屏)
    • 插屏广告
  • Facebook Audience Network
    • 横幅广告(仅竖屏)
    • 插屏广告
  • Util
    • 已安装 Facebook Util

##安装

用法

如果您已安装 Facebook: 1) FBAudienceNetwork, 2) Admob。或者 1) Admob, 2) FBAudienceNetwork。

插屏广告

class ViewController: UIViewController {
    @IBOutlet fileprivate weak var showInterstitialButton: UIButton!

    private var interstitialAdManager: CPInterstitialAdManager!

    override func viewDidLoad() {
	    super.viewDidLoad()

interstitialAdManager = CPInterstitialAdManager(interstitialAds: [
                CPAdmobInterstitialAd(unitId: "ca-app-pub-3940256099942544/1033173712"),
                CPFacebookInterstitialAd(placementId: "1351290504887194_1726465200703054")
        ], identifierForFirstAd: "facebook") { [weak self] manager, state in
            switch state {
            case .idle:
                break
            case .errorForOneCycle:
                self?.showInterstitialButton?.isEnabled = false
            case .loaded:
                self?.showInterstitialButton?.isEnabled = true
            case .willDismissed:
                break
            case .didDismissed:
                break
            }
        }
        interstitialAdManager.failForDebug = true
        interstitialAdManager.requestAd()
    }

	@IBAction func showInterstitialAd(_ button: UIButton?) {
        interstitialAdManager.show(from: self)
        button?.isEnabled = false
    }
}

横幅广告

class ViewController: UIViewController {
    @IBOutlet fileprivate weak var requestBannerButton: UIButton!
    @IBOutlet fileprivate weak var bannerContainerView: UIView!
    @IBOutlet fileprivate weak var bannerContainerViewHeightConstraint: NSLayoutConstraint!

    private var bannerAdManager: CPBannerAdManager!

    override func viewDidLoad() {
        super.viewDidLoad()
        bannerAdManager = CPBannerAdManager(bannerAds: [
                CPAdmobBannerAd(unitId: "ca-app-pub-3940256099942544/6300978111"),
                CPFacebookBannerAd(placementId: "1351290504887194_1351290761553835")
        ], identifierForFirstAd: "facebook", viewController: self, containerView: bannerContainerView) { [weak self] manager, state in
            guard let ss = self else { return }

            switch state {
            case .loaded(let height):
                ss.bannerContainerViewHeightConstraint.constant = height
                print("CPAdManager: \(ss.bannerContainerViewHeightConstraint.constant): \(height)")
            case .errorForOneCycle:
                break
            case .idle:
                break
            }
            ss.requestBannerButton.isEnabled = true
        }
        bannerAdManager.failForDebug = true
    }

    @IBAction func requestBanner(_ button: UIButton?) {
        button?.isEnabled = false
        bannerAdManager.request()
    }
}

原生广告

class ViewController: UIViewController {
    @IBOutlet fileprivate weak var requestNativeButton: UIButton!
    @IBOutlet fileprivate weak var nativeContainerView: UIView!
    @IBOutlet fileprivate weak var nativeContainerViewHeightConstraint: NSLayoutConstraint!

    private var nativeAdManager: CPNativeAdManager!

    override func viewDidLoad() {
    super.viewDidLoad()
    	super.viewDidLoad()
        
        nativeAdManager = CPNativeAdManager(nativeAds: [
                CPAdmobNativeAd(unitId: "ca-app-pub-3940256099942544/4270592515"),
                CPFacebookNativeAd(placementId: "1351290504887194_1773840312632209", adViewType: .genericHeight300)
        ], identifierForFirstAD: "Admob", containerView: nativeContainerView) { [weak self] _, state in
            switch state {
            case .loaded(let height):
                self?.nativeContainerViewHeightConstraint.constant = height
            case .errorForOneCycle:
                break
            case .idle:
                break
            }

            self?.requestNativeButton.isEnabled = true
        }
        nativeAdManager.rootViewController = self
        nativeAdManager.failForDebug = true
    }

    @IBAction func showNativeAd(_ button: UIButton?) {
        nativeAdManager.request()
        button?.isEnabled = false
    }
}

添加广告平台

横幅

重载 CPBannerAd.

open class CPBannerAd: NSObject {
    func request(in viewController: UIViewController) { }
    func set(delegate: CPBannerAdDelegate) { }
    func bannerView() -> UIView? { return nil }
}

插屏

重载 CPInterstitialAd.

open class CPInterstitialAd: NSObject {
    func requestAd() { }
    func ready() -> Bool { return false }
    func show(ad viewController: UIViewController) { }
    func set(delegate: CPInterstitialAdDelegate) { }
}

##许可证 CPAdManager 在 MIT 许可证下发布。详细信息请参阅 LICENSE

CPAdManager

通过按顺序请求多个广告平台来列出可能广告的库。

利用广告平台赚取更多收益。

特性

  • Admob
    • 横幅广告(仅竖屏)
    • 插屏广告
  • Facebook Audience Network
    • 横幅广告(仅竖屏)
    • 插屏广告
  • Util
    • 已安装 Facebook Util

##安装

用法

如果安装了 Facebook,则按 FBAudienceNetwork、Admob 的顺序请求。或者按 Admob、FBAudienceNetwork 的顺序请求。

插屏广告

class ViewController: UIViewController {
    @IBOutlet fileprivate weak var showInterstitialButton: UIButton!

    private var interstitialAdManager: CPInterstitialAdManager!

    override func viewDidLoad() {
	    super.viewDidLoad()

interstitialAdManager = CPInterstitialAdManager(interstitialAds: [
                CPAdmobInterstitialAd(unitId: "ca-app-pub-3940256099942544/1033173712"),
                CPFacebookInterstitialAd(placementId: "1351290504887194_1726465200703054")
        ], identifierForFirstAd: "facebook") { [weak self] manager, state in
            switch state {
            case .idle:
                break
            case .errorForOneCycle:
                self?.showInterstitialButton?.isEnabled = false
            case .loaded:
                self?.showInterstitialButton?.isEnabled = true
            case .willDismissed:
                break
            case .didDismissed:
                break
            }
        }
        interstitialAdManager.failForDebug = true
        interstitialAdManager.requestAd()
    }

	@IBAction func showInterstitialAd(_ button: UIButton?) {
        interstitialAdManager.show(from: self)
        button?.isEnabled = false
    }
}

横幅广告

class ViewController: UIViewController {
    @IBOutlet fileprivate weak var requestBannerButton: UIButton!
    @IBOutlet fileprivate weak var bannerContainerView: UIView!
    @IBOutlet fileprivate weak var bannerContainerViewHeightConstraint: NSLayoutConstraint!

    private var bannerAdManager: CPBannerAdManager!

    override func viewDidLoad() {
        super.viewDidLoad()
        bannerAdManager = CPBannerAdManager(bannerAds: [
                CPAdmobBannerAd(unitId: "ca-app-pub-3940256099942544/6300978111"),
                CPFacebookBannerAd(placementId: "1351290504887194_1351290761553835")
        ], identifierForFirstAd: "facebook", viewController: self, containerView: bannerContainerView) { [weak self] manager, state in
            guard let ss = self else { return }

            switch state {
            case .loaded(let height):
                ss.bannerContainerViewHeightConstraint.constant = height
                print("CPAdManager: \(ss.bannerContainerViewHeightConstraint.constant): \(height)")
            case .errorForOneCycle:
                break
            case .idle:
                break
            }
            ss.requestBannerButton.isEnabled = true
        }
        bannerAdManager.failForDebug = true
    }

    @IBAction func requestBanner(_ button: UIButton?) {
        button?.isEnabled = false
        bannerAdManager.request()
    }
}

原生广告

class ViewController: UIViewController {
    @IBOutlet fileprivate weak var requestNativeButton: UIButton!
    @IBOutlet fileprivate weak var nativeContainerView: UIView!
    @IBOutlet fileprivate weak var nativeContainerViewHeightConstraint: NSLayoutConstraint!

    private var nativeAdManager: CPNativeAdManager!

    override func viewDidLoad() {
    super.viewDidLoad()
    	super.viewDidLoad()
        
        nativeAdManager = CPNativeAdManager(nativeAds: [
                CPAdmobNativeAd(unitId: "ca-app-pub-3940256099942544/4270592515"),
                CPFacebookNativeAd(placementId: "1351290504887194_1773840312632209", adViewType: .genericHeight300)
        ], identifierForFirstAD: "Admob", containerView: nativeContainerView) { [weak self] _, state in
            switch state {
            case .loaded(let height):
                self?.nativeContainerViewHeightConstraint.constant = height
            case .errorForOneCycle:
                break
            case .idle:
                break
            }

            self?.requestNativeButton.isEnabled = true
        }
        nativeAdManager.rootViewController = self
        nativeAdManager.failForDebug = true
    }

    @IBAction func showNativeAd(_ button: UIButton?) {
        nativeAdManager.request()
        button?.isEnabled = false
    }
}

添加广告平台

横幅

继承并重载 CBCoverFlowButton。

open class CPBannerAd: NSObject {
    func request(in viewController: UIViewController) { }
    func set(delegate: CPBannerAdDelegate) { }
    func bannerView() -> UIView? { return nil }
}

插屏广告

继承 CPInterstitialAd 并重写。

open class CPInterstitialAd: NSObject {
    func requestAd() { }
    func ready() -> Bool { return false }
    func show(ad viewController: UIViewController) { }
    func set(delegate: CPInterstitialAdDelegate) { }
}

##许可证 CPAdManager 在 MIT 许可证下发布。详细信息请参阅 LICENSE