From a6ce3111266ab8dc39d49a254c5419cdd2cb5410 Mon Sep 17 00:00:00 2001 From: Arsentiy Milchakov Date: Thu, 30 Jan 2020 11:07:23 +0300 Subject: [PATCH] [ios][statistics] Url params from deep links are sent into statistics. --- .../Strategies/DeepLinkHandlerStrategy.swift | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/iphone/Maps/Core/DeepLink/Strategies/DeepLinkHandlerStrategy.swift b/iphone/Maps/Core/DeepLink/Strategies/DeepLinkHandlerStrategy.swift index 815640ffa3..abd3caf872 100644 --- a/iphone/Maps/Core/DeepLink/Strategies/DeepLinkHandlerStrategy.swift +++ b/iphone/Maps/Core/DeepLink/Strategies/DeepLinkHandlerStrategy.swift @@ -7,13 +7,30 @@ protocol IDeepLinkHandlerStrategy { } extension IDeepLinkHandlerStrategy { + fileprivate func makeParams(type: String) -> [String: String] { + let params = [kStatType : type, kStatProvider: deeplinkURL.provider.statName] + guard let components = URLComponents(string: deeplinkURL.url.absoluteString) else { + return params + } + + var result = [String: String]() + components.queryItems? + .filter({ $0.name.starts(with: "utm_") || $0.name == "booking_aid" }) + .forEach({ result[$0.name] = $0.value ?? "" }) + + // Internal params are more perffered than url params. + for param in params { + result.updateValue(param.value, forKey: param.key) + } + + return result + } + func sendStatisticsOnSuccess(type:String) { - Statistics.logEvent(kStatDeeplinkCall, withParameters: [kStatType : type, - kStatProvider: deeplinkURL.provider.statName]) + Statistics.logEvent(kStatDeeplinkCall, withParameters: makeParams(type:type)) } func sendStatisticsOnFail(type:String) { - Statistics.logEvent(kStatDeeplinkCallMissed, withParameters: [kStatType : type, - kStatProvider: deeplinkURL.provider.statName]) + Statistics.logEvent(kStatDeeplinkCallMissed, withParameters: makeParams(type:type)) } }