WDCAnalysis 1.0.3

WDCAnalysis 1.0.3

WDCloud 维护。



 
依赖关系
AFNetworking/Reachability>= 0
WDCSqlite>= 0
 

  • 作者
  • xiongwei

WDCAnalysis

CI Status Version License Platform

伟东云统计 SDK 使用说明

提示:所有的接口在 WDCAnalysisSDK.h 文件中。

一.sdk初始化

application:didFinishLaunchingWithOptions: 方法中进行初始化

  • 1.设置 debug 模式(统计记录不上传服务器、打印日志。release 环境需要去除。)
  • 2.设置 accessKey(由后台分配)
  • 3.设置 userId(统计记录的 userId,如果不需要统计 userId 可以不设置。如果除了 userId 外还需要统计 locationCode,可以调用 setupUserId:locationCode: 方法设置)
  • 4.页面统计初始化(如果不使用页面统计可以不设置)
  • 5.崩溃统计初始化(如果不使用崩溃统计可以不设置)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
    // Override point for customization after application launch.
    [self setupAnalysis];
    return YES;
}

/// 统计sdk设置
- (void)setupAnalysis{
    /// 设置为调试模式(统计记录不上传服务器,打印日志)
//    [WDCAnalysisSDK setupDebug:YES];
    
    /// 设置你的accessKey
    [WDCAnalysisSDK setupAccessKey:@""];
    /// 设置userId (统计记录/崩溃记录的userId)
    [WDCAnalysisSDK setupUserId:[WDCUser sharedUser].userId];
    /// 设置页面统计的控制器类名与页面名称、页面Id的对应关系
    [WDCAnalysisSDK setupMapForClassNameAndPageInfo:@{
                                                      @"WDCHomeViewController": @{
                                                              @"pageId": @"WDCAnalysisExample.home.homePage",
                                                              @"pageName": @"首页",
                                                              },
                                                      @"WDCItemListViewController": @{
                                                              @"pageId": @"WDCAnalysisExample.home.itemList",
                                                              @"pageName": @"Item列表",
                                                              },
//                                                      @"WDCItemDetailViewController": @{
//                                                              @"pageId": @"WDCAnalysisExample.home.itemDetail",
//                                                              @"pageName": @"Item详情",
//                                                              },
                                                      }];
    /// 崩溃统计初始化
    [WDCAnalysisSDK setupCrashAnalysis];
}

二.关于设置 userId

设置的 userId 为统计记录的 userId 属性。建议调用时机:

  • 1.sdk 初始化时
  • 2.登录成功(获取到新的 userId)时
  • 3.退出登录(清空 userId,setupUserId:nil)时

三.关于上传统计记录

本 SDK 默认每 3 分钟进行一次统计记录上传,调用 uploadAnalysisRecords 方法可以立刻上传本地存储的统计记录到服务器。为了让统计记录的上传更加及时,建议调用时机:

  • 1.applicationWillResignActive: 方法
  • 2.退出登录时
- (void)applicationWillResignActive:(UIApplication *)application{    
    /// 建议应用程序挂起前上传一下统计记录
    [WDCAnalysisSDK uploadAnalysisRecords];
}

四. 页面统计

1. 自动统计

本SDK在每个UIViewController对象出现和消失时自动执行页面统计记录的处理。然而,只能自动获取哪个UIViewController对象出现/消失,至于将在生成的页面统计记录中的pageId、pageName命名为何,需要调用者告知。setupMapForClassNameAndPageInfo:方法用于设置UIViewController类名与pageId、pageName的映射关系。

提示:没有在映射关系中设置的UIViewController不会进行自动统计。

    /// 设置页面统计的UIViewController类名与pageId、pageName的对应关系
    [WDCAnalysisSDK setupMapForClassNameAndPageInfo:@{
                                                      @"WDCHomeViewController": @{
                                                              @"pageId": @"WDCAnalysisExample.home.homePage",
                                                              @"pageName": @"首页",
                                                              },
                                                      @"WDCItemListViewController": @{
                                                              @"pageId": @"WDCAnalysisExample.home.itemList",
                                                              @"pageName": @"Item列表",
                                                              },
//                                                      @"WDCItemDetailViewController": @{
//                                                              @"pageId": @"WDCAnalysisExample.home.itemDetail",
//                                                              @"pageName": @"Item详情",
//                                                              },
                                                      }];

2. 手动统计

