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