MIApm 1.0.1

MIApm 1.0.1

mediaios 维护。



MIApm 1.0.1

  • mediaios

ios-apm

介绍

背景

之前关注过一些 apm(应用性能管理平台) 系统,对其实现非常好奇。此 SDK 是对 apm 系统 中 ios 平台信息采集的一个技术预研。我觉得在整个 apm 系统 中,对网络的监控是最复杂的,所以我们先从网络监控入手,循序渐进地理解整个系统。

整个技术预研的过程是通过一个 SDK 的形式展现的,该 SDK 只做信息采集和回显。

灵感

由于市场上的许多 apm 系统 都是收费的(不收费的有的数量和查询功能的限制),所以我觉得我们可以在我们的应用中添加一个隐藏开关来控制 debug 信息的显示。这些 debug 信息就是我们应用中许多关键性能信息,例如:http 请求情况、当前应用的帧率、cpu 利用率等信息。当用户反馈某个功能有问题时,可以通过打开隐藏开关来显示 debug 信息的黑盒测试方式来更直观地定位到引起 bug 的原因。

因此,您可以使用此 SDK 来查看应用中的这些关键信息。

环境要求

  • iOS >= 10.0
  • XCode >= 8.0
  • 设置 Enable BitcodeNO

安装使用

通过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
  • 其它使用NSURLConnectionNSURLSession请求的网络请求框架

首先在你想要注释掉的类中引入头文件,利用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
  • 欢迎点赞