iOS SDK通过在指定的方法中嵌码去采集方法中的数据。您可以通过报表服务器查询各种方法的数据和调用次数。
iOS SDK支持如下数据采集:
iOS SDK可以采集应用的网络数据:
iOS SDK也可以采集线程堆栈,数据库、自定义参数和HTTP请求参数。
iOS SDK支持如下协议类库:
iOS SDK支持以下系统版本:
/*
* swizzle过后,imageName指向的是nbs_imageName函数的实现,当在调用imageName这个函数时,会首先调用nbs_imageNamed的实现,
* 而此时nbs_imageName指向的是原函数imageName的实现,所以在nbs_imageNamed的实现中通过[self nbs_imageNamed:name]回调回原函数
*/
+ (UIImage *)nbs_imageNamed:(NSString *)name
{
nbs_embedIn_start(nil, category_image, classNameOf(self), NSStringFromSelector(_cmd), currentViewController, timeNow());//SDK开始数据采集
id rtn= [self nbs_imageNamed:name];//调用原函数实现
nbs_embedIn_finish(argsHelper);//SDK完成数据采集
return rtn;
}
利用objective-c的runtime特性,通过Method swizzle技术,可以实现在运行时替换 selector 对应的方法实现,达到 给方法挂钩的目的。也就是说,嵌入基调的 SDK 后,在程序启动之初,基调的SDK会对相应的方法执行swizzle操作,从而在调用一个被swizzle过后的函数时,将会首先调用SDK相应的自定义函数,在SDK的函数中会执行一些数据采集的操作,然后SDK的函数会再调回原函数的实现,不会影响原程序逻辑.
三种指令架构增加 2.71M