FusionAds-iOS/FusionAds/Classes/fusion/engine/mab/base/MabAnalyticsEvents.swift

98 lines
2.8 KiB
Swift
Raw Normal View History

//
// MabAnalyticsEvents.swift
// Pods
//
// Created by 250102 on 2025/5/10.
//
//
internal class MabAnalyticEvents {
// 访
static let shared = MabAnalyticEvents()
//
private init() {}
static func faLoad(
faUnitId: String,
adType: AdType,
aggregatorId: String,
adUnitId: String,
requestReason: RequestReason?
) {
var params: [String: Any] = [:]
params["fa_unitid"] = faUnitId
params["aggregator_id"] = aggregatorId
if let requestReason = requestReason {
params["req_type"] = requestReason.statsName
}
params["ad_format"] = adType.label
params["ad_unit_name"] = shrink(adUnitId)
AnalyticsEvents.shared.onEvent(name: "fa_load", param: params)
}
static func faLoaded(
faUnitId: String,
adType: AdType,
adSource: String?,
aggregatorId: String,
adUnitId: String,
durationInMillis: Int64?
) {
guard let durationInMillis = durationInMillis else {
return
}
AnalyticsEvents.shared.onEvent(
name: "fa_loaded",
pairs:
("fa_unitid", faUnitId),
("aggregator_id", aggregatorId),
("ad_format", adType.label),
("duration", durationInMillis),
("ad_unit_name", shrink(adUnitId)),
("ad_source", (adSource ?? "unknown"))
)
}
static func faFailed(
faUnitId: String,
adType: AdType,
aggregatorId: String,
adUnitId: String,
durationInMillis: Int64?,
errorCode: Int
) {
guard let durationInMillis = durationInMillis else {
return
}
AnalyticsEvents.shared.onEvent(
name: "fa_failed",
pairs:
("fa_unitid", faUnitId),
("aggregator_id", aggregatorId),
("ad_format", adType.label),
("duration", durationInMillis),
("ad_unit_name", shrink(adUnitId)),
("error_code", errorCode)
)
}
/**
* adUnitId便
*/
private static func shrink(_ adUnitId: String) -> String {
// shrink a adUnitId from AdMob to a shorter form,
// for example, ca-app-pub-2436733915645843/9966308712
// shrink("ca-app-pub-2436733915645843/9966308712") == "9966308712"
if adUnitId.hasPrefix("ca-app-pub-") && adUnitId.count == 38 && adUnitId[adUnitId.index(adUnitId.startIndex, offsetBy: 27)] == "/" {
return String(adUnitId.suffix(10))
}
// no need to shrink
return adUnitId
}
}