有时,单个UIViewController类可能会对应多个页面,自动统计无法区分,此时可以使用手动统计。在进入页面和离开页面时调用以下两个方法。

/// 进入某个页面
+ (void)enterPageWithPageId:(NSString *)pageId pageName:(NSString *)pageName;
/// 离开某个页面
+ (void)leavePageWithPageId:(NSString *)pageId;

提示:手动统计的页面不能设置自动统计的映射关系,否则会统计两次,生成两条统计记录。

提示:建议尽量使用自动统计,手动统计代码量较大,只有在万不得已的情况下才使用。

下面是使用手动统计的UIViewController示例:

- (void)viewDidLoad {
    [super viewDidLoad];
    [self setupAnalysis];
}
- (void)setupAnalysis{
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillResignActive:) name:UIApplicationWillResignActiveNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidBecomeActive:) name:UIApplicationDidBecomeActiveNotification object:nil];
}
- (void)dealloc{
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}
///注:当一个控制器对应多个界面的情况下,使用这种方式的页面统计可以进行区分(对映关系里面就不能再设置这个控制器了,否则会重复统计)
///注:如果不是万不得已,最好使用设置对映关系的方式进行页面统计。这种方式建议只用于处理个别特例。
static NSString *const pageId = @"WDCAnalysisExample.home.itemDetail";
static NSString *const pageName = @"Item详情";
static NSString *const pageId1 = @"WDCAnalysisExample.home.itemDetailNew";
static NSString *const pageName1 = @"Item详情New";
- (void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];
    if(1){
        [WDCAnalysisSDK enterPageWithPageId:pageId pageName:pageName];
    }else{
        [WDCAnalysisSDK enterPageWithPageId:pageId1 pageName:pageName1];
    }
}
- (void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
    if(1){
        [WDCAnalysisSDK leavePageWithPageId:pageId];
    }else{
        [WDCAnalysisSDK leavePageWithPageId:pageId1];
    }
}
- (void)applicationDidBecomeActive:(UIApplication *)application{
    if(1){
        [WDCAnalysisSDK enterPageWithPageId:pageId pageName:pageName];
    }else{
        [WDCAnalysisSDK enterPageWithPageId:pageId1 pageName:pageName1];
    }
}
- (void)applicationWillResignActive:(UIApplication *)application{
    if(1){
        [WDCAnalysisSDK leavePageWithPageId:pageId];
    }else{
        [WDCAnalysisSDK leavePageWithPageId:pageId1];
    }
}

五. 自定义事件统计

1. 瞬时事件

当发生一个事件时,我们可以生成一条自定义事件统计记录。这个事件可以是任何你想统计的业务。你需要设置事件的eventId和eventName。事件可以附带一个props字典来存储一些相关属性。设置isRealTime为YES,则该事件就是一个实时事件,实时事件的统计记录会即时上传到服务器。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    self.enterItem = self.itemArray[indexPath.row];
    [self performSegueWithIdentifier:@"itemListToItemDetail" sender:nil];
    
    NSMutableDictionary *props = [NSMutableDictionary dictionary];
    props[@"itemTitle"] = self.enterItem.itemTitle;
    props[@"itemId"] = self.enterItem.itemId;
    [WDCAnalysisSDK trackCustomEventWithEventId:@"WDCAnalysisExample.home.clickItemList" eventName:@"点击item列表" props:props isRealTime:YES];
}

2. 持续事件

有时我们想统计一些持久性的事件。在事件开始时调用trackCustomEventBeginWithEventId:eventName:方法,在事件结束时调用trackCustomEventEndWithEventId:方法。可以统计到事件持续的时间。

- (void)applicationDidBecomeActive:(UIApplication *)application{
    [WDCAnalysisSDK trackCustomEventBeginWithEventId:kDurationOfUseEventId eventName:@"使用时长统计"];
}
- (void)applicationWillResignActive:(UIApplication *)application{
    [WDCAnalysisSDK trackCustomEventEndWithEventId:kDurationOfUseEventId];
}

示例

要运行示例项目,先克隆仓库,然后从示例目录运行pod install

需求

安装

WDCAnalysis可通过CocoaPods获取。要安装,只需将以下行添加到Podfile中。

pod 'WDCAnalysis'

作者

xiongwei, [email protected]

许可证

WDCAnalysis可在MIT许可证下使用。有关更多信息,请参阅LICENSE文件。