FusionAds-iOS/FusionAds/Classes/fusion/ironsource/GuruIronSourceBannerAd.swift

125 lines
4.4 KiB
Swift
Raw Normal View History

//
// GuruIronSourceBannerAd.swift
// Pods
//
// Created by 250102 on 2025/5/7.
//
import IronSource
class GuruIronSourceBannerView : GuruBannerView {
func view() -> UIView {
return bannerAdView
}
func setPlacementName(placement: String) {
bannerAdView.setPlacementName(placement)
}
func onShow() {
bannerAdView.isHidden = false
bannerAdView.resumeAutoRefresh()
}
func onHide() {
bannerAdView.isHidden = true
bannerAdView.pauseAutoRefresh()
}
public var bannerAdView: LPMBannerAdView
public init(_ banner: LPMBannerAdView) {
self.bannerAdView = banner
}
}
class GuruIronSourceBannerAd : GuruBannerAd, LPMBannerAdViewDelegate, ISImpressionDataDelegate {
private let viewController: UIViewController
private let adConfig: AdConfig
private var bannerAdCoordinator: GuruBannerCoordinator<GuruIronSourceBannerView>?
private var bannerAd: LPMBannerAdView? { return bannerAdCoordinator?.bannerAd.bannerAdView }
private var contentView: UIView?
private var currentUid2Token: String = ""
private var contentId: Int {
return self.adConfig.engineId
}
private let impressionListenerRegistrar: GuruIronSourceImpressionDataListenerRegistrar?
public init(viewController: UIViewController, adConfig: AdConfig, impressionListenerRegistrar: GuruIronSourceImpressionDataListenerRegistrar? = nil) {
self.viewController = viewController
self.adConfig = adConfig
self.impressionListenerRegistrar = impressionListenerRegistrar
super.init(engineId: adConfig.engineId, adUnitId: adConfig.adUnitId, adPlatform: AdPlatform.ironSource)
}
override func load() -> Bool {
let bannerAd = LPMBannerAdView(adUnitId: adConfig.adUnitId)
bannerAd.loadAd(with: self.viewController)
bannerAd.setDelegate(self)
impressionListenerRegistrar?.unregister(listener: self)
impressionListenerRegistrar?.register(adUnitId: adUnitId, listener: self)
bannerAd.setAdSize(LPMAdSize.banner())
bannerAd.pauseAutoRefresh()
bannerAdCoordinator = GuruBannerCoordinator(viewController: viewController, bannerAd: GuruIronSourceBannerView(bannerAd), contentId: contentId)
return true
}
public override func show(_ request: BannerShowRequest? = nil) -> Bool {
return bannerAdCoordinator?.show() ?? false
}
public override func hide() -> Bool {
return bannerAdCoordinator?.hide() ?? false
}
override public func destroy() -> Bool {
bannerAd?.destroy()
let _ = bannerAdCoordinator?.destroy()
bannerAdCoordinator = nil
impressionListenerRegistrar?.unregister(listener: self)
return true
}
override public func updateOrientation(orientation: ScreenOrientation) -> Bool {
return bannerAdCoordinator?.updateOrientation(orientation: orientation) ?? false
}
func didLoadAd(with adInfo: LPMAdInfo) {
adLoaded(ad: IronSourceFusionAd(engineId: engineId, adType: adType, ad: adInfo))
}
func didFailToLoadAd(withAdUnitId adUnitId: String, error: any Error) {
adLoadFailed(loadFailedInfo: LoadFailedInfo(engineId: engineId, adPlatform: adPlatform, adType: adType, adUnitId: adUnitId, error: SwiftFusionError(error)))
}
func didClickAd(with adInfo: LPMAdInfo) {
adClicked(ad: IronSourceFusionAd(engineId: engineId, adType: adType, ad: adInfo))
}
func didExpandAd(with adInfo: LPMAdInfo) {
adBannerExpanded(ad: IronSourceFusionAd(engineId: engineId, adType: adType, ad: adInfo))
}
func didDisplayAd(with adInfo: LPMAdInfo) {
adDisplayed(ad: IronSourceFusionAd(engineId: engineId, adType: adType, ad: adInfo))
}
func didCollapseAd(with adInfo: LPMAdInfo) {
adBannerCollapsed(ad: IronSourceFusionAd(engineId: engineId, adType: adType, ad: adInfo))
}
func didFailToDisplayAd(with adInfo: LPMAdInfo, error: any Error) {
adDisplayFailed(ad: IronSourceFusionAd(engineId: engineId, adType: adType, ad: adInfo), error: SwiftFusionError(error))
}
func didLeaveApp(with adInfo: LPMAdInfo) {
}
func impressionDataDidSucceed(_ impressionData: ISImpressionData!) {
adRevenuePaid(ad: IronSourceImpressedFusionAd(engineId: engineId, adType: adType, impressionData: impressionData))
}
}