105 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			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 | ||
|  | } |