// // 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)) } }