Add Manager + MatomoManager
Some checks failed
gitea-openium/resgen.swift/pipeline/head There was a failure building this commit

This commit is contained in:
2023-12-06 10:34:27 +01:00
parent 5fd680110c
commit 3e133773a9
9 changed files with 288 additions and 76 deletions

View File

@ -1,27 +1,70 @@
// Generated by ResgenSwift.Tags 1.2
import UIKit
import MatomoTracker
import Firebase
// MARK: - Protocol
protocol AnalyticsManager {
protocol AnalyticsManagerProtocol {
func logScreen(name: String, path: String)
func logEvent(name: String)
}
// MARK: - Matomo
class MatomoAnalyticsManager: AnalyticsManager {
func logScreen(name: String, path: String) {
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) {
guard !tracker.isOptedOut else { return }
tracker.track(
eventWithCategory: "category",
action: "action",
name: name,
number: nil,
url: nil
)
}
}
// MARK: - Firebase
class FirebaseAnalyticsManager: AnalyticsManager {
class FirebaseAnalyticsManager: AnalyticsManagerProtocol {
func logScreen(name: String, path: String) {
}
@ -31,23 +74,41 @@ class FirebaseAnalyticsManager: AnalyticsManager {
}
}
extension Tags {
// MARK: - Manager
class AnalyticsManager {
static var shared = AnalyticsManager()
// MARK: - Properties
let managers: [AnalyticsManager] = [MatomoAnalyticsManager(), FirebaseAnalyticsManager()]
var managers: [AnalyticsManagerProtocol] = []
// MARK: - ScreenTag
func configure(sideId: String, url: String) {
managers.append(MatomoAnalyticsManager(siteId: sideId, url: url))
func logEcranUn() {
managers.append(FirebaseAnalyticsManager())
FirebaseApp.configure()
}
private func logScreen(name: String, path: String) {
managers.forEach { manager in
manager.logScreen(name: name, path: path)
}
}
func logEcranDeux() {
private func logEvent(name: String) {
managers.forEach { manager in
manager.logEvent(name: name)
}
}
// MARK: - ScreenTag
func logScreenEcranUn(name: String, path: String) {
logScreen(name: name, path: path)
}
func logEventEcranDeux(name: String) {
logEvent(name: name)
}
}