测试已测试 | ✗ |
语言语言 | SwiftSwift |
许可证 | MIT |
发布最新发布 | 2017年8月 |
SwiftSwift 版本 | 3.1 |
SPM支持 SPM | ✗ |
由 Chope 维护。
一个通过按顺序请求多个广告平台来列举可能广告的库。
使用广告平台赚更多钱。
##安装
如果您已安装 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。
通过按顺序请求多个广告平台来列出可能广告的库。
利用广告平台赚取更多收益。
##安装
如果安装了 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。