FusionAds-iOS/FusionAds/Classes/fusion/engine/RelayAdEngine.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)
}
}