1. SDK API说明

本文档提供API接口的说明,包括:

1.1. 启动MTA

说明

  • 使用统计功能以前,需要先启动MTA。在UIApplicationDelegate的

- (BOOL)application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;

回调中调用 MTA 的 startWithAppkey 方法即可启动MTA。

接口


启动MTA

- (void)startWithAppkey:(NSString *)appkey;

/**

检测版本,并启动MTA。

如果当前MTA的版本小于ver参数,则MTA不启动。否则启动MTA。

*/

- (BOOL)startWithAppkey:(NSString *)appkey checkedSdkVersion:(NSString *)ver;

参数说明

  • appKey:从网页申请的appKey

  • ver: 最低允许启动的版本

示例


* (BOOL)application:(UIApplication *)application

    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [MTA startWithAppkey:@"ABCDEFG"];

}

1.2. 统计页面时长

说明

  • 此接口可以统计某个页面的访问时长

接口


/**

标记一次页面访问的开始

此接口需要跟trackPageViewEnd配对使用

多次开始以第一次开始的时间为准

*/

- (void)trackPageViewBegin:(NSString *)page;

/**

标记一起页面访问的开始

并且指定上报方式

此接口需要跟trackPageViewEnd配对使用

多次开始以第一次开始的时间为准

*/

- (void)trackPageViewBegin:(NSString *)page appkey:(NSString *)appkey;

- (void)trackPageViewEnd:(NSString *)page;

/**

标记一起页面访问的结束

并且指定上报方式

此接口需要跟trackPageViewBegin配对使用

多次结束以第一次结束的时间为准

*/

- (void)trackPageViewEnd:(NSString *)page

appkey:(NSString *)appkey

isRealTime:(BOOL)isRealTime;

参数说明

  • page:页面ID,ID需要先在MTA前台配置好才能生效

  • appkey:若此参数不为nil,则上报到此appkey。否则,上报到startWithAppkey中传入的appkey

  • isRealTime 是否实时上报,若传入YES,则忽略全局上报策略实时上报。否则按照全局策略上报。

示例


-(void) viewDidAppear:(BOOL)animated {


    [MTA trackPageViewBegin:@"Page"];
    [super viewDidAppear:animated];

}

* (void)viewWillDisappear:(BOOL)animated {

    [MTA trackPageViewEnd:@"Page"];
    [super viewWillDisappear:animated];
}

1.3. 自定义事件

说明

自定义事件分为两类:

  • 次数统计

  • 时长统计

两类自定义事件都可以带 NSDictionary 类型的参数

接口


/**

上报自定义事件

*/

- (void)trackCustomKeyValueEvent:(NSString *)event_id props:(NSDictionary*)kvs;

/**

上报自定义事件

并且指定上报方式

*/

- (void)trackCustomKeyValueEvent:(NSString *)event_id props:(NSDictionary *)kvs appkey:(NSString *)appkey isRealTime:(BOOL)isRealTime;

/**

开始统计自定义时长事件

此接口需要跟trackCustomKeyValueEventEnd配对使用

多次调用以第一次开始时间为准

*/

- (void)trackCustomKeyValueEventBegin:(NSString *)event_id props:(NSDictionary *)kvs;

/**

开始统计自定义时长事件

并指定上报方式

此接口需要跟trackCustomKeyValueEventEnd配对使用

多次调用以第一次开始时间为准

*/

- (void)trackCustomKeyValueEventBegin:(NSString *)event_id props:(NSDictionary *)kvs appkey:(NSString *)appkey;

/**

结束统计自定义时长事件

此接口需要跟trackCustomKeyValueEventBegin配对使用

多次调用以第一次结束时间为准

*/

- (void)trackCustomKeyValueEventEnd:(NSString *)event_id props:(NSDictionary *)kvs;

/**

结束上报自定义时长事件

并指定上报方式

此接口需要跟trackCustomKeyValueEventBegin配对使用

多次调用以第一次结束时间为准

*/

- (void)trackCustomKeyValueEventEnd:(NSString *)event_id props:(NSDictionary *)kvs appkey:(NSString *)appkey isRealTime:(BOOL)isRealTime;

/**

直接统计自定义时长事件

这个方法用于上报统计好的时长事件

*/

- (void)trackCustomKeyValueEventDuration:(float)seconds withEventid:(NSString *)event_id props:(NSDictionary *)kvs;

/**

直接上报自定义时长事件

并指定上报方式

这个方法用于上报统计好的时长事件

*/

- (void)trackCustomKeyValueEventDuration:(float)seconds withEventid:(NSString *)event_id props:(NSDictionary *)kvs appKey:(NSString *)appkey isRealTime:(BOOL)isRealTime;

参数说明

  • event_id:事件的ID,ID需要先在MTA前台配置好才能生效

  • kvs:事件的参数,参数需要先在MTA前台配置好才能生效

  • appkey:需要上报的appKey,若传入nil,则上报到启动函数中的appkey

  • isRealTime:是否实时上报,若传入YES,则忽略全局上报策略实时上报。否则按照全局策略上报。

  • seconds:自定义事件的时长,单位秒

示例


// 次数统计

- (IBAction)clickKVButton:(id)sender {

    [MTA trackCustomKeyValueEvent:@"KVEvent"

    props:[NSDictionary dictionaryWithObject:@"Value" forKey:@"Key"]];

}

// 时长统计

- (IBAction)clickStartKvButton:(id)sender {

    [MTA trackCustomKeyValueEventBegin:@"KVEvent"

    props:[NSDictionary dictionaryWithObject:@"Value"

    forKey:@"TimeKey"]];

}

- (IBAction)clickEndKvButton:(id)sender {

    [MTA trackCustomKeyValueEventEnd:@"KVEvent"

    props:[NSDictionary dictionaryWithObject:@"Value"

    forKey:@"TimeKey"]];
}

1.4. 上报当前缓存的事件

说明

若当前有缓存的事件(比如上报策略不为实时上报,或者有事件上报失败)时,调用此方法可以上报缓存的事件

接口


/**

上报当前缓存的数据

若当前有缓存的事件(比如上报策略不为实时上报,或者有事件上报失败)时

调用此方法可以上报缓存的事件

*/

* (void)commitCachedStats:(int32_t)maxStatCount;

参数说明

  • maxStatCount:最大上报事件的条数

1.5. 使用时长统计

说明

在UIApplicationDelegate的


- (void)applicationDidBecomeActive:(UIApplication *)application;

- (void)applicationWillResignActive:(UIApplication *)application;

的两个回调中,分别添加对应的打点代码,即可上报app的使用时长

接口


/**
开始统计使用时长
建议在App进入前台时调用
*/

- (void)trackActiveBegin;

/**

结束统计使用时长
建议在App离开前台时调用
*/

- (void)trackActiveEnd;

示例


// 开始打点

- (void)applicationDidBecomeActive:(UIApplication *)application {

    [MTA trackActiveBegin];

}

// 结束打点

- (void)applicationWillResignActive:(UIApplication *)application {

    [MTA trackActiveEnd];

}

1.6. 接口统计

说明

统计应用对某个外部接口(特别是网络类的接口,如连接、登陆、下载等)的调用情况。当开发者用到某个外部接口,可调用该函数将一些指标进行上报,MTA将统计出每个接口的调用情况,并在接口可用性发生变化时进行告警通知;对于调用量很大的接口,也可以采样上报,云监控统计将根据sampling参数在展现页面进行数量的还原。

接口


/**

接口统计的枚举值

*/

typedef enum {

/**

接口调用成功

*/

MTA_SUCCESS = 0,

/**

接口调用失败

*/

MTA_FAILURE = 1,

/**

接口调用出现逻辑错误

*/

MTA_LOGIC_FAILURE = 2

} MTAAppMonitorErrorType;

/**

接口统计的数据结构

*/

@interface MTAAppMonitorStat : NSObject

/**

监控业务接口名

*/

@property (nonatomic, strong) NSString *interface;

/**

上传请求包量,单位字节

*/

@property uint32_t requestPackageSize;

/**

接收应答包量,单位字节

*/

@property uint32_t responsePackageSize;

/**

消耗的时间,单位毫秒

*/

@property uint64_t consumedMilliseconds;

/**

业务返回的应答码

*/

@property int32_t returnCode;
/**

业务返回类型

*/

@property MTAAppMonitorErrorType resultType;

/**

上报采样率,默认0含义为无采样
*/
@property uint32_t sampling;
@end

/**
对网络接口的调用情况进行统计
参数的详细信息请看接口统计数据结构中的相关说明
*/

+ (void)reportAppMonitorStat:(MTAAppMonitorStat *)stat;

/**
对网络接口的调用情况进行统计
并指定上报方式
参数的详细信息请看接口统计数据结构中的相关说明
*/

+ (void)reportAppMonitorStat:(MTAAppMonitorStat *)stat appkey:(NSString *)appkey isRealTime:(BOOL)isRealTime;

参数说明

  • stat:接口统计的数据,详情请看接口统计数据结构的相关说明

  • appkey:需要上报的appKey,若传入nil,则上报到启动函数中的appkey

  • isRealTime:是否实时上报,若传入YES,则忽略全局上报策略实时上报。否则按照全局策略上报。

示例


-(IBAction) clickNormaltButton:(id)sender{


    MTAAppMonitorStat* stat = [[MTAAppMonitorStat alloc] init];

    [stat setInterface:@"interface1"];

    [stat setRetsultType: SUCCESS];

    [MTA reportAppMonitorStat:stat];
}

1.7. 用户画像

说明

MTA的用户画像功能需要开发者上报用户的QQ号码。上报QQ号码后,MTA后台会自动生成APP的用户画像。

接口


/**
上报QQ号
上报QQ号以后可以使用MTA提供的用户画像功能
*/

- (void)reportQQ:(NSString *)qq;

/**

上报QQ号
并指定上报方式
上报QQ号以后可以使用MTA提供的用户画像功能

*/

- (void)reportQQ:(NSString *)qq appkey:(NSString *)appkey isRealTime:

(BOOL)isRealTime;

参数说明

  • qq:QQ 号

  • appkey:需要上报的appKey,若传入nil,则上报到启动函数中的appkey

  • isRealTime:是否实时上报,若传入YES,则忽略全局上报策略实时上报。否则按照全局策略上报。

示例


* (void)loginSuccess:(BOOL)animated {
    NSString *qq = @"45284547";
    [MTA reportQQ:qq];
}

1.8. 错误统计

说明

错误统计既可以统计 APP 的 crash。也可以统计 APP 中的逻辑错误。APP 的 crash 由 MTA 自动捕获并且上报(需引用libcrashreporter.a),无需开发者调用额外的接口。而 APP 中的逻辑错误需要开发者手动调用相关接口上报。

接口


/**
统计程序逻辑错误
逻辑错误只有描述,没有堆栈信息
*/

+ (MTAErrorCode)trackError:(NSString *)error;

/**
统计程序逻辑错误
并且指定上报方式
逻辑错误只有描述,没有堆栈信息
*/

+ (MTAErrorCode)trackError:(NSString *)error appkey:(NSString *)appkey isRealTime:(BOOL)isRealTime;

/**
统计异常
异常信息包括了异常的原因和堆栈
*/

+ (MTAErrorCode)trackException:(NSException *)exception;

/**
统计异常
并且指定上报方式
异常信息包括了异常的原因和堆栈
*/

+ (MTAErrorCode)trackException:(NSException *)exception appkey:(NSString *)appkey isRealTime:(BOOL)isRealTime;

参数说明

  • error:错误描述

  • exception 异常信息

  • appkey:需要上报的appKey,若传入nil,则上报到启动函数中的appkey

  • isRealTime:是否实时上报,若传入YES,则忽略全局上报策略实时上报。否则按照全局策略上报。

1.9. 上报崩溃事件

说明

在崩溃发生时候,MTA 会自动捕获崩溃的堆栈以及基本的上下文信息,并且在下次启动时候上报。除此之外,开发者还可以调用特定的 API 来存储额外的上下文信息,这些信息会在崩溃发生时,跟随崩溃报告一起上报,以便 Debug。

接口


/**
设置自定义的 tag
崩溃发生时,会将已经设置的 tag 上报,以便定位问题
*/

+ (void)setCustomTag:(NSString *)tagKey value:(NSString *)tagValue;

/**
输出诊断信息
崩溃发生时,会将最后输出的50条诊断信息上报,以便定位问题
*/

+ (void)traceLog:(NSString *)log;

参数说明

  • tagKey:tag 的 Key 若 key 已经设置,则新的 value 会覆盖旧的 value

  • tagValue:tag的value

results matching ""

    No results matching ""