ClickstreamLib 2.0.24

ClickstreamLib 2.0.24

Rishav_GuptaAbhijeet Mallick维护。



 
依赖项
SwiftProtobuf~> 1.10
ReachabilitySwift>= 5.0.0
GRDB.swift~> 6.7
 

  • 作者:
  • Gojek

欢迎使用Clickstream!

Clickstream是一个不依赖于事件的真实时间数据摄取平台。Clickstream允许应用维护长期连接,以实时发送数据。

“Clickstream”一词是用户在网站或移动应用中点击时留下的数字面包屑的轨迹。它包含了宝贵的客户信息,对商业来说是很有价值的,其分析和利用已成为强大的数据来源。

要了解更多关于Clickstream的信息,您可以阅读我们的Medium帖子

Clickstream为摄取平台提供端到端解决方案。关于基础设施设置,请查阅raccoon

架构

Clickstream Architecture

移动库架构

Clickstream HLD

关键特性

  • 简单轻量

  • 远程可配置

  • 支持实时数据

  • 支持多个QoS(服务质量)级别(QoS0和QoS1)

  • 类型安全且可重用的模式

  • 高效的数据负载

  • 内置数据聚合

安装

CocoaPods

CocoaPods 是 Cocoa 项目的依赖管理器。有关使用和安装说明,请访问他们的网站。要使用 CocoaPods 将 Clickstream 集成到 Xcode 项目中,请在 Podfile 中指定它。

pod 'Clickstream'

Swift Package Manager

SPM 是用于自动分发 Swift 代码的工具,并集成到了 Swift 编译器。一旦您设置了 Swift 包,将 Clickstream 添加为依赖就像将它添加到 Package.swift 的 dependencies 值一样简单。

dependencies: [
    .package(url: "https://github.com/gojek/clickstream-ios.git", .upToNextMajor(from: "1.0.0"))
]

使用

初始化

class SampleClass {

    private var clickstream: ClickStream?
    
    func initialiseClickstream() {
        let url = URL(string: "ws://mock.clickstream.com/events")!
        let headers = ["Authorization": "Bearer dummy-token"]
        let networkConfigs = NetworkConfigurations(baseURL: url, headers: headers)
        let constraints = ClickstreamConstraints(maxConnectionRetries: 5)
        let classification = ClickstreamEventClassification()
        self.clickstream = try? Clickstream.initialise(networkConfiguration: networkConfigs,
        constraints: constraints,
        eventClassification: classification)
    }
}

点击流约束

包含点击流的配置。这些约束可以实现对库行为的细粒度控制,如重试之间的时长、应用进入后台时的刷新事件等。

描述 变量 类型 默认值
连接重试的最大次数 maxConnectionRetries 整型 30
两次连续重试之间最大重试间隔(秒) maxConnectionRetries 整型 30
连接重试的最大次数 maxConnectionRetryInterval 时间间隔 30
网络断开后最大重试间隔(秒) maxRetryIntervalPostPrematureDisconnection 时间间隔 30
网络断开后最大重试次数 maxRetriesPostPrematureDisconnection 整型 10
最大 Ping 间隔(秒) maxPingInterval 时间间隔 15
此数组包含所有优先级配置 priorities [Priority] [Priority()]
此标志确定是否在应用移动到后台时刷新包含的事件 flushOnBackground 布尔型 false
连接终止的等待时间 connectionTerminationTimerWaitTime 时间间隔 8
批处理超时的最大重试间隔 maxRequestAckTimeout 时间间隔 6
每批允许的最大重试次数 maxRetriesPerBatch 整型 20
磁盘和内存上的最大重试缓存大小(字节) maxRetryCacheSize 字节 5000000
连接重试时长 connectionRetryDuration 时间间隔 3
优先级

保存ClickStreamConstraints中定义的优先级

描述 变量 类型 默认值
服务质量(QoS) 优先级 整型 0
标识符(例如:"realTime" / "standard") 标识符 字符串 "realTime"
此优先级的最大批量大小(以字节为单位) maxBatchSize 字节 50000
两个批次之间的最大时间间隔(以秒为单位) maxTimeBetweenTwoBatches 时间间隔 10
此优先级的最大缓存大小(以字节为单位) maxCacheSize 字节 5000000

ClickStreamEventClassification

保存ClickStream的事件分类

描述 变量 类型 默认值
保存所有的事件类型 eventTypes 事件分类器 [EventClassifier(identifier: "realTime", eventNames: []), EventClassifier(identifier: "instant", eventNames: [])]

推送事件

将事件推送到ClickStream SDK

private func trackClickstreamEvent(message: Message) {
    self.clickStream?.trackEvent(with: message)
}

销毁实例

销毁Clickstream的实例,例如当用户从应用中登出时可以调用。

ClickStream.destroy()

贡献

Clickstream 的开发是在 GitHub 上公开进行的,我们感谢社区为修复错误和改进所做的贡献。以下介绍了如何参与改进 Clickstream。

阅读我们的CONTRIBUTING-GUIDE.md 了解我们的开发过程、如何提出错误修复和改进建议,以及如何构建和测试 Clickstream 的更改。

鸣谢

本项目的存在得益于所有贡献者。

许可协议

MIT License

Copyright (c) 2022 GO-JEK Tech

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.