DTTracker 0.0.1

DTTracker 0.0.1

许可证 MIT
发布最后发布2017年1月

liuyunclouder 维护。



DTTracker 0.0.1

  • liuyunclouder

DTTracker 是袋鼠云官方 iOS 数据埋点 SDK。

如何使用

  1. 注册袋鼠云云日志帐号
  2. 创建上传接口和 token 信息
  3. 安装 DTTracker SDK,并使用上传接口和 token 初始化

安装

DTTracker 支持使用 CocoaPods、Carthage 和手工引入。

手工引入

克隆本仓库到本地,直接将 DTTracker.framework 拖拽到工程目录下,同时添加 libsqlite3 和 libz.1.2.5

版本支持

支持 iOS 8.0 及以上版本

使用说明

上传接口及 token 信息

  1. 登录后进入  https://log.dtstack.com/upload.html#/http 
  2. 根据指示选择解析规则(解析规则列表 允许自定义规则),填写 appname 和 tag,保存好填写的 appname,这就是后续初始化时需要的 token,点击下一步
  3. 选择接口的协议类型,建议选择 https,这样更好地保护您的数据安全,然后复制接口并保存

初始化

#import <DTTracker/DTTracker.h>

DTTrackManager *trackMangar = [DTTrackManager sharedInstanceWithServerURL:@"your_upload_url" token:@"your_app_token" debugMode:DTTrackerDebugAndTrack];

your_upload_url 为步骤 3 中的接口地址,your_app_token 为步骤 2 中的 appname,发布时 debugMode 一定要设置为 DTTrackerDebugOff。

运行模式

/**
 运行模式
 */
typedef NS_ENUM(NSInteger, DTTrackerDebugMode) {
    /** 关闭DEBUG模式,线上环境使用 */
    DTTrackerDebugOff,
    /** DEBUG模式,但该模式下发送的数据仅用于调试,不进行数据导入 */
    DTTrackerDebugOnly,
    /** DEBUG模式,并将数据导入到云日志中 */
    DTTrackerDebugAndTrack
};

埋点

埋点记录将根据记录条数和时间选择性地上传,同时也会在 APP 进入后台时执行上传任务,在不影响用户体验的同时尽量保证数据的实时性。

普通埋点
[[DTTrackManager sharedInstance] trackEvent:@"test plain track" withProperties:@{ @"k1":@"v1"}];
事务埋点
NSString *transactionID = [[DTTrackManager sharedInstance] trackTransactionBeginWithEvent:@"test transaction track" withProperties:@{
                                                                                                 @"test": @"y"
                                                                                                 }];

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        [[DTTrackManager sharedInstance] trackCommitWithTransactionID: transactionID];
    });
自动埋点

在 APP 启动和进入后台,以及页面载入和退出时,会自动生成埋点记录,见 DTAutoTrackProtocol。

trackMangar.autoTrack = YES;
crash 埋点

如果设置了 trackCrash 为 YES,DTTracker 会把崩溃堆栈信息也记录下来。

trackMangar.trackCrash = YES;
UIControl 埋点
self.btn.dt_eventInfo = @{
                           @"event": @"btn clicked",
                           @"bus": @"311"
                           };
H5

如果同时使用我们的 JS SDK,需要在以下两个方法里添加几行代码,方便 Native 和 H5 通信。

UIWebView:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    if ([[DTTrackManager sharedInstance] shouldInterceptRequest:request inWebView:webView withProperties:nil]) {
        return NO;
    }
    return YES;
}

WKWebView:

- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
    if ([[DTTrackManager sharedInstance] shouldInterceptRequest:navigationAction.request inWebView:webView withProperties:nil]) {
        decisionHandler(WKNavigationActionPolicyCancel);
        return;
    }

    decisionHandler(WKNavigationActionPolicyAllow);
}

更多用法请查阅头文件

许可证

MIT