FusionAds-iOS/FusionAds/Classes/fusion/core/AdsProfile.swift

105 lines
3.0 KiB
Swift

// AdsProfile.swift
// Defines advertisement profile configurations
// Corresponds to AdsProfile.kt in Android implementation
import Foundation
public struct SegmentWrapper: Codable {
public let key: Int
public let values: [Int]
public init(key: Int, values: [Int] = []) {
self.key = key
self.values = values
}
private enum CodingKeys: String, CodingKey {
case key = "k"
case values = "v"
}
}
public struct SegmentCollectionWrapper: Codable {
public let segments: [SegmentWrapper]
public init(segments: [SegmentWrapper] = []) {
self.segments = segments
}
}
public struct AdsProfile: Codable {
public let adPlatforms: [AdPlatform]
public let maxSdkKey: String
public let ironSourceSdkKey: String?
public let amazonAppId: String?
public let pubmaticStoreUrl: String?
public let uid2Token: String?
public let userId: String
public let tpCreativeKey: String
public let debugMode: Bool
public let segments: SegmentCollectionWrapper
public let maxB2BDisabledAdUnitIds: [String]?
public init(adPlatforms: [AdPlatform], maxSdkKey: String,
ironSourceSdkKey: String? = nil,
amazonAppId: String? = nil,
pubmaticStoreUrl: String? = nil,
uid2Token: String? = nil,
userId: String = "",
tpCreativeKey: String = "",
debugMode: Bool = false,
segments: SegmentCollectionWrapper = SegmentCollectionWrapper(segments: []),
maxB2BDisabledAdUnitIds: [String]? = nil
) {
self.adPlatforms = adPlatforms
self.maxSdkKey = maxSdkKey
self.ironSourceSdkKey = ironSourceSdkKey
self.amazonAppId = amazonAppId
self.pubmaticStoreUrl = pubmaticStoreUrl
self.uid2Token = uid2Token
self.userId = userId
self.tpCreativeKey = tpCreativeKey
self.debugMode = debugMode
self.segments = segments
self.maxB2BDisabledAdUnitIds = maxB2BDisabledAdUnitIds
}
private enum CodingKeys : String, CodingKey {
case adPlatforms = "ad_platforms",
maxSdkKey = "max_sdk_key",
ironSourceSdkKey = "iron_source_sdk_key",
amazonAppId = "amazon_app_id",
pubmaticStoreUrl = "pubmatic_store_url",
uid2Token = "uid2_token",
segments = "segments",
userId = "user_id",
debugMode = "debug_mode",
tpCreativeKey = "tp_creative_key",
maxB2BDisabledAdUnitIds = "max_disable_b2b_ad_unit_ids"
}
}
public enum AdsCommand {
// Add specific commands as needed
}
public class ActionResult {
// Base result class
}
public class BoolActionResult: ActionResult {
public let value: Bool
public init(value: Bool) {
self.value = value
}
}
public struct AdsCrossAction {
public let cmd: AdsCommand
public let params: Any
public let onResult: (ActionResult) -> Void
}