This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public func track(event: AnalyticsEvent) { | |
trackAnalytic(event: event, parameters: EmptyParameter()) | |
} | |
public func track<T>(event: AnalyticsEvent, with parameters: T) where T : AnalyticsParameter { | |
trackAnalytic(event: event, parameters: parameters) | |
} | |
private func trackAnalytic<T: AnalyticsParameter>(event: AnalyticsEvent, parameters: T?) { | |
for trackerKey in event.supportedTrackers { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private var eventTrackers: [EventTrackerKey: EventTracker] = [:] | |
public func addEventTracker(key: EventTrackerKey, tracker: EventTracker) { | |
DispatchQueue(label: "com.test.mySerialQueue").sync { | |
eventTrackers[key] = tracker | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class EventTrackerKey: Hashable { | |
public func hash(into hasher: inout Hasher) { | |
hasher.combine(self.name.hashValue) | |
} | |
public static func == (lhs: EventTrackerKey, rhs: EventTrackerKey) -> Bool { | |
return (lhs.name == rhs.name) | |
} | |
public let name: String |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class ExampleParameter: AnalyticsParameter { | |
public var parameter: ParameterType | |
public typealias ParameterType = [AnyHashable: Any] | |
init(parameters: [AnyHashable: Any]) { | |
self.parameter = parameters | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public protocol AnalyticsParameter { | |
var parameter: ParameterType { get } | |
associatedtype ParameterType | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public protocol AnalyticsEvent { | |
var name: String {get} | |
var supportedTrackers: [EventTrackerKey] {get} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
func checkEventToken(eventToken: String) { | |
guard !ADJUtil.isNull(eventToken) else { | |
logger.error("Missing Event Token") | |
return false | |
} | |
guard eventToken.count == 6 else { | |
logger.error("Malformed Event Token \(eventToken)") | |
return false | |
} | |
return true |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public protocol EventTracker { | |
func track(event: String) | |
func track<T: AnalyticsParameter>(event: String, with parameters: T) | |
func isEventNameSupported(event: String) -> Bool | |
} |
NewerOlder