Commit 7d64491a by Demid Merzlyakov

IOS-74: add AppsFlyer analytics service.

parent f1a7d6bc
......@@ -211,6 +211,7 @@
CE376C98261EE484000B1159 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CE376C97261EE484000B1159 /* LaunchScreen.storyboard */; };
CE3A36C72638A77E002CACC3 /* BlendFIPSSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE3A36C62638A77E002CACC3 /* BlendFIPSSource.swift */; };
CE3A36ED2638A825002CACC3 /* FIPSResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE3A36EC2638A825002CACC3 /* FIPSResponse.swift */; };
CE3C1DB6265536360031BD72 /* AppsFlyerAnalyticsService.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE3C1DB5265536360031BD72 /* AppsFlyerAnalyticsService.swift */; };
CE578FD325F7E89400E8B85D /* DayTimeWeather.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE578FD225F7E89400E8B85D /* DayTimeWeather.swift */; };
CE578FE525FB415F00E8B85D /* CityCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE578FE225FB415F00E8B85D /* CityCell.swift */; };
CE578FE625FB415F00E8B85D /* LocationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE578FE325FB415F00E8B85D /* LocationViewController.swift */; };
......@@ -543,6 +544,7 @@
CE376C97261EE484000B1159 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = "<group>"; };
CE3A36C62638A77E002CACC3 /* BlendFIPSSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlendFIPSSource.swift; sourceTree = "<group>"; };
CE3A36EC2638A825002CACC3 /* FIPSResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FIPSResponse.swift; sourceTree = "<group>"; };
CE3C1DB5265536360031BD72 /* AppsFlyerAnalyticsService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppsFlyerAnalyticsService.swift; sourceTree = "<group>"; };
CE578FD225F7E89400E8B85D /* DayTimeWeather.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DayTimeWeather.swift; sourceTree = "<group>"; };
CE578FE225FB415F00E8B85D /* CityCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CityCell.swift; sourceTree = "<group>"; };
CE578FE325FB415F00E8B85D /* LocationViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocationViewController.swift; sourceTree = "<group>"; };
......@@ -1607,6 +1609,7 @@
CEF959642600C2F900975FAA /* AnalyticsService.swift */,
CEF959732600C3A400975FAA /* FlurryAnalyticsService.swift */,
CEF9598F2600C5A800975FAA /* MoEngageAnalyticsService.swift */,
CE3C1DB5265536360031BD72 /* AppsFlyerAnalyticsService.swift */,
);
path = Services;
sourceTree = "<group>";
......@@ -2055,6 +2058,7 @@
CD37D3FE260DF726002669D6 /* SettingsCellFactory.swift in Sources */,
CD8E041625F8F91B001785B6 /* ForecastCellFactory.swift in Sources */,
87C1720D25FF870600DA3464 /* GeoNamesPlace.swift in Sources */,
CE3C1DB6265536360031BD72 /* AppsFlyerAnalyticsService.swift in Sources */,
CE8962A826175DF500CA274A /* _CoreCurrentWeather.swift in Sources */,
CEFB857A2617510700C5CDD2 /* 1WModel.xcdatamodeld in Sources */,
CDC70833260FBFD4004A1974 /* UnitPressure+Atmosphere.swift in Sources */,
......
......@@ -15,7 +15,7 @@ public class Analytics {
self.services = services
}
public static let shared = Analytics(services: [FlurryAnalyticsService(), MoEngageAnalyticsService()])
public static let shared = Analytics(services: [FlurryAnalyticsService(), MoEngageAnalyticsService(), AppsFlyerAnalyticsService()])
public func log(event: AnalyticsEvent, params: [AnalyticsParameter: Any]? = nil) {
var loggedTo = [String]()
......
......@@ -12,3 +12,16 @@ public protocol AnalyticsService {
var eventsWhitelist: Set<AnalyticsEvent>? { get }
func log(event: AnalyticsEvent, params: [AnalyticsParameter: Any]?)
}
extension AnalyticsService {
func stringKeyedParams(from params: [AnalyticsParameter: Any]?) -> [String: Any]? {
guard let params = params else {
return nil
}
var stringKeyedParams = [String: Any]()
for (key, value) in params {
stringKeyedParams[key.rawValue] = value
}
return stringKeyedParams
}
}
//
// AppsFlyerAnalyticsService.swift
// 1Weather
//
// Created by Demid Merzlyakov on 19.05.2021.
//
import Foundation
import AppsFlyerLib
internal struct AppsFlyerAnalyticsService: AnalyticsService {
public let name: String = "AppsFlyer"
let eventsWhitelist: Set<AnalyticsEvent>? = [.ANALYTICS_APP_OPEN, .ANALYTICS_USER_QUALIFIED, .ANALYTICS_D3_RETAINED, .ANALYTICS_FIRST_OPEN]
func log(event: AnalyticsEvent, params: [AnalyticsParameter : Any]?) {
AppsFlyerLib.shared().logEvent(event.rawValue, withValues: stringKeyedParams(from: params))
}
}
......@@ -13,15 +13,6 @@ internal struct FlurryAnalyticsService: AnalyticsService {
let eventsWhitelist: Set<AnalyticsEvent>? = nil
func log(event: AnalyticsEvent, params: [AnalyticsParameter : Any]?) {
// Not sure we need this conversion
var stringKeyedParams: [String: Any]? = nil
if let params = params {
stringKeyedParams = [String: Any]()
for (key, value) in params {
stringKeyedParams?[key.rawValue] = value
}
}
Flurry.logEvent(event.rawValue, withParameters: stringKeyedParams)
Flurry.logEvent(event.rawValue, withParameters: stringKeyedParams(from: params))
}
}
......@@ -13,13 +13,7 @@ internal struct MoEngageAnalyticsService: AnalyticsService {
let eventsWhitelist: Set<AnalyticsEvent>? = nil
func log(event: AnalyticsEvent, params: [AnalyticsParameter : Any]?) {
var stringKeyedParams: [String: Any]? = nil
if let params = params {
stringKeyedParams = [String: Any]()
for (key, value) in params {
stringKeyedParams?[key.rawValue] = value
}
}
let stringKeyedParams = stringKeyedParams(from: params)
if let params = stringKeyedParams {
if let nsParams = (params as NSDictionary).mutableCopy() as? NSMutableDictionary { // should never fail
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment