fix: Use category and action if not matomo

This commit is contained in:
Loris Perret 2024-03-07 16:08:21 +01:00
parent 09556ba6e0
commit 23bf3c3a82
4 changed files with 20 additions and 78 deletions

View File

@ -1,6 +1,5 @@
// Generated by ResgenSwift.Analytics 1.2 // Generated by ResgenSwift.Analytics 1.2
import MatomoTracker
import FirebaseAnalytics import FirebaseAnalytics
// MARK: - Protocol // MARK: - Protocol
@ -15,72 +14,11 @@ protocol AnalyticsManagerProtocol {
) )
} }
// MARK: - Matomo
class MatomoAnalyticsManager: AnalyticsManagerProtocol {
// MARK: - Properties
private var tracker: MatomoTracker
// MARK: - Init
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)!
)
#if DEBUG
tracker.dispatchInterval = 5
#endif
#if DEBUG
tracker.logger = DefaultLogger(minLevel: .verbose)
#endif
debugPrint("[Matomo service] Configured with content base: \(tracker.contentBase?.absoluteString ?? "-")")
debugPrint("[Matomo service] Opt out: \(tracker.isOptedOut)")
}
// MARK: - Methods
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],
url: urlString
)
}
func logEvent(
name: String,
action: String,
category: String,
params: [String: Any]?
) {
guard !tracker.isOptedOut else { return }
tracker.track(
eventWithCategory: category,
action: action,
name: name,
number: nil,
url: nil
)
}
}
// MARK: - Firebase // MARK: - Firebase
class FirebaseAnalyticsManager: AnalyticsManagerProtocol { class FirebaseAnalyticsManager: AnalyticsManagerProtocol {
func logScreen(name: String, path: String) { func logScreen(name: String, path: String) {
var parameters = [ let parameters = [
AnalyticsParameterScreenName: name as NSObject AnalyticsParameterScreenName: name as NSObject
] ]
@ -97,8 +35,9 @@ class FirebaseAnalyticsManager: AnalyticsManagerProtocol {
params: [String: Any]? params: [String: Any]?
) { ) {
var parameters: [String:NSObject] = [ var parameters: [String:NSObject] = [
AnalyticsParameterItemName: name.replacingOccurrences(of: " ", with: "_") as NSObject,
AnalyticsParameterItemCategory: category as NSObject,
"action": action as NSObject, "action": action as NSObject,
"category": category as NSObject,
] ]
if let supplementaryParameters = params { if let supplementaryParameters = params {
@ -114,7 +53,7 @@ class FirebaseAnalyticsManager: AnalyticsManagerProtocol {
} }
Analytics.logEvent( Analytics.logEvent(
name.replacingOccurrences(of: [" "], with: "_"), AnalyticsEventSelectContent,
parameters: parameters parameters: parameters
) )
} }
@ -137,13 +76,7 @@ class AnalyticsManager {
isEnabled = enable isEnabled = enable
} }
func configure(siteId: String, url: String) { func configure() {
managers.append(
MatomoAnalyticsManager(
siteId: siteId,
url: url
)
)
managers.append(FirebaseAnalyticsManager()) managers.append(FirebaseAnalyticsManager())
} }
@ -178,7 +111,7 @@ class AnalyticsManager {
func logScreenS1DefOne(title: String) { func logScreenS1DefOne(title: String) {
logScreen( logScreen(
name: "s1 def one \(title)", name: "s1 def one \(title)",
path: "s1_def_one/\(title)" path: ""
) )
} }
@ -199,7 +132,7 @@ class AnalyticsManager {
func logScreenS2DefOne() { func logScreenS2DefOne() {
logScreen( logScreen(
name: "s2 def one", name: "s2 def one",
path: "s2_def_one/" path: ""
) )
} }
} }

View File

@ -54,7 +54,7 @@ FORCE_FLAG="$1"
# Analytics # Analytics
swift run -c release ResgenSwift analytics $FORCE_FLAG "./Tags/sampleTags.yml" \ swift run -c release ResgenSwift analytics $FORCE_FLAG "./Tags/sampleTags.yml" \
--target "matomo firebase" \ --target "firebase" \
--extension-output-path "./Tags/Generated" \ --extension-output-path "./Tags/Generated" \
--extension-name "Analytics" \ --extension-name "Analytics" \
--extension-suffix "GenAllScript" --extension-suffix "GenAllScript"

View File

@ -32,7 +32,7 @@ enum FirebaseGenerator {
private static var logScreen: String { private static var logScreen: String {
""" """
func logScreen(name: String, path: String) { func logScreen(name: String, path: String) {
var parameters = [ let parameters = [
AnalyticsParameterScreenName: name as NSObject AnalyticsParameterScreenName: name as NSObject
] ]
@ -54,8 +54,9 @@ enum FirebaseGenerator {
params: [String: Any]? params: [String: Any]?
) { ) {
var parameters: [String:NSObject] = [ var parameters: [String:NSObject] = [
AnalyticsParameterItemName: name.replacingOccurrences(of: " ", with: "_") as NSObject,
AnalyticsParameterItemCategory: category as NSObject,
"action": action as NSObject, "action": action as NSObject,
"category": category as NSObject,
] ]
if let supplementaryParameters = params { if let supplementaryParameters = params {
@ -71,7 +72,7 @@ enum FirebaseGenerator {
} }
Analytics.logEvent( Analytics.logEvent(
name.replacingOccurrences(of: [" "], with: "_"), AnalyticsEventSelectContent,
parameters: parameters parameters: parameters
) )
} }

View File

@ -139,6 +139,14 @@ class AnalyticsFileParser {
} }
definition.action = action definition.action = action
} else {
if let category = event.category {
definition.category = category
}
if let action = event.action {
definition.action = action
}
} }
return definition return definition