102 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Swift
		
	
	
		
		
			
		
	
	
			102 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Swift
		
	
	
|  | // RelayAdEngine.swift | ||
|  | // Base class for all ad engines with state machine | ||
|  | // Corresponds to RelayAdEngine.kt in Android implementation | ||
|  | 
 | ||
|  | import Foundation | ||
|  | import UIKit | ||
|  | 
 | ||
|  | public struct EventParams { | ||
|  |     public let ad: FusionAd? | ||
|  |     public let reward: FusionReward? | ||
|  |     public let displayFailedInfo: FusionError? | ||
|  |     public let loadFailedInfo: LoadFailedInfo? | ||
|  |      | ||
|  |     public let id: Int | ||
|  |      | ||
|  |     public init( | ||
|  |         ad: FusionAd? = nil, | ||
|  |         reward: FusionReward? = nil, | ||
|  |         displayFailedInfo: FusionError? = nil, | ||
|  |         loadFailedInfo: LoadFailedInfo? = nil, | ||
|  |         id: Int = -1 | ||
|  |     ) { | ||
|  |         self.ad = ad | ||
|  |         self.reward = reward | ||
|  |         self.displayFailedInfo = displayFailedInfo | ||
|  |         self.loadFailedInfo = loadFailedInfo | ||
|  |         self.id = id | ||
|  |     } | ||
|  | } | ||
|  | 
 | ||
|  | protocol OrientationAware { | ||
|  |     func onOrientationUpdate(orientation: ScreenOrientation) | ||
|  | } | ||
|  | 
 | ||
|  | public class RelayAdEngine: StateMachine { | ||
|  |     public let id: Int | ||
|  |     public let adType: AdType | ||
|  |     public var listener: FusionAdListener? | ||
|  |      | ||
|  |     public var supportedAdPlatforms: Set<AdPlatform> { | ||
|  |         fatalError("Subclass must implement") | ||
|  |     } | ||
|  |      | ||
|  |     public init(viewController: UIViewController, id: Int, adType: AdType, strategyName: String) { | ||
|  |         self.id = id | ||
|  |         self.adType = adType | ||
|  |         super.init(name: "\(adType.name)-\(strategyName)-\(id)") | ||
|  |     } | ||
|  |      | ||
|  |     // MARK: - Logging Methods | ||
|  |      | ||
|  |     public func logDebug(_ message: String) { | ||
|  |         Logger.d(tag: name, message: message) | ||
|  |     } | ||
|  |      | ||
|  |     public func logInfo(_ message: String) { | ||
|  |         Logger.i(tag: name, message: message) | ||
|  |     } | ||
|  |      | ||
|  |     public func logWarn(_ message: String) { | ||
|  |         Logger.w(tag: name, message: message) | ||
|  |     } | ||
|  |      | ||
|  |     public func logError(_ message: String) { | ||
|  |         Logger.e(tag: name, message: message) | ||
|  |     } | ||
|  |      | ||
|  |     // MARK: - Listener Callback Methods | ||
|  |      | ||
|  |     public func adLoaded(ad: FusionAd) { | ||
|  |         listener?.onAdLoaded(ad: ad) | ||
|  |     } | ||
|  |      | ||
|  |     public func adDisplayed(ad: FusionAd) { | ||
|  |         listener?.onAdDisplayed(ad: ad) | ||
|  |     } | ||
|  |      | ||
|  |     public func adHidden(ad: FusionAd) { | ||
|  |         listener?.onAdHidden(ad: ad) | ||
|  |     } | ||
|  |      | ||
|  |     public func adClicked(ad: FusionAd) { | ||
|  |         listener?.onAdClicked(ad: ad) | ||
|  |     } | ||
|  |      | ||
|  |     public func adLoadFailed(loadFailedInfo: LoadFailedInfo) { | ||
|  |         listener?.onAdLoadFailed(loadFailedInfo: loadFailedInfo) | ||
|  |     } | ||
|  |      | ||
|  |     public func adDisplayFailed(ad: FusionAd, error: FusionError?) { | ||
|  |         listener?.onAdDisplayFailed(ad: ad, error: error) | ||
|  |     } | ||
|  |      | ||
|  |     public func adRevenuePaid(ad: FusionAd) { | ||
|  |         listener?.onAdRevenuePaid(ad: ad) | ||
|  |     } | ||
|  |      | ||
|  |     public func adUserRewarded(ad: FusionAd, reward: FusionReward?) { | ||
|  |         listener?.onUserRewarded(ad: ad, reward: reward) | ||
|  |     } | ||
|  | } |