ios-apm
介绍
背景
之前关注过一些 apm(应用性能管理平台)
系统,对其实现非常好奇。此 SDK 是对 apm 系统
中 ios 平台信息采集的一个技术预研。我觉得在整个 apm 系统
中,对网络的监控是最复杂的,所以我们先从网络监控入手,循序渐进地理解整个系统。
整个技术预研的过程是通过一个 SDK 的形式展现的,该 SDK 只做信息采集和回显。
灵感
由于市场上的许多 apm 系统
都是收费的(不收费的有的数量和查询功能的限制),所以我觉得我们可以在我们的应用中添加一个隐藏开关来控制 debug 信息的显示。这些 debug 信息就是我们应用中许多关键性能信息,例如:http 请求情况、当前应用的帧率、cpu 利用率等信息。当用户反馈某个功能有问题时,可以通过打开隐藏开关来显示 debug 信息的黑盒测试方式来更直观地定位到引起 bug 的原因。
因此,您可以使用此 SDK 来查看应用中的这些关键信息。
环境要求
- iOS >= 10.0
- XCode >= 8.0
- 设置
Enable Bitcode
为NO
安装使用
通过pod方式
在你的项目的Podfile
中添加以下依赖:
pod 'MIApm'
快速开始
首先在项目开始处(我们建议在main.m
中)引入SDK
头文件:
#import <MIApm/MIApm.h>
然后在main方法中调用MIApmClient
中的apmClient
方法:
int main(int argc, char * argv[]) {
@autoreleasepool {
[MIApmClient apmClient];
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
另外,你需要在项目的Build Settings->other links flags中将-ObjC添加进去。如下所示:
回显监控的数据
当前版本支持网络请求监控和对UIWebView
的监控。
监控网路请求
支持的网络请求有:
- NSURLConnection
- NSURLSession
- AFNetWorking
- 其它使用
NSURLConnection
,NSURLSession
请求的网络请求框架
首先在你想要注释掉的类中引入头文件,利用SDK中的代理回显相关信息。
// 设置代理
[MIApmClient apmClient].delegate = self;
// 回显数据
- (void)apm:(MIApmClient *)apm monitorNetworkRequest:(MIRequestMonitorRes *)netModel
{
// 你的处理逻辑
NSLog(@"%@",netModel);
}
监控UIWebView
同样通过实现代理的方式回显相关信息:
- (void)apm:(MIApmClient *)apm monitorUIWebView:(MIWebViewRequestMonitorRes *)webViewMonitorRes{
// 你的处理逻辑
NSLog(@"%@", webViewMonitorRes);
}
其它功能
- 待完善中。。。
联系我们
- 如果您有任何问题或需求,请提交问题
- 如果您要提交代码,欢迎发 pull request
- 欢迎点赞