Add FirebaseManager

This commit is contained in:
Loris Perret 2023-12-06 11:23:26 +01:00
parent 3e133773a9
commit 6aef8bc2de
4 changed files with 73 additions and 41 deletions

View File

@ -66,11 +66,15 @@ class MatomoAnalyticsManager: AnalyticsManagerProtocol {
class FirebaseAnalyticsManager: AnalyticsManagerProtocol { class FirebaseAnalyticsManager: AnalyticsManagerProtocol {
func logScreen(name: String, path: String) { func logScreen(name: String, path: String) {
Analytics.logEvent(AnalyticsEventScreenView, parameters: [AnalyticsParameterScreenName: name])
} }
func logEvent(name: String) { func logEvent(name: String) {
var parameters = [
AnalyticsParameterValue: name
]
Analytics.logEvent(AnalyticsEventSelectContent, parameters: parameters)
} }
} }
@ -83,20 +87,27 @@ class AnalyticsManager {
var managers: [AnalyticsManagerProtocol] = [] var managers: [AnalyticsManagerProtocol] = []
private var isEnabled: Bool = true
// MARK: - Methods
func setAnalyticsEnabled(_ enable: Bool) { isEnabled = enable }
func configure(sideId: String, url: String) { func configure(sideId: String, url: String) {
managers.append(MatomoAnalyticsManager(siteId: sideId, url: url)) managers.append(MatomoAnalyticsManager(siteId: sideId, url: url))
managers.append(FirebaseAnalyticsManager()) managers.append(FirebaseAnalyticsManager())
FirebaseApp.configure()
} }
private func logScreen(name: String, path: String) { private func logScreen(name: String, path: String) {
guard isEnabled else { return }
managers.forEach { manager in managers.forEach { manager in
manager.logScreen(name: name, path: path) manager.logScreen(name: name, path: path)
} }
} }
private func logEvent(name: String) { private func logEvent(name: String) {
guard isEnabled else { return }
managers.forEach { manager in managers.forEach { manager in
manager.logEvent(name: name) manager.logEvent(name: name)
} }
@ -104,11 +115,11 @@ class AnalyticsManager {
// MARK: - ScreenTag // MARK: - ScreenTag
func logScreenEcranUn(name: String, path: String) { func logScreenEcranUn() {
logScreen(name: name, path: path) logScreen(name: "Ecran un", path: "ecran_un/")
} }
func logEventEcranDeux(name: String) { func logEventEcranDeux() {
logEvent(name: name) logEvent(name: "Ecran deux")
} }
} }

View File

@ -8,7 +8,19 @@
import Foundation import Foundation
enum FirebaseGenerator { enum FirebaseGenerator {
var header: String { case service
var content: String {
[
FirebaseGenerator.service.header,
FirebaseGenerator.service.logScreen,
FirebaseGenerator.service.logEvent,
FirebaseGenerator.service.footer
]
.joined(separator: "\n")
}
private var header: String {
""" """
// MARK: - Firebase // MARK: - Firebase
@ -16,21 +28,31 @@ enum FirebaseGenerator {
""" """
} }
var footer: String { private var logScreen: String {
""" """
func logScreen(name: String, path: String) {
Analytics.logEvent(AnalyticsEventScreenView, parameters: [AnalyticsParameterScreenName: name])
} }
""" """
} }
var logScreen: String { private var logEvent: String {
""" """
func logEvent(name: String) {
var parameters = [
AnalyticsParameterValue: name
]
Analytics.logEvent(AnalyticsEventSelectContent, parameters: parameters)
}
""" """
} }
var logEvent: String { private var footer: String {
"""
""" """
} }
"""
}
} }

View File

@ -62,7 +62,6 @@ class TagsGenerator {
\(Self.getImport()) \(Self.getImport())
\(Self.getAnalytics()) \(Self.getAnalytics())
// MARK: - Manager // MARK: - Manager
class AnalyticsManager { class AnalyticsManager {
@ -72,12 +71,24 @@ class TagsGenerator {
var managers: [AnalyticsManagerProtocol] = [] var managers: [AnalyticsManagerProtocol] = []
\(Self.getEnabledContent())
\(Self.getAnalyticsProperties()) \(Self.getAnalyticsProperties())
\(Self.getPrivateLogFunction()) \(Self.getPrivateLogFunction())
""" """
} }
private static func getEnabledContent() -> String {
"""
private var isEnabled: Bool = true
// MARK: - Methods
func setAnalyticsEnabled(_ enable: Bool) { isEnabled = enable }
"""
}
private static func getImport() -> String { private static func getImport() -> String {
var result: [String] = [] var result: [String] = []
@ -94,12 +105,14 @@ class TagsGenerator {
private static func getPrivateLogFunction() -> String { private static func getPrivateLogFunction() -> String {
""" """
private func logScreen(name: String, path: String) { private func logScreen(name: String, path: String) {
guard isEnabled else { return }
managers.forEach { manager in managers.forEach { manager in
manager.logScreen(name: name, path: path) manager.logScreen(name: name, path: path)
} }
} }
private func logEvent(name: String) { private func logEvent(name: String) {
guard isEnabled else { return }
managers.forEach { manager in managers.forEach { manager in
manager.logEvent(name: name) manager.logEvent(name: name)
} }
@ -108,7 +121,7 @@ class TagsGenerator {
} }
private static func getAnalyticsProperties() -> String { private static func getAnalyticsProperties() -> String {
var header = " // MARK: - Methods\n" var header = ""
var content: [String] = [] var content: [String] = []
let footer = " }" let footer = " }"
@ -144,20 +157,6 @@ class TagsGenerator {
""" """
let firebase = """
// MARK: - Firebase
class FirebaseAnalyticsManager: AnalyticsManagerProtocol {
func logScreen(name: String, path: String) {
}
func logEvent(name: String) {
}
}
"""
var result: [String] = [proto] var result: [String] = [proto]
if targets.contains(Tags.TargetType.matomo) { if targets.contains(Tags.TargetType.matomo) {
@ -165,7 +164,7 @@ class TagsGenerator {
} }
if targets.contains(Tags.TargetType.firebase) { if targets.contains(Tags.TargetType.firebase) {
result.append(firebase) result.append(FirebaseGenerator.service.content)
} }
return result.joined(separator: "\n") return result.joined(separator: "\n")

View File

@ -96,9 +96,9 @@ class TagDefinition {
private func getlogFunction() -> String { private func getlogFunction() -> String {
if type == TagType.screen.value { if type == TagType.screen.value {
"logScreen(name: name, path: path)" "logScreen(name: \"\(name)\", path: \"\(path)\")"
} else { } else {
"logEvent(name: name)" "logEvent(name: \"\(name)\")"
} }
} }
@ -106,7 +106,7 @@ class TagDefinition {
func getProperty() -> String { func getProperty() -> String {
""" """
func \(getFuncName())(name: String\(type == TagType.screen.value ? ", path: String" : "")) { func \(getFuncName())() {
\(getlogFunction()) \(getlogFunction())
} }
""" """
@ -114,7 +114,7 @@ class TagDefinition {
func getStaticProperty() -> String { func getStaticProperty() -> String {
""" """
static func \(getFuncName())(name: name\(type == TagType.screen.value ? ", path: String" : "")) { static func \(getFuncName())() {
\(getlogFunction()) \(getlogFunction())
} }
""" """