Analytics System
AnalyticsSystem
依赖的主要思想是为您的应用提供轻量级API来配置多个提供者。
提供者
AnalyticsSystem
可以帮助您通过10行代码轻松添加多个提供者。已经内置了以下提供者
- Mixpanel
- Bugsnag
- Firebase
使用方法
安装
要将AnalyticsSystem
添加到基于Swift Package Manager的项目中,添加以下内容:
.package(url: "https://github.com/AndrewKochulab/AnalyticsSystem.git")
Cocoapods
pod 'AnalyticsSystem/Core'
您也可以导入一些提供者,比如
pod 'AnalyticsSystem/Bugsnag'
pod 'AnalyticsSystem/Facebook'
示例
配置分析系统
import AnalyticsSystem
let analyticsSystem = AnalyticsSystem()
try analyticsSystem.configureTrackers { cfg in
let commonEventsFactory = AnalyticsTrackerEventsFactory()
try cfg.addTracker(MixpanelTracker(apiToken: "your_api_token", eventsFactory: commonEventsFactory))
try cfg.addTracker(BugsnagTracker(apiToken: "your_api_token", eventsFactory: commonEventsFactory))
let fbTracker = FacebookTracker(eventsFactory: FacebookTrackerEventsFactory())
fbTracker.isEventAvailable = { eventType in
eventType == .signUp
}
try cfg.addTracker(fbTracker)
}
analyticsSystem.initialize()
创建事件
enum RegistrationEventMethod: String {
case email = "Email",
facebook = "Facebook",
twitter = "Twitter"
}
struct SignUpEvent: AnalyticsEvent {
let userId: String
let method: RegistrationEventMethod
var type: AnalyticsEventType { .signUp }
init(
userId: String,
method: RegistrationEventMethod
) {
self.userId = userId
self.method = method
}
}
final class AnalyticsTrackerEventsFactory {
func signUpEventBuilder(event: SignUpEvent) -> AnalyticsEventBuilder {
.init(
name: "sign_up",
attributes: [
"user_id" : event.userId,
"method" : event.method.rawValue
]
)
}
}
跟踪事件
analyticsSystem.track(
event: SignUpEvent(
userId: "user_identifier",
method: .email
)
)
analyticsSystem.track(event: CrashRecoveryEvent())
analyticsSystem.track(event: OnboardingFinishEvent())
针对特定供应商更新构建器
final class FacebookTrackerEventsFactory: AnalyticsTrackerEventsFactory {
override func signUpEventBuilder(event: SignUpEvent) -> AnalyticsEventBuilder {
.init(
name: AppEvents.Name.completedRegistration.rawValue,
attributes: [
"user_id" : event.userId.rawValue,
AppEvents.ParameterName.registrationMethod.rawValue : event.method.rawValue
]
)
}
}
创建自己的分析供应商
import AnalyticsSystem
import FirebaseAnalytics
import FirebaseCrashlytics
final class FirebaseTracker: FactoryAnalyticsTracker<AnalyticsTrackerEventsFactory> {
private var crashlytics: Crashlytics {
.crashlytics()
}
override func initialize(with options: LaunchOptions? = nil) {
FirebaseApp.configure()
}
override func setEnabled(_ isEnabled: Bool) {
Analytics.setAnalyticsCollectionEnabled(isEnabled)
}
override func logIn(user: AnalyticsUser) {
Analytics.setUserID(user.id)
crashlytics.setUserID(user.id)
}
override func logOut(user: AnalyticsUser) {
Analytics.setUserID(nil)
crashlytics.setUserID("")
}
override func track(eventBuilder: AnalyticsEventBuilder) {
Analytics.logEvent(
eventBuilder.name,
parameters: eventBuilder.attributes
)
}
}
许可证
本代码分发适用MIT许可证。有关更多信息,请参阅LICENSE
文件。