mise-a-jour-tags #6

Merged
l.perret merged 21 commits from mise-a-jour-tags into master 2023-12-13 10:46:10 +01:00
7 changed files with 364 additions and 152 deletions
Showing only changes of commit 1ee4998ec6 - Show all commits

View File

@ -127,7 +127,7 @@ class AnalyticsManager {
// MARK: - Methods
func setAnalyticsEnabled(_ enable: Bool) {
func setAnalyticsEnabled(_ enable: Bool) {
isEnabled = enable
}
@ -167,24 +167,30 @@ class AnalyticsManager {
}
}
// MARK: - Introduction
// MARK: - section_one
func logScreenIntroductionScreen(title: String) {
func logScreenS1DefOne() {
logScreen(
name: "Bienvenue \(title)",
path: "introduction/"
name: "s1 def one",
path: "s1_def_one/"
)
}
func logEventIntroductionScreen(test: String, data: Int) {
func logEventS1DefTwo() {
logEvent(
name: "Bienvenue",
action: "action",
category: "category",
params: [
"test": test,
"data": data
]
name: "s1 def two",
action: "test",
category: "test",
params: []
)
}
// MARK: - section_two
func logScreenS2DefOne() {
logScreen(
name: "s2 def one",
path: "s2_def_one/"
)
}
}

View File

@ -1,24 +1,43 @@
---
categories:
- id: Introduction
- id: section_one
screens:
- id: introduction_screen
name: Bienvenue _TITLE_
path: introduction/
tags: droid,ios
parameters:
- name: title
type: String
replaceIn: name
- id: s1_def_one
name: s1 def one
path: s1_def_one/
tags: ios
events:
- id: introduction_screen
name: Bienvenue
category: category
action: action
tags: droid,ios
parameters:
- name: test
type: String
- name: data
type: Int
- id: s1_def_two
name: s1 def two
action: test
category: test
tags: ios
- id: section_two
screens:
- id: s2_def_one
name: s2 def one
path: s2_def_one/
tags: ios
events:
- id: s2_def_two
name: s2 def two
action: test
category: test
tags: droid
- id: section_three
screens:
- id: s3_def_one
name: s3 def one
path: s3_def_one/
tags: droid
events:
- id: s3_def_two
name: s3 def two
action: test
category: test
tags: droid

View File

@ -32,7 +32,7 @@ FORCE_FLAG="$1"
#echo "\n-------------------------\n"
# Strings
## Strings
#swift run -c release ResgenSwift strings stringium $FORCE_FLAG "./Strings/sampleStrings.txt" \
# --output-path "./Strings/Generated" \
# --langs "fr en en-us" \
@ -41,23 +41,23 @@ FORCE_FLAG="$1"
# --extension-name "String" \
# --extension-suffix "GenAllScript"
echo "\n-------------------------\n"
## Tags
swift run -c release ResgenSwift strings tags $FORCE_FLAG "./Tags/sampleTags.txt" \
--lang "ium" \
--extension-output-path "./Tags/Generated" \
--extension-name "Tags" \
--extension-suffix "GenAllScript"
#
#echo "\n-------------------------\n"
## Analytics
#swift run -c release ResgenSwift analytics $FORCE_FLAG "./Tags/sampleTags.yml" \
# --target "matomo firebase" \
## Tags
#swift run -c release ResgenSwift strings tags $FORCE_FLAG "./Tags/sampleTags.txt" \
# --lang "ium" \
# --extension-output-path "./Tags/Generated" \
# --extension-name "Analytics" \
# --extension-name "Tags" \
# --extension-suffix "GenAllScript"
#
echo "\n-------------------------\n"
# Analytics
swift run -c release ResgenSwift analytics $FORCE_FLAG "./Tags/sampleTags.yml" \
--target "matomo firebase" \
--extension-output-path "./Tags/Generated" \
--extension-name "Analytics" \
--extension-suffix "GenAllScript"
echo "\n-------------------------\n"
#

View File

@ -22,8 +22,6 @@ class AnalyticsGenerator {
}
}
// Get extension content
let extensionFileContent = Self.getExtensionContent(sections: sections,
tags: tags,
@ -84,7 +82,7 @@ class AnalyticsGenerator {
// MARK: - Methods
func setAnalyticsEnabled(_ enable: Bool) {
func setAnalyticsEnabled(_ enable: Bool) {
isEnabled = enable
}
"""

View File

@ -91,16 +91,16 @@ class AnalyticsFileParser {
parameters: screen.parameters
)
guard target.contains(Analytics.TargetType.matomo.value) else { continue }
if target.contains(Analytics.TargetType.matomo.value) {
// Path
guard let path = screen.path else {
let error = GenerateError.missingElement("screen path")
Generate.exit(withError: error)
}
// Path
guard let path = screen.path else {
let error = GenerateError.missingElement("screen path")
Generate.exit(withError: error)
definition.path = path
}
definition.path = path
definitions.append(definition)
}
@ -121,25 +121,25 @@ class AnalyticsFileParser {
parameters: event.parameters
)
guard target.contains(Analytics.TargetType.matomo.value) else { continue }
// Category
guard let category = event.category else {
let error = GenerateError.missingElement("event category")
Generate.exit(withError: error)
if target.contains(Analytics.TargetType.matomo.value) {
// Category
guard let category = event.category else {
let error = GenerateError.missingElement("event category")
Generate.exit(withError: error)
}
definition.category = category
// Action
guard let action = event.action else {
let error = GenerateError.missingElement("event action")
Generate.exit(withError: error)
}
definition.action = action
}
definition.category = category
// Action
guard let action = event.action else {
let error = GenerateError.missingElement("event action")
Generate.exit(withError: error)
}
definition.action = action
definitions.append(definition)
}

View File

@ -52,15 +52,18 @@ final class AnalyticsDefinitionTests: XCTestCase {
func testGeneratedRawPropertyScreen() {
// Given
let definition = AnalyticsDefinition(id: "definition_name", name: "Ecran un", type: .screen)
definition.path = "ecran_un/"
// When
let propertyScreen = definition.getProperty()
// Expect
let expectScreen = """
func logScreenEcranUn() {
logScreen(name: "Ecran un", path: "ecran_un/")
func logScreenDefinitionName() {
logScreen(
name: "Ecran un",
path: "ecran_un/"
)
}
"""
@ -69,15 +72,20 @@ final class AnalyticsDefinitionTests: XCTestCase {
func testGeneratedRawPropertyEvent() {
// Given
let definition = AnalyticsDefinition(id: "definition_name", name: "Ecran un", type: .screen)
let definition = AnalyticsDefinition(id: "definition_name", name: "Ecran un", type: .event)
// When
let propertyEvent = definition.getProperty()
// Expect
let expectEvent = """
func logEventEcranUn() {
logEvent(name: "Ecran un")
func logEventDefinitionName() {
logEvent(
name: "Ecran un",
action: "",
category: "",
params: []
)
}
"""
@ -87,14 +95,18 @@ final class AnalyticsDefinitionTests: XCTestCase {
func testGeneratedRawStaticPropertyScreen() {
// Given
let definition = AnalyticsDefinition(id: "definition_name", name: "Ecran un", type: .screen)
definition.path = "ecran_un/"
// When
let propertyScreen = definition.getStaticProperty()
// Expect
let expectScreen = """
static func logScreenEcranUn() {
logScreen(name: "Ecran un", path: "ecran_un/")
static func logScreenDefinitionName() {
logScreen(
name: "Ecran un",
path: "ecran_un/"
)
}
"""
@ -103,15 +115,20 @@ final class AnalyticsDefinitionTests: XCTestCase {
func testGeneratedRawStaticPropertyEvent() {
// Given
let definition = AnalyticsDefinition(id: "definition_name", name: "Ecran un", type: .screen)
let definition = AnalyticsDefinition(id: "definition_name", name: "Ecran un", type: .event)
// When
let propertyEvent = definition.getStaticProperty()
// Expect
let expectEvent = """
static func logEventEcranUn() {
logEvent(name: "Ecran un")
static func logEventDefinitionName() {
logEvent(
name: "Ecran un",
action: "",
category: "",
params: []
)
}
"""

View File

@ -13,9 +13,20 @@ import ToolCore
final class AnalyticsGeneratorTests: XCTestCase {
private func getAnalyticsDefinition(id: String, path: String, name: String, type: AnalyticsDefinition.TagType, tags: [String]) -> AnalyticsDefinition {
private func getAnalyticsDefinition(
id: String,
path: String = "",
action: String = "",
category: String = "",
name: String,
type: AnalyticsDefinition.TagType,
tags: [String]
) -> AnalyticsDefinition {
let definition = AnalyticsDefinition(id: id, name: name, type: type)
definition.tags = tags
definition.path = path
definition.action = action
definition.category = category
return definition
}
@ -23,20 +34,20 @@ final class AnalyticsGeneratorTests: XCTestCase {
// Given
let sectionOne = AnalyticsCategory(id: "section_one")
sectionOne.definitions = [
getAnalyticsDefinition(id: "s1_def_one", path: "s1_def_one/", name: "s1 def one", type: AnalyticsDefinition.TagType.screen, tags: ["ios", "iosonly"]),
getAnalyticsDefinition(id: "s1_def_two", path: "s1_def_two/", name: "s1 def two", type: AnalyticsDefinition.TagType.event, tags: ["ios", "iosonly"]),
getAnalyticsDefinition(id: "s1_def_one", name: "s1 def one", type: .screen, tags: ["ios", "iosonly"]),
getAnalyticsDefinition(id: "s1_def_two", name: "s1 def two", type: .event, tags: ["ios", "iosonly"]),
]
let sectionTwo = AnalyticsCategory(id: "section_two")
sectionTwo.definitions = [
getAnalyticsDefinition(id: "s2_def_one", path: "s2_def_one/", name: "s2 def one", type: AnalyticsDefinition.TagType.screen, tags: ["ios","iosonly"]),
getAnalyticsDefinition(id: "s2_def_two", path: "s2_def_two/", name: "s2 def two", type: AnalyticsDefinition.TagType.event, tags: ["droid","droidonly"]),
getAnalyticsDefinition(id: "s2_def_one", name: "s2 def one", type: .screen, tags: ["ios","iosonly"]),
getAnalyticsDefinition(id: "s2_def_two", name: "s2 def two", type: .event, tags: ["droid","droidonly"]),
]
let sectionThree = AnalyticsCategory(id: "section_three")
sectionThree.definitions = [
getAnalyticsDefinition(id: "s3_def_one", path: "s3_def_one/", name: "s3 def one", type: AnalyticsDefinition.TagType.screen, tags: ["droid","droidonly"]),
getAnalyticsDefinition(id: "s3_def_two", path: "s3_def_two/", name: "s3 def two", type: AnalyticsDefinition.TagType.event, tags: ["droid","droidonly"]),
getAnalyticsDefinition(id: "s3_def_one", name: "s3 def one", type: .screen, tags: ["droid","droidonly"]),
getAnalyticsDefinition(id: "s3_def_two", name: "s3 def two", type: .event, tags: ["droid","droidonly"]),
]
// When
@ -49,29 +60,55 @@ final class AnalyticsGeneratorTests: XCTestCase {
let expect = """
// Generated by ResgenSwift.Analytics 1.2
import UIKit
import Firebase
// MARK: - Protocol
protocol AnalyticsManagerProtocol {
func logScreen(name: String, path: String)
func logEvent(name: String)
func logEvent(
name: String,
action: String,
category: String,
params: [String: Any]?
)
}
// MARK: - Firebase
class FirebaseAnalyticsManager: AnalyticsManagerProtocol {
func logScreen(name: String, path: String) {
Analytics.logEvent(AnalyticsEventScreenView, parameters: [AnalyticsParameterScreenName: name])
var parameters = [
AnalyticsParameterScreenName: name
]
Analytics.logEvent(
AnalyticsEventScreenView,
parameters: parameters
)
}
func logEvent(name: String) {
var parameters = [
AnalyticsParameterValue: name
func logEvent(
name: String,
action: String,
category: String,
params: [String: Any]?
) {
var parameters: [String:Any] = [
"action": action,
"category": category,
]
if let supplementaryParameters = params {
parameters.merge(supplementaryParameters) { (origin, new) -> Any in
return origin
}
}
Analytics.logEvent(AnalyticsEventSelectContent, parameters: parameters)
Analytics.logEvent(
name,
parameters: parameters
)
}
}
@ -88,7 +125,9 @@ final class AnalyticsGeneratorTests: XCTestCase {
// MARK: - Methods
func setAnalyticsEnabled(_ enable: Bool) { isEnabled = enable }
func setAnalyticsEnabled(_ enable: Bool) {
isEnabled = enable
}
func configure() {
managers.append(FirebaseAnalyticsManager())
@ -96,32 +135,55 @@ final class AnalyticsGeneratorTests: XCTestCase {
private func logScreen(name: String, path: String) {
guard isEnabled else { return }
managers.forEach { manager in
manager.logScreen(name: name, path: path)
}
}
private func logEvent(name: String) {
private func logEvent(
name: String,
action: String,
category: String,
params: [String: Any]?
) {
guard isEnabled else { return }
managers.forEach { manager in
manager.logEvent(name: name)
manager.logEvent(
name: name,
action: action,
category: category,
params: params
)
}
}
// MARK: - section_one
func logScreenS1DefOne() {
logScreen(name: "s1 def one", path: "s1_def_one/")
logScreen(
name: "s1 def one",
path: ""
)
}
func logEventS1DefTwo() {
logEvent(name: "s1 def two")
logEvent(
name: "s1 def two",
action: "",
category: "",
params: []
)
}
// MARK: - section_two
func logScreenS2DefOne() {
logScreen(name: "s2 def one", path: "s2_def_one/")
logScreen(
name: "s2 def one",
path: ""
)
}
}
@ -137,20 +199,20 @@ final class AnalyticsGeneratorTests: XCTestCase {
// Given
let sectionOne = AnalyticsCategory(id: "section_one")
sectionOne.definitions = [
getAnalyticsDefinition(id: "s1_def_one", path: "s1_def_one/", name: "s1 def one", type: AnalyticsDefinition.TagType.screen, tags: ["ios", "iosonly"]),
getAnalyticsDefinition(id: "s1_def_two", path: "s1_def_two/", name: "s1 def two", type: AnalyticsDefinition.TagType.event, tags: ["ios", "iosonly"]),
getAnalyticsDefinition(id: "s1_def_one", path: "s1_def_one/", name: "s1 def one", type: .screen, tags: ["ios", "iosonly"]),
getAnalyticsDefinition(id: "s1_def_two", action: "test", category: "test", name: "s1 def two", type: .event, tags: ["ios", "iosonly"]),
]
let sectionTwo = AnalyticsCategory(id: "section_two")
sectionTwo.definitions = [
getAnalyticsDefinition(id: "s2_def_one", path: "s2_def_one/", name: "s2 def one", type: AnalyticsDefinition.TagType.screen, tags: ["ios","iosonly"]),
getAnalyticsDefinition(id: "s2_def_two", path: "s2_def_two/", name: "s2 def two", type: AnalyticsDefinition.TagType.event, tags: ["droid","droidonly"]),
getAnalyticsDefinition(id: "s2_def_one", path: "s2_def_one/", name: "s2 def one", type: .screen, tags: ["ios","iosonly"]),
getAnalyticsDefinition(id: "s2_def_two", action: "test", category: "test", name: "s2 def two", type: .event, tags: ["droid","droidonly"]),
]
let sectionThree = AnalyticsCategory(id: "section_three")
sectionThree.definitions = [
getAnalyticsDefinition(id: "s3_def_one", path: "s3_def_one/", name: "s3 def one", type: AnalyticsDefinition.TagType.screen, tags: ["droid","droidonly"]),
getAnalyticsDefinition(id: "s3_def_two", path: "s3_def_two/", name: "s3 def two", type: AnalyticsDefinition.TagType.event, tags: ["droid","droidonly"]),
getAnalyticsDefinition(id: "s3_def_one", path: "s3_def_one/", name: "s3 def one", type: .screen, tags: ["droid","droidonly"]),
getAnalyticsDefinition(id: "s3_def_two", action: "test", category: "test", name: "s3 def two", type: .event, tags: ["droid","droidonly"]),
]
// When
@ -163,14 +225,18 @@ final class AnalyticsGeneratorTests: XCTestCase {
let expect = """
// Generated by ResgenSwift.Analytics 1.2
import UIKit
import MatomoTracker
// MARK: - Protocol
protocol AnalyticsManagerProtocol {
func logScreen(name: String, path: String)
func logEvent(name: String)
func logEvent(
name: String,
action: String,
category: String,
params: [String: Any]?
)
}
// MARK: - Matomo
@ -186,7 +252,10 @@ final class AnalyticsGeneratorTests: XCTestCase {
init(siteId: String, url: String) {
debugPrint("[Matomo service] Server URL: \\(url)")
debugPrint("[Matomo service] Site ID: \\(siteId)")
tracker = MatomoTracker(siteId: siteId, baseURL: URL(string: url)!)
tracker = MatomoTracker(
siteId: siteId,
baseURL: URL(string: url)!
)
#if DEBUG
tracker.dispatchInterval = 5
@ -205,6 +274,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
func logScreen(name: String, path: String) {
guard !tracker.isOptedOut else { return }
guard let trackerUrl = tracker.contentBase?.absoluteString else { return }
let urlString = URL(string: "\\(trackerUrl)" + "/" + "\\(path)" + "iOS")
tracker.track(
view: [name],
@ -212,11 +282,17 @@ final class AnalyticsGeneratorTests: XCTestCase {
)
}
func logEvent(name: String) {
func logEvent(
name: String,
action: String,
category: String,
params: [String: Any]?
) {
guard !tracker.isOptedOut else { return }
tracker.track(
eventWithCategory: "category",
action: "action",
eventWithCategory: category,
action: action,
name: name,
number: nil,
url: nil
@ -237,40 +313,70 @@ final class AnalyticsGeneratorTests: XCTestCase {
// MARK: - Methods
func setAnalyticsEnabled(_ enable: Bool) { isEnabled = enable }
func setAnalyticsEnabled(_ enable: Bool) {
isEnabled = enable
}
func configure(siteId: String, url: String) {
managers.append(MatomoAnalyticsManager(siteId: siteId, url: url))
managers.append(
MatomoAnalyticsManager(
siteId: siteId,
url: url
)
)
}
private func logScreen(name: String, path: String) {
guard isEnabled else { return }
managers.forEach { manager in
manager.logScreen(name: name, path: path)
}
}
private func logEvent(name: String) {
private func logEvent(
name: String,
action: String,
category: String,
params: [String: Any]?
) {
guard isEnabled else { return }
managers.forEach { manager in
manager.logEvent(name: name)
manager.logEvent(
name: name,
action: action,
category: category,
params: params
)
}
}
// MARK: - section_one
func logScreenS1DefOne() {
logScreen(name: "s1 def one", path: "s1_def_one/")
logScreen(
name: "s1 def one",
path: "s1_def_one/"
)
}
func logEventS1DefTwo() {
logEvent(name: "s1 def two")
logEvent(
name: "s1 def two",
action: "test",
category: "test",
params: []
)
}
// MARK: - section_two
func logScreenS2DefOne() {
logScreen(name: "s2 def one", path: "s2_def_one/")
logScreen(
name: "s2 def one",
path: "s2_def_one/"
)
}
}
@ -286,20 +392,20 @@ final class AnalyticsGeneratorTests: XCTestCase {
// Given
let sectionOne = AnalyticsCategory(id: "section_one")
sectionOne.definitions = [
getAnalyticsDefinition(id: "s1_def_one", path: "s1_def_one/", name: "s1 def one", type: AnalyticsDefinition.TagType.screen, tags: ["ios", "iosonly"]),
getAnalyticsDefinition(id: "s1_def_two", path: "s1_def_two/", name: "s1 def two", type: AnalyticsDefinition.TagType.event, tags: ["ios", "iosonly"]),
getAnalyticsDefinition(id: "s1_def_one", path: "s1_def_one/", name: "s1 def one", type: .screen, tags: ["ios", "iosonly"]),
getAnalyticsDefinition(id: "s1_def_two", action: "test", category: "test", name: "s1 def two", type: .event, tags: ["ios", "iosonly"]),
]
let sectionTwo = AnalyticsCategory(id: "section_two")
sectionTwo.definitions = [
getAnalyticsDefinition(id: "s2_def_one", path: "s2_def_one/", name: "s2 def one", type: AnalyticsDefinition.TagType.screen, tags: ["ios","iosonly"]),
getAnalyticsDefinition(id: "s2_def_two", path: "s2_def_two/", name: "s2 def two", type: AnalyticsDefinition.TagType.event, tags: ["droid","droidonly"]),
getAnalyticsDefinition(id: "s2_def_one", path: "s2_def_one/", name: "s2 def one", type: .screen, tags: ["ios","iosonly"]),
getAnalyticsDefinition(id: "s2_def_two", action: "test", category: "test", name: "s2 def two", type: .event, tags: ["droid","droidonly"]),
]
let sectionThree = AnalyticsCategory(id: "section_three")
sectionThree.definitions = [
getAnalyticsDefinition(id: "s3_def_one", path: "s3_def_one/", name: "s3 def one", type: AnalyticsDefinition.TagType.screen, tags: ["droid","droidonly"]),
getAnalyticsDefinition(id: "s3_def_two", path: "s3_def_two/", name: "s3 def two", type: AnalyticsDefinition.TagType.event, tags: ["droid","droidonly"]),
getAnalyticsDefinition(id: "s3_def_one", path: "s3_def_one/", name: "s3 def one", type: .screen, tags: ["droid","droidonly"]),
getAnalyticsDefinition(id: "s3_def_two", action: "test", category: "test", name: "s3 def two", type: .event, tags: ["droid","droidonly"]),
]
// When
@ -312,7 +418,6 @@ final class AnalyticsGeneratorTests: XCTestCase {
let expect = """
// Generated by ResgenSwift.Analytics 1.2
import UIKit
import MatomoTracker
import Firebase
@ -320,7 +425,12 @@ final class AnalyticsGeneratorTests: XCTestCase {
protocol AnalyticsManagerProtocol {
func logScreen(name: String, path: String)
func logEvent(name: String)
func logEvent(
name: String,
action: String,
category: String,
params: [String: Any]?
)
}
// MARK: - Matomo
@ -336,7 +446,10 @@ final class AnalyticsGeneratorTests: XCTestCase {
init(siteId: String, url: String) {
debugPrint("[Matomo service] Server URL: \\(url)")
debugPrint("[Matomo service] Site ID: \\(siteId)")
tracker = MatomoTracker(siteId: siteId, baseURL: URL(string: url)!)
tracker = MatomoTracker(
siteId: siteId,
baseURL: URL(string: url)!
)
#if DEBUG
tracker.dispatchInterval = 5
@ -355,6 +468,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
func logScreen(name: String, path: String) {
guard !tracker.isOptedOut else { return }
guard let trackerUrl = tracker.contentBase?.absoluteString else { return }
let urlString = URL(string: "\\(trackerUrl)" + "/" + "\\(path)" + "iOS")
tracker.track(
view: [name],
@ -362,11 +476,17 @@ final class AnalyticsGeneratorTests: XCTestCase {
)
}
func logEvent(name: String) {
func logEvent(
name: String,
action: String,
category: String,
params: [String: Any]?
) {
guard !tracker.isOptedOut else { return }
tracker.track(
eventWithCategory: "category",
action: "action",
eventWithCategory: category,
action: action,
name: name,
number: nil,
url: nil
@ -378,15 +498,37 @@ final class AnalyticsGeneratorTests: XCTestCase {
class FirebaseAnalyticsManager: AnalyticsManagerProtocol {
func logScreen(name: String, path: String) {
Analytics.logEvent(AnalyticsEventScreenView, parameters: [AnalyticsParameterScreenName: name])
var parameters = [
AnalyticsParameterScreenName: name
]
Analytics.logEvent(
AnalyticsEventScreenView,
parameters: parameters
)
}
func logEvent(name: String) {
var parameters = [
AnalyticsParameterValue: name
func logEvent(
name: String,
action: String,
category: String,
params: [String: Any]?
) {
var parameters: [String:Any] = [
"action": action,
"category": category,
]
if let supplementaryParameters = params {
parameters.merge(supplementaryParameters) { (origin, new) -> Any in
return origin
}
}
Analytics.logEvent(AnalyticsEventSelectContent, parameters: parameters)
Analytics.logEvent(
name,
parameters: parameters
)
}
}
@ -403,41 +545,71 @@ final class AnalyticsGeneratorTests: XCTestCase {
// MARK: - Methods
func setAnalyticsEnabled(_ enable: Bool) { isEnabled = enable }
func setAnalyticsEnabled(_ enable: Bool) {
isEnabled = enable
}
func configure(siteId: String, url: String) {
managers.append(MatomoAnalyticsManager(siteId: siteId, url: url))
managers.append(
MatomoAnalyticsManager(
siteId: siteId,
url: url
)
)
managers.append(FirebaseAnalyticsManager())
}
private func logScreen(name: String, path: String) {
guard isEnabled else { return }
managers.forEach { manager in
manager.logScreen(name: name, path: path)
}
}
private func logEvent(name: String) {
private func logEvent(
name: String,
action: String,
category: String,
params: [String: Any]?
) {
guard isEnabled else { return }
managers.forEach { manager in
manager.logEvent(name: name)
manager.logEvent(
name: name,
action: action,
category: category,
params: params
)
}
}
// MARK: - section_one
func logScreenS1DefOne() {
logScreen(name: "s1 def one", path: "s1_def_one/")
logScreen(
name: "s1 def one",
path: "s1_def_one/"
)
}
func logEventS1DefTwo() {
logEvent(name: "s1 def two")
logEvent(
name: "s1 def two",
action: "test",
category: "test",
params: []
)
}
// MARK: - section_two
func logScreenS2DefOne() {
logScreen(name: "s2 def one", path: "s2_def_one/")
logScreen(
name: "s2 def one",
path: "s2_def_one/"
)
}
}