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