分析 0.8.0

分析 0.8.0

测试已测试
语言语言 SwiftSwift
许可协议 MIT
发布最新发布2018年6月
SPM支持 SPM

Dal Rupnik 维护。



分析 0.8.0

分析

Issues on Waffle Swift Code Build Status Pod Version Pod Platform Pod License

分析是一个简单的轻量级分析包装器,用于 iOS Swift 项目。灵感来源于由 Orta Therox 开发的强大的 Objective-C 分析库 ARAnalytics。分析库不支持特定提供者的所有高级功能,但在设置完成后,它允许直接访问每个分析实例以提供更多功能。

目前可用的分析提供者

一组特殊的提供者

Blub Blub 的所有应用程序在生产中都会使用分析。

CocoaPods

仅通过 CocoaPods 提供 Analytical。要安装它,只需将以下行添加到 Podfile 中

!use_frameworks

pod 'Analytical'

出于性能原因,不建议安装超过两个提供者,您应指定要使用的提供者。

!use_frameworks

pod 'Analytical/Facebook'
pod 'Analytical/Flurry'
pod 'Analytical/Log'
pod 'Analytical/Mixpanel'
pod 'Analytical/Segment'

Log 子规范将安装一个简单的记录器,利用 os_log API 将跟踪调用输出到 Xcode 控制台。

Google Analytics / Firebase / Answers / AppFlyer

分析模块包含谷歌分析(Google Analytics)和Firebase提供者,但由于静态库与Swift动态框架之间存在不兼容性,因此必须手动安装。为此,需要进行以下5步操作(以下示例针对GA,但与Firebase相同):

  1. pod "Google/Analytics"pod "Analytical/Core"添加到目标项目的podfile中。
  2. 运行pod install命令。
  3. #import <Google/Analytics.h>添加到应用程序的桥接头文件中。
  4. GoogleProvider.swift文件从项目拖放到项目中。
  5. 使用Google跟踪ID实例化GoogleProvider类。

谷歌分析为每个事件设置4个参数:类别(Category)、动作(Action)、标签(Label)和值(Value)。当从分析模块调用时,类别将被设置为“default”,动作将是传递给调用的事件名称。标签和值为可选。

当谷歌更新其库以支持动态框架时,这些步骤将不再需要。

手动安装

如果您不使用CocoaPods,可以手动安装Analytical。所需的文件位于Analytical/Classes/Core目录中,因此您可以直接将它们拖放到项目中:Analytical.swiftAnalytics.swiftProvider.swift

除了核心文件之外,您还需要从Analytical/Classes/Provider目录中选择至少一个具体提供者。

请确保将特定提供者的所有附加依赖项正确链接到您的目标。

配置

为了分离分析代码,建议创建一个新的单独的Swift文件。

// Define Providers and create a global variable to be accessible from everywhere
let analytics = Analytics() <<~ GoogleProvider(trackingId: "<GA_TRACKING_ID>") <<~ MixpanelProvider(token: "<MIXPANEL_TOKEN>") <<~ FacebookProvider()

// Simple Enum for Events
public enum Track {
    public enum Event : String {
        case secondScreenTap  = "SecondScreenTap"
        case closeTap = "CloseTap"
    }
    
    public enum Screen : String {
        case first  = "first"
        case second = "second"
    }
}

//
// Add simple wrapper to use newly defined enums with Analytical
//
extension Analytical {
    func track(event: Track.Event, properties: Properties? = nil) {
        self.event(name: event.rawValue, properties: properties)
    }
    
    func track(screen: Track.Screen, properties: Properties? = nil) {
        self.screen(name: screen.rawValue, properties: properties)
    }
    
    func time(event: Track.Event, properties: Properties? = nil) {
        self.time(name: event.rawValue, properties: properties)
    }
    
    func finish(event: Track.Event, properties: Properties? = nil) {
        self.finish(name: event.rawValue, properties: properties)
    }
}

使用方式

一些分析提供者需要在应用程序完成启动时设置。请确保在application:didFinishLaunchingWithOptions方法中添加对setup的调用。

analytics.setup(with: application, launchOptions: launchOptions)

一些分析提供者需要记录应用程序激活(例如Facebook),所以您应该在applicationDidBecomeActive:方法中添加以下代码。

analytics.activate()

在这两种情况下,确保分析提供者在调用此方法之前已经被初始化。

跟踪事件和屏幕

// Calls using above wrapper
analytics.track(event: .secondScreenTap)
analytics.track(screen: .first)

//
// Original call with String
//
analytics.screen(name: Track.Screen.first.rawValue)

有关更多示例,请参阅示例项目。

跟踪属性

analytics.track(event: .closeTap, ["property" : 12.00])
analytics.track(screen: .first, ["property" : 12.00])

识别

如果您的应用程序已识别用户,应调用 identify 方法。如果您的用户是匿名用户,您可以使用 analytics.deviceId 属性来获取 UUID。第一次检索后,它将存储到 UserDefaults 并用于所有后续调用。如果您的应用程序与 iAd.framework 链接,它将返回 ASIdentifierManager.sharedManager().advertisingIdentifier 作为 String。分析工具不直接依赖于 iAd,而是使用运行时反射来检测它。它尊重用户隐私设置中的 限制广告跟踪 设置。

analytics.identify(analytics.deviceId)

常见问题

Carthage支持在哪里?

分析工具不支持 Carthage 提供程序,因为它依赖于多个外部框架。您可以像在手动安装部分描述的那样,将分析工具的核心作为框架使用并手动添加特定的提供程序。

联系

Dal Rupnik

许可

分析工具MIT 许可证下提供。更多信息请参阅 LICENSE 文件。