Swiftalytics 0.4

Swiftalytics 0.4

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2016年9月
SPM支持SPM

Alek Åström维护。



Swiftalytics允许您使用面向切面编程,在单个文件中用简洁的一行代码声明应用程序中所有分析视图跟踪!

  • 支持静态和动态视图跟踪
    • 为您自己的闭包分配正确类型推断的类型
  • 灵活跟踪(不必强制使用viewDidAppear)
  • ARAnalytics配合使用效果极佳
func setupScreenTracking() {
    AuthorsViewController.self  >>   "Authors (start)"
    QuoteViewController.self    >> { "Quote: "+$0.author.name }
    NewQuoteViewController.self >>   .navigationTitle
    RandomQuoteViewController.computedPageName<<
}

extension UIViewController {

    // Swizzle viewDidAppear and report to your favorite analytics service
    func swizzled_viewDidAppear(animated: Bool) {
        if let name = Swiftalytics.trackingName(for: self) {
            ARAnalytics.pageView(name)
            println("Tracked view controller: "+name)
        }
    }
}

Swift版本

  • Swift 3.0及以后的Swiftalytics使用Swift 3.0
  • Swift 2.3的框架使用Swift 2.3
  • Swift 2.2使用Swift 2.2

安装

嵌入式框架需要最低部署目标为iOS 8或OS X Mavericks。

要使用针对iOS 7的项目上的Swiftalytics,您必须直接在项目中包含源文件。

使用

声明跟踪名称

使用setTrackingName(for:)函数为特定视图控制器类型声明跟踪名称。该函数具有针对静态和动态类型的多个不同类型签名。

// Static
Swiftalytics.setTrackingName(for: MasterViewController.self, name: "Start view")

// Dynamic with closure
Swiftalytics.setTrackingNameForViewController(for: DetailViewController.self) { "Detail: \($0.dataObject.name)" }

// Dynamic using navigation item title
Swiftalytics.setTrackingNameForViewController(for: SettingsViewController.self, trackingType:.navigationTitle)

// Dynamic with function
Swiftalytics.setTrackingNameForViewController(for: OtherViewController.functionProducingAString)

检索跟踪名称

使用trackingName(for:)函数检索已为特定视图控制器声明的名称。在使用动态跟踪时,当调用此函数时将计算该视图控制器的跟踪名称。

向分析提供商报告视图跟踪

extension UIViewController {
    func viewDidAppear(animated: Bool) {
        if let name = Swiftalytics.trackingName(for: self) {
            // Report to your analytics service
            println("Tracked view controller: "+name)
        }
    }
}

通过扩展UIViewController,您可以选择在视图生命周期中将分析事件发送到供应商的SDK或进行内部日志记录。《a href="https://github.com/orta/ARAnalytics">ARAnalytics强烈建议使用它将应用程序与选择的提供商解耦。

使用自定义操作符的推荐设置

推荐使用自定义运算符来使用Swiftalytics,以实现简洁的领域特定语言。由于运算符重载在Swift中可能导致污染,因此框架中没有声明任何运算符。相反,建议创建一个用于视图跟踪的Swift文件,并在这个文件中使用私有作用域运算符,并在其中声明所有页面名称。

postfix operator <<
private postfix func <<<T: UIViewController>(trackClassFunction: @escaping ((T) -> () -> String)) {
    Swiftalytics.setTrackingName(for: trackClassFunction)
}

private func >> <T: UIViewController>(left: T.Type, right: @autoclosure () -> String) {
    Swiftalytics.setTrackingName(for: left, name: right)
}
private func >> <T: UIViewController>(left: T.Type, right: TrackingNameType) {
    Swiftalytics.setTrackingName(for: left, trackingType: right)
}
private func >> <T: UIViewController>(left: T.Type, right: @escaping ((T) -> String)) {
    Swiftalytics.setTrackingName(for: left, nameFunction: right)
}

请参阅演示项目中的ScreenTracking.swift,以获取建议的配置。

示例

包含的示例项目展示了一个推荐视图跟踪设置,其中包含静态和动态跟踪。

许可证

Swiftalytics遵循MIT许可证。有关更多信息,请参阅LICENSE文件。