使用

启动配置

启动上报功能

AppDelegate-application:didFinishLaunchingWithOptions: 中启动移动分析 TMFAnalyse

- (void)prepareAnalyseWithShark:(TMFSharkCenter *)shark {
    [TMFAnalyseManager setLogLevels:TMFAnalyseLogLevelAll];

    TMFAnalyseManager *alyManager = [TMFAnalyseManager shareManager];
    /// config
    alyManager.config.autoTrack = YES;
    [alyManager activate];
}

配置项目

  • TMFAnalyseConfig
配置项目 参数值 参数说明
autoTrack BOOL 是否开启自动埋点,默认NO
autoTrackOptions TMFAnalyseAutoTrackOptions 自动埋点策略,默认TMFAnalyseAutoTrackOptionAll
cacheReportNotification BOOL 是否开启缓存上报通知,默认 NO
commonReportNotification BOOL 是否开启普通上报通知,默认 NO

1)cacheReportNotification

事件上报失败会被缓存至本地数据库。当满足条件时,SDK会将之前上报失败的事件进行重新上报。开启cacheReportNotification会在上报成功后进行NSNotificationCenter通知。

2)commonReportNotification

非缓存事件上报时,开启commonReportNotification会在上报成功后进行NSNotificationCenter通知。

  • TMFAnalyseAutoTrackOptions
枚举值 说明
TMFAnalyseAutoTrackOptionAPPStart 启动 App 或从后台切换进入 App 时触发
TMFAnalyseAutoTrackOptionAPPEnd 退出 App 或 App进入后台时触发
TMFAnalyseAutoTrackOptionPage 浏览一个 ViewController 页面时触发
TMFAnalyseAutoTrackOptionAll 所有事件

上报参数

  • TMFAnalyseArea

    如果希望上报事件时携带位置信息,可以创建TMFAnalyseArea对象赋值给TMFAnalyseManager

属性 类型 说明
country NSString 国家、地区信息
province NSString 省份信息
city NSString 城市信息
  • userID

    如果希望上报事件时携带用户信息,可以赋值TMFAnalyseManageruserID

上报事件

事件定义

  • TMFAnalyseEventItem

    事件必须封装成一个TMFAnalyseEventItem对象来进行上报。事件的属性信息被放在props属性中,他可以是任意一个遵守TMFAnalyseEventItemCoding协议的对象。

属性 类型 说明
uuid NSString 事件UUID,防重
time long long 客户端时间戳,精确到秒
props id 事件属性
  • TMFAnalyseEventItemCoding

    TMFAnalyseEventItemCoding协议定义了事件需要包含的属性。它可以分为两部分,时间标识和属性信息。- eventID;返回事件的唯一标识符,它是不可重复的。- eventName;用来指定事件名称。

    - (int)eventId;
    - (NSString *)eventName;
    - (NSDictionary<NSString *, id<NSCoding>> *)properties;
    

预置事件

TMFAnalyseManager提供了一些已经定义好的事件,包括App启动,页面加载等事件。通过开启自动埋点功能后,这些事件会被自动采集。

  • TMFAnalyseEventApplicationStart

    应用启动事件

属性 类型 说明
sessionID NSString TMFAnalyseManager的sessionID,用来标记一次应用周期
  • TMFAnalyseEventApplicationEnd

    应用关闭、进入后台事件

属性 类型 说明
time NSInteger 应用使用时长(秒)
stime NSInteger 应用打开时间戳(秒)
sessionID NSString TMFAnalyseManager的sessionID,用来标记一次应用周期
  • TMFAnalyseEventPage

    页面浏览事件

属性 类型 说明
page NSString 页面名称
prevPage NSString 上级页面名称
time NSInteger 停留时长(秒)
stime NSInteger 页面打开时间戳(秒)
sessionID NSString TMFAnalyseManager的sessionID,用来标记一次应用周期
  • TMFAnalyseEventLogin

    登录、登出事件

属性 类型 说明
sessionID NSString TMFAnalyseManager的sessionID,用来标记一次应用周期

事件上报

上报通用事件

  • 上报API

    - (void)reportEvent:(TMFAnalyseEventItem *)eventItem;
    - (void)reportEvent:(TMFAnalyseEventItem *)eventItem completion:(_Nullable TMFAnalyseEventReportCompletion)completion;
    - (void)reportEvent:(NSInteger)eventId property:(NSDictionary *)property completion:(_Nullable TMFAnalyseEventReportCompletion)completion;
    
    /// 批量上报
    - (void)reportEvents:(NSArray<TMFAnalyseEventItem *> *)eventItems;
    - (void)reportEvents:(NSArray<TMFAnalyseEventItem *> *)eventItems completion:(_Nullable TMFAnalyseEventReportCompletion)completion;
    
  • 上报示例

    // 1.创建页面浏览事件
    TMFAnalyseEventPage *ePage = [[TMFAnalyseEventPage alloc] init];
    ePage.page = @"个人信息"];
    ePage.prevPage = @"首页";
    ePage.time = 233;
    ePage.stime = /*页面打开时间*/;
    ePage.sessionID = [TMFAnalyseManager shareManager].analyseSessionID;
    // 2.创建上报事件
    TMFAnalyseEventItem *event = [[TMFAnalyseEventItem alloc] init];
    event.props = ePage;
    // 3.上报
    [[TMFAnalyseManager shareManager] reportEvent:event];
    
  • 上报示例2

    // 指定 event id 进行上报
    [[TMFAnalyseManager shareManager] reportEvent:123
                                         property:@{@"param1":@"value"}
                                       completion:^(NSError * _Nullable error, NSString * _Nullable eventUUID) {
         // 事件回调       
    }];
    

上报登录或登出事件

  • 上报API

    - (void)reportLoginEvent:(NSString *)userID completion:(_Nullable TMFAnalyseEventReportCompletion)completion;
    - (void)reportPageEvent:(TMFAnalyseEventPage *)pageEvent completion:(_Nullable TMFAnalyseEventReportCompletion)completion;
    
  • 上报示例

    // userID 为 nil 表示登出事件
    [[TMFAnalyseManager shareManager] reportLoginEvent:@"用户ID" completion:^(NSError * _Nullable error, NSString * _Nullable eventUUID) {
            NSLog(@"%@, %@", error, eventUUID);
    }];
    

    说明:userID 为 nil 表示登出事件。

上报回调

typedef void(^TMFAnalyseEventReportCompletion)(NSError * _Nullable error,NSString * _Nullable eventUUID);
参数 类型 说明
error NSError 错误信息,可能为空
eventUUID NSString 上报事件标识

页面自动埋点

当开启页面自动埋点时,TMFAnalyseManager会自动记录页面事件并上报。TMFAnalyseManager通过Hook UIViewController的生命周期事件发送通知来执行自动埋点。

  • TMFUIViewControllerViewDidLoadNotification
  • TMFUIViewControllerViewDidAppearNotification
  • TMFUIViewControllerViewWillDisappearNotification
  • TMFUIViewControllerViewDidDisappearNotification

自动埋点参数处理

基于Objective-C 优秀的运行时机制,TMFAnalyseManagerUIViewController增加了页面信息“属性”。

属性 类型 说明
tmfPage NSString 页面信息,将会展示在数据统计报表上。默认使用ClassName。

通过手动设置该属性,能让数据统计报表上更加美观。

自动埋点页面选择

  • 页面自动埋点不会上报UITabBarController及其子类。
  • 页面自动埋点不会上报UINavigationController及其子类。
  • 页面自动埋点不会上报某些弹出页面,包括:
    • UIAlertController
    • _UIAlertControllerTextFieldViewController
  • 页面自动埋点不会上报键盘相关页面,包括:
    • UIInputWindowController
    • UISystemKeyboardDockController
    • UISystemInputAssistantViewController
    • UICompatibilityInputViewController
    • UIPredictionViewController

日志

下面是配置组件日志的示例:

// TMFBaseCoreLogLevels
[TMFAnalyseManager setLogLevels:TMFBaseCoreLogLevelAll];

下面是只输出警告+错误的日志配置示例:

// TMFBaseCoreLogLevels
[TMFAnalyseManager setLogLevels:(TMFBaseCoreLogLevelWarn | TMFBaseCoreLogLevelError)];
Copyright © 2013-2023 Tencent Cloud. all right reserved,powered by GitbookUpdate Time 2023-08-31 14:46:07

results matching ""

    No results matching ""