加入收藏 | 设为首页 | 会员中心 | 我要投稿 网站开发网_安阳站长网 (https://www.0372zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

阿里百川码力APP监控 来了!

发布时间:2016-11-05 04:01:44 所属栏目:业界 来源:阿里百川专区的网站
导读:副标题#e# 阿里百川码力APP监控来了! 这个APP监控 和手淘一起成长 历经千锤百炼 走过千BUG万坑 如今百川起产品 为了让你的APP更好 用户更爽! 在移动互联网时代,一款应用是否成功,用户体验是一个关键的因素。APM的发展使得用户体验越来越完善,本文通过9

请求错误、流量开销高、被运营商劫持等网络问题是应用开发时另一类棘手的问题。当然我们也可以借助模拟器、Instrument或者自动化测试发现简单的网络问题,但是测试难以覆盖复杂的用户网络环境,也难以导出网络性能数据进行长期比对监控。如果使用手工埋点的方式记录网络性能,一方面,我们需要应对多种系统网络接口,另一方面,我们需要同步应用网络代码和埋点代码,维护成本将会居高不下。

为了监控应用在真实网络环境中的性能,码力APM中引入了无痕埋点的网络性能监控,在网络检测中引入三种注入技术,帮助开发者长期监控应用的网络性能,优化产品用户体验。

阿里百川码力APP监控 来了!

第一种是Method Swizzling。每一个NSObject类都包含一个isa指针,指向objc_class结构体,而每一个objc_class结构体又包含一个methodLists指针,指向objc_method_list结构体数组,在objc_method_list里又包含一个objc_method结构体成员,且每一个objc_method包含一个method_imp指针,指向方法实现。

因此,只要能修改method_imp的值,我们就能替换原有的实现。在<objc/runtime>中,通过class_getClassMethod和class_getInstanceMethod取得objc_method结构体指针,而后通过method_getImplementation取得方法的原始实现地址originIMP,之后在imp_implementationWithBlock生成新实现imp的参数block里,调用原始实现,就可以原有行为前后加入网络性能埋点行为。最后调用method_setImplementation替换方法实现。这样,任何调用都将使用新的实现。

阿里百川码力APP监控 来了!

第二种技术是Proxy。在Objective-C里,NSProxy是除NSObject外唯一的根类。NSProxy是一个实现了NSObject协议的抽象类,它的正常运作需要子类override -methodSignatureForSelector:方法为sel提供方法签名,以及-forwardInvocation:方法来完成调用的转发。

(编辑:网站开发网_安阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!