DLAnalytics
摘要分析框架支持
- 统一分析。
- 模块化、集中化分析。
- 更简单的新分析插件。
- 标准化跟踪方法和事件。
要求
- Xcode 12+
- Swift 5.0+
如何
设置
- 实现您的 AnalyticsService。
class ClientAnalyticsImpl: AnalyticsService {
// Specify whitelist events. Accept all events by default
var allowEvents: Set<String> {
Set<String>(arrayLiteral: "\(InputOTPEvent.self)", "\(CheckoutEvent.self)")
}
func setUserIdentifyProperty(_ property: [String : String]) {
// To support identify the user"
}
func reset() {
// reset all data related to the user e.g user logout"
}
func send(event: AnalyticsEvent) {
// Specific Analytics implementation e.g FireBaseAnalytics, MixPanel, etc.
print("### Send an event name: \(event.name), payload = \(event.payload)")
}
func send(event: AnalyticsEvent, from viewController: DLAnalytics.ViewController) {
print("### Send an event name: \(event.name), controller = \(ViewController.self)" )
}
}
- 声明您的自定义事件。
// MARK: - Support dynamic configurable payload for an event
struct InputOTPEvent: AnalyticsEvent {
private(set) var payload: [String: String]
var name: String {
return "InputOTP"
}
static func inputOTPSuccess() -> InputOTPEvent {
return InputOTPEvent(payload: ["OTPValid": "1"])
}
}
// MARK: - Enum support static configurable payload for an event
@frozen
enum CheckoutEvent: String, AnalyticsEvent {
case success = "Checkout_Success"
case error = "Checkout_Error"
internal var payload: [String: Any] {
return [:]
}
var name: String {
return rawValue
}
}
- 注册您的自定义 AnalyticsService。
let analyticsService = ClientAnalyticsImpl()
Analytics.registerAnalyticsService(analyticsService)
使用
/// Simulate tracking event InputOTP success
Analytics.send(event: InputOTPEvent.inputOTPSuccess())
Analytics.send(event: CheckoutEvent.success, from viewController: checkoutVC)
/// Output:
Send an event name: InputOTP, payload = ["OTPValid": "1"]
Send an event name: Checkout_Success, controller = CheckoutViewController
安装
有三种方式安装DLAnalytics
CocoaPods
只需将以下内容添加到你的项目Podfile
pod 'DLAnalytics', '~> 2.0'
Carthage
将以下内容添加到Cartfile
github "lengocduy/DLAnalytics" ~> 2.0
Swift 包管理器
创建一个Package.swift
文件
// swift-tools-version:5.0
import PackageDescription
let package = Package(
name: "TestDLAnalytics",
dependencies: [
.package(url: "https://github.com/lengocduy/DLAnalytics.git", from: "2.0.0"),
],
targets: [
.target(
name: "TestDLAnalytics",
dependencies: ["DLAnalytics"])
]
)
架构
交互流程
许可协议
DLAnalytics遵循MIT许可协议。有关更多信息,请参阅LICENSE文件。