WKTrackingData 0.0.9

WKTrackingData 0.0.9

kurt_wang 维护。



  • 作者
  • kurt_wang

WKTrackingData

基于 AOP 的全埋点库

使用 CocoaPods 安装

CocoaPods 是 Objective-C 的依赖管理器,可以自动化并简化使用 WKTrackingData 等第三方库的过程。您可以使用以下命令安装它

$ gem install cocoapods

Podfile

要使用 CocoaPods 将 WKTrackingData 集成到您的 Xcode 项目中,请将其指定在您的 Podfile

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'

target 'TargetName' do
pod 'WKTrackingData', '~> 0.0.2'
end

然后,运行以下命令

$ pod install

架构

WKTrackingDataManager

  • WKTrackingDataManager
  • WKTrackingDataViewPathHelper

面向切面编程(AOP)

  • UIApplication+AppDelegate 说明
  • UIApplication+UIControlEventPath
  • UIView+GestureTracking
  • UITableView+Tracking
  • UICollectionView+Tracking
  • UIViewController+Tracking
  • UIAlertAction+Tracking
  • UIAlertView+Tracking
  • UIActionSheet+Tracking

附加功能

  • NSObject+TrackingData

使用说明

WKTrackingDataManager

WKTrackingDataManager负责创建和管理所有追踪数据。

开启追踪

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    [kWKTrackingDataManager enableTracking];
    return YES;
}
​``` 

didFinishLaunchingWithOptions中开启事件追踪,如果在didFinishLaunchingWithOptions之后启用,可能导致部分事件无法覆盖。

// default is 30
kWKTrackingDataManager.memeryItemCount = 60;
kWKTrackingDataManager.uploadType = WKTrackingDataUploadDefault;

可以自定义内存中超过多少条事件触发上传,以及上传的类型。

上传追踪数据

kWKTrackingDataManager.uploadTrackingDataTrigger = ^(NSArray *trackingDataArray, void (^remove)(void)) {

  // do something
  ...

  // after upload success , remove uploaded tmp data
  remove();
};

在合适的地方进行数据上传操作,注意在上传成功后调用 remove(),将已上传数据从缓存中删除;如果未调用 remove(),己上传数据仍然存在于缓存中。

外交付的 trackingDataArray 数据如下:

[
	{
	    "event_id" = 96D071ADA1D70DF2805634108B754A10;
	    "event_path" = "#buttonClick:#UIButton#UIButton[0]#UIView[0]#ViewController#...#UIApplication#AppDelegate#currentTitle=Button#state=1#enabled=1#selected=0";
	    "event_time" = 1578558811346;
	}
]

添加额外参数

为了方便业务定制,可以给响应事件的控件添加额外的参数:

self.button.wk_trackingData = @{
    @"id" : @"4396",
    @"type" : @"event_type"
};

那么对外交付的 trackingDataArray 数据就会变为:

[
	{
	    "event_id" = xxxxxx;
	    "event_path" = "#buttonClick:#...#currentTitle=Button#state=1#enabled=1#selected=0#id=4396#type=event_type";
	    "event_time" = 1578558811346;
	}
]

对于不希望进行事件追踪的控件,可以通过 wk_ignoreTracking 进行忽略:

self.slider.wk_ignoreTracking = YES;

许可证

WKTrackingData 以 MIT 许可证发布。