FusionAds-iOS/FusionAds/Classes/fusion/ironsource/GuruIronSourceInterstitialA...

81 lines
3.1 KiB
Swift

//
// GuruIronSourceInterstitialAd.swift
// Pods
//
// Created by 250102 on 2025/5/6.
//
import IronSource
class GuruIronSourceInterstitialAd: GuruInterstitialAd, LPMInterstitialAdDelegate, ISImpressionDataDelegate {
private let viewController: UIViewController
private let adConfig: AdConfig
private var ad: LPMInterstitialAd?
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 {
logInfo("request load")
self.ad = LPMInterstitialAd(adUnitId: adConfig.adUnitId)
self.ad?.setDelegate(self)
impressionListenerRegistrar?.unregister(listener: self)
impressionListenerRegistrar?.register(adUnitId: adUnitId, listener: self)
self.ad?.loadAd()
return true
}
override func show(_ request: InterstitialShowRequest? = nil) -> Bool {
logInfo("request show")
guard let ad = ad, ad.isAdReady() else {
return false
}
ad.showAd(viewController: viewController, placementName: request?.placement)
return true
}
override func destroy() -> Bool {
self.ad = nil
impressionListenerRegistrar?.unregister(listener: self)
return true
}
func didLoadAd(with adInfo: LPMAdInfo) {
logInfo("loaded")
adLoaded(ad: IronSourceFusionAd(engineId: engineId, adType: adType, ad: adInfo))
}
func didFailToLoadAd(withAdUnitId adUnitId: String, error: any Error) {
logError("load failed, \(error.code) - \(error.localizedDescription)")
adLoadFailed(loadFailedInfo: LoadFailedInfo(engineId: engineId, adPlatform: adPlatform, adType: adType, adUnitId: adUnitId, error: SwiftFusionError(error)))
}
func didDisplayAd(with adInfo: LPMAdInfo) {
logInfo("displayed")
adDisplayed(ad: IronSourceFusionAd(engineId: engineId, adType: adType, ad: adInfo))
}
func didFailToDisplayAd(with adInfo: LPMAdInfo, error: any Error) {
logError("displayed failed, \(error.code) - \(error.localizedDescription)")
adDisplayFailed(ad: IronSourceFusionAd(engineId: engineId, adType: adType, ad: adInfo), error: SwiftFusionError(error))
}
func didClickAd(with adInfo: LPMAdInfo) {
adClicked(ad: IronSourceFusionAd(engineId: engineId, adType: adType, ad: adInfo))
}
func didCloseAd(with adInfo: LPMAdInfo) {
adHidden(ad: IronSourceFusionAd(engineId: engineId, adType: adType, ad: adInfo))
}
func impressionDataDidSucceed(_ impressionData: ISImpressionData!) {
logInfo("revenue paid")
adRevenuePaid(ad: IronSourceImpressedFusionAd(engineId: engineId, adType: adType, impressionData: impressionData))
}
}