描述
一个轻量级的分析包装器,旨在使分析实现和调试尽可能简单和高效——特别是对于使用多个分析提供商的项目。
要求
Simcoe 以 Swift 编写,并使用动态框架来实现。因此,这个库需要
- Xcode 8 或更高版本
- iOS 8 或更高版本
安装
Simcoe 由一个核心框架和一些针对不同分析提供商的额外插件组成。
CocoaPods
Simcoe 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile
文件中即可
pod "Simcoe"
这会为您提供一个带有默认调试功能的SDK,无需额外设置。然而,您将负责创建分析提供者。Simcoe自带多种提供者实现,可以直接使用,这可以减少您启动所需的折工作。只需在Podfile中包含相关子规格;例如,如果您的项目使用Adobe Omniture跟踪分析,只需在项目的Podfile中指定子规格
pod 'Simcoe', :subspecs => ['Adobe']
Carthage
您也可以使用Carthage将Simcoe添加到您的项目中。将以下内容添加到您的Cartfile
github "prolificinteractive/Simcoe"
内置提供者
Simcoe出厂时自带多种提供者的默认实现
使用方法
使用Simcoe很简单。在您应用程序的生命周期开始时,只需开始使用您想使用的提供者运行Simcoe
Simcoe.run(with: Adobe())
如果还不知道您的项目将要使用哪个分析工具,那也不要紧!只需不带参数启动Simcoe
Simcoe.run()
默认情况下,如果没有提供任何提供者,Simcoe将自动创建一个默认提供者作为占位符。这样,您就可以在不带提供者的情况下实现、跟踪和调试分析。然后,当您的提供者发生变化时,只需更新您的run()
调用并提供提供者,这样就完成了!
为了方便使用多个提供者时的调试,Simcoe包含了一些更新控制台日志信息的方法
- verbose
- simple
- none
默认情况下,Simcoe会详细记录控制台的所有输出(verbose),为每个指定的提供者提供一行输出。simple将无论提供者数量如何都输出每项内容的一行,而none将禁用所有控制台日志。要更新outputOption,只需调用(在run()
命令之后更新此属性)
Simcoe.engine.tracker.outputOption = .simple
Simcoe提供了一组为每个主要的分析操作提供的基础函数调用,为所有的分析跟踪提供了一个一致的API。例如,要跟踪页面浏览量
Simcoe.track(pageView: "主页")
这就完成了!Simcoe 将自动调用所有您的分析提供商,并请求他们记录页面浏览。无论使用哪种提供商,此方法都是统一和一致的。
创建分析提供商
虽然 Simcoe 集成了某些分析实现,但有时您可能需要自行处理。Simcoe API 使任何人都可以轻松进行。
分析跟踪
首先,所有分析跟踪器都实施以下基协议:"AnalyticsTracking
"。此协议是 Simcoe 将任何对象视为有效分析跟踪器的唯一协议。此协议允许您为您的提供商定义用户可读的名称,以及开始或处理您的跟踪器所需的任何设置工作。
虽然仅实现此协议就足以使您的对象成为有效的分析跟踪器,但您可以在此协议上做的事情并不多。这是因为 Simcoe 利用一系列不同的协议,每个协议都定义了处理该 API 事件所需的功能。这些协议有
购物车记录
结账跟踪
错误记录
事件跟踪
终身价值跟踪
位置跟踪
页面浏览跟踪
购买跟踪
超级属性跟踪
定时事件跟踪
用户属性跟踪
视图详细记录
因此,为了让您的分析提供商能够在 Simcoe 框架中处理页面浏览,您的提供商应该实施 "PageViewTracking
" 协议。此即插即用的 API 允许您非常细粒度地定义您希望您的提供商处理的内容。如果您的提供商只需要实现位置跟踪而不需要其他内容,那么您只需实现 "LocationTracking
" 协议(当然包括 "AnalyticsTracking
" 协议);所有其他协议都是可选的。这允许您完全自定义对象如何响应 Simcoe。
其他跟踪
每个分析实现都不同,Simcoe 并不期望成为所有分析实现的终极方案。那么,如果需要跟踪 SDK 基本不包含的内容怎么办?
最终,所有在 Simcoe
中的跟踪调用都会转发到默认的单例:Simcoe.engine
,该单例公开提供了一个跟踪方法:write
。这个函数接受一个包含所有对象的数组、事件的描述以及一个闭包来实际执行写入事件。使用这个方法可以让您在继续利用 Simcoe 框架提供的强大的调试和日志工具的同时,处理您可能需要的任何类型的定制分析工作。
例如,假设您正在使用 Sqweeblytics 跟踪应用程序中的 Sqweebles 数量。这是一种独特的操作,但它是重要的分析数据。
您只需将 Sqweeblytics 提供者包装在 Simcoe 引擎中即可。
Simcoe.engine.write(toProviders: [Sqweeblytics()],
description: "Tracks all of the user's sqweebles.",
action: { sqweeblytics in
sqweeblytics.track()
return .Success
})
就这样!您现在可以正确跟踪 sqweebles,同时继续利用 Simcoe 引擎。
为 Simcoe 做贡献
要报告错误或增强请求,请在该标题下提交问题。
如果您想为项目做贡献,请fork此仓库并提交拉取请求。代码贡献应遵循在 Prolific Swift 风格指南中指定的标准。
许可证
版权所有 (c) 2017 Prolific Interactive
Simcoe 由 Prolific Interactive 维护和赞助。它可以在 LICENSE 文件中指定的条款下再次分发。