diff --git a/OpenEdX/DI/AppAssembly.swift b/OpenEdX/DI/AppAssembly.swift index e0e6cf9d..221ceade 100644 --- a/OpenEdX/DI/AppAssembly.swift +++ b/OpenEdX/DI/AppAssembly.swift @@ -207,8 +207,8 @@ class AppAssembly: Assembly { FirebaseAnalyticsService() }.inObjectScope(.container) - container.register(FullStoryAnalyticsService.self) { r in - FullStoryAnalyticsService() + container.register(FullStoryAnalyticsService.self) { _, firebaseEnabled in + FullStoryAnalyticsService(firebaseEnabled) }.inObjectScope(.container) container.register(PipManagerProtocol.self) { r in diff --git a/OpenEdX/Managers/AnalyticsManager/AnalyticsManager.swift b/OpenEdX/Managers/AnalyticsManager/AnalyticsManager.swift index 344b4035..92b19233 100644 --- a/OpenEdX/Managers/AnalyticsManager/AnalyticsManager.swift +++ b/OpenEdX/Managers/AnalyticsManager/AnalyticsManager.swift @@ -56,7 +56,10 @@ class AnalyticsManager: AuthorizationAnalytics, } if config.fullStory.enabled, - let fullStoryService = Container.shared.resolve(FullStoryAnalyticsService.self) { + let fullStoryService = Container.shared.resolve( + FullStoryAnalyticsService.self, + argument: config.firebase.enabled + ) { analyticsServices.append(fullStoryService) } diff --git a/OpenEdX/Managers/FullStoryAnalyticsService/FullStoryAnalyticsService.swift b/OpenEdX/Managers/FullStoryAnalyticsService/FullStoryAnalyticsService.swift index 69b594cd..58e72fdb 100644 --- a/OpenEdX/Managers/FullStoryAnalyticsService/FullStoryAnalyticsService.swift +++ b/OpenEdX/Managers/FullStoryAnalyticsService/FullStoryAnalyticsService.swift @@ -8,8 +8,16 @@ import Foundation import Core import FullStory +import FirebaseCrashlytics -class FullStoryAnalyticsService: AnalyticsService { +class FullStoryAnalyticsService: NSObject, AnalyticsService, FSDelegate { + + var firebaseEnabled: Bool + init(_ firebaseEnabled: Bool) { + self.firebaseEnabled = firebaseEnabled + super.init() + FS.delegate = self + } func identify(id: String, username: String?, email: String?) { FS.identify(id, userVars: ["displayName": id]) @@ -22,4 +30,13 @@ class FullStoryAnalyticsService: AnalyticsService { func logScreenEvent(_ event: Core.AnalyticsEvent, parameters: [String: Any]?) { FS.page(withName: event.rawValue, properties: parameters).start() } + + func fullstoryDidStartSession(_ sessionUrl: String) { + if firebaseEnabled { + Crashlytics.crashlytics().setCustomValue( + sessionUrl, + forKey: "fullstory_session_url" + ) + } + } }