学宝APP基于友盟+U-APM的日常使用体验”挑战赛

本文涉及的产品
应用实时监控服务-应用监控,每月50GB免费额度
应用实时监控服务-用户体验监控,每月100OCU免费额度
简介: 作为开发人员,日常不是在写BUG,就是在写BUG的路上。尤其是中小型公司,通常人手不够,开发流程不完善,测试场景无法覆盖全部。尽管在每次修改旧功能和做新功能时都暗示自己要少写BUG,上线前测试同学也会回测,但仍然无法避免一些漏网之鱼。如何在上线后快速发现问题、定位问题、解决问题,这是我们开发人员面临的挑战。

使用背景

      作为开发人员,日常不是在写BUG,就是在写BUG的路上。尤其是中小型公司,通常人手不够,开发流程不完善,测试场景无法覆盖全部。尽管在每次修改功能和做新功能时都暗示自己要少写BUG,上线前测试同学也会回测,但仍然无法避免一些漏网之鱼。如何在上线后快速发现问题、定位问题、解决问题,这是我们开发人员面临的挑战。

      学宝是一款专门面向中小学学生的语文、数学、英语全科同步学习工具APP。 从2014年第一版上线开始,Android iOS 端同时接入友盟统计SDK,用于日常的数据统计和留存分析,借助这些服务,为公司节省了很多成本。友盟统计SDK同时也能收集 APP 的崩溃信息,在产品上线后帮助我们第一时间发现问题,快速定位问题,而我们开发人员要做的就是快速的解决问题,提升用户体验。

SDK 集成

      以下以学宝APP iOS 端为例,示例在日常使用 U-APM 发现与解决 BUG的流程。首先没有账号的要注册一个友盟账号,创建你的应用拿到 appkey

如果你是第一次集成,推荐使用Cocoapods 来集成,然后在你工程的 Podfile 文件添加以下内容,最后在终端进入工程的根目录,执行 pod install 命令。因为 UMAPM 依赖 UMCommon UMDevice 组件,所以要放进去。 第一次集成建议加上UMCCommonLog,通过查看控制台的日志确认是否集成成功,成功后就可以移除出了

 

pod 'UMAPM', '~> 1.4.2'

pod 'UMCommon', '~> 7.3.5'

pod 'UMDevice', '~> 2.0.4'

pod 'UMCCommonLog', '~> 2.0.2'

 

        AppDelegate.m文件中引入头文件 #import<UMCommon/UMCommon.h>,只需要一行代码,就可以把U-APM 成功的集成到工程中。如果集成了UMCCommonLog 组件,加上 [UMConfigure setLogEnabled:YES] 在控制台查看log,这样就很简单的完成了U-APM的集成.

 

[UMConfigure initWithAppkey:@"xxxxxxxx" channel:@"App Store"];

[UMConfigure setLogEnabled:YES];

 

       U-APM 默认开启 Crash监控、卡顿监控 、启动监控、内存监控和 OOM监控,也可通过控制属性值关闭一些功能,根据自己需求来。

 

[UMAPMConfig defaultConfig].crashAndBlockMonitorEnable = YES;  // crash&卡顿监控

[UMAPMConfig defaultConfig].launchMonitorEnable = YES; // 启动监控

[UMAPMConfig defaultConfig].memMonitorEnable =  YES; // 内存监

[UMAPMConfig defaultConfig].oomMonitorEnable =  YES; // OOM监控

       整个接入流程十分简单 更多方式以及问题课跳转到官方文档 https://developer.umeng.com/docs/193624/detail/194595?&utm_source=w_MKT_dswz_dxf_wz

解决问题

       可根据版本、时间、设备等多维度过滤出如下错误列表。

1.jpg

以一个常见数组越界的Crash举例,这是一个非必现的BUG,在自测和测试同学测试期间都没发现这个问题,上线后再 U-APM 后台收到多条记录。

 

Application threw exception NSRangeException: *** -[__NSArrayM objectAtIndexedSubscript:]: index 2 beyond bounds [0 .. 1]

     

      开错误详情页,可以看到发送同样的问题都统计在这里了,根据行为日志,看到崩溃前浏览的最近10个页面,就知道用户走过的路径,知道大概在哪个页面发生的。

2.jpg

虽然知道在哪个页面闪退,但是这些还不够,一个页面可能会有多个子页面,如何知道具体哪个类和哪一行,就需要我们再上传符号表。在我们打包的 Archive 文件中找到dSYM文件拷贝到桌面,然后点击错误明细右边的符号表管理,上传拷贝出来的dSYM文件。

3.jpg

上传成功后,无法立马看到解析结果,需要几分钟的解析,通常五分钟左右就好。

4.jpg

解析好之后就很明确定位到具体的哪个类哪一行。在touchesBegan:withEvent: 有一个数组取值操作未做安全校验,加上就好。

5.jpg

总结

      年初在升级友盟统计 SDK的时候,发现收集 Crash 的功能,已从友盟统计组件中抽出来,并做了重构独立成一个组件,并多维度进行收集闪退日志,在错误明细里列出最近 10 个页面路径功能太棒了,非常有利于去复现这些问题。

      作为开发人员,在写逻辑细心严谨的同时,也要借助一些辅助工具,收集没有考虑到的 Crash,提升APP稳定性。针对移动端,友盟 SDK 以及一些列工具是一个不错的选择,在节省人力的同时也能节省成本,在使用中遇到一些问题客服的响应速度也是真快,可能是国内目前唯一一家SDK经常维护更新,还有客服的商家了,而且还免费。

小的建议

       U-APM 正在迭代,作为深度用户,在使用中也会遇到一些不顺手的地方,虽也不影响使用,但是相信大家都一样的感受,还是期待能优化一下下面问题。

1、进入 U-APM 面板能默认展示最近24小时的崩溃数据,而不是最近一小时的数据

      拿我们自己举例:我们用户活跃时间集中在夜晚七点到九点之间,如果某天早上到工位后我来查看APP崩溃情况,点进来后据可能是0,需要再去筛选一些,如何不是联调或者灰度的时候,正常来说这个默认一小时意义不大。

6.jpg

2、崩溃信息详情面板机型和和使用时长能够直观一些

     如下图,在错误明细里iPhone10,3 对应日常熟悉的型号是iPhone X,如果不去查一下资料是不知道 iPhone10,3 是具体哪一款型号,这里更希望看到的是常见型号类型。

     有时候想去了解用户使用时间的时候,在看到 6345s 的时候还是要打开手机的计算器去换算一下。期望时间超过一分钟小于一小时的转换成分钟(比如:3分钟、20分钟),超过一小时小于一天的时间转换成小时(比如:23小时48分钟),超过1天的就显示天数(比如:3 10小时 )。

7.jpg

3、能够支持自定义的错误

      有一些问题不会导致崩溃,但是用户看到的就是有问题的,可能是后台返回的个别数据有问题,这个时候就有来自定义错误这个需求。就像示例中解决数组越界的问题,后天返回的字段中本应该有两个长度一样的数组,但是是因为个别数据录入导致问题,导致返回的数组大小不一样。

 

4、解决 iOS 新项目中集成SDK 时闪退问题

      Xcode 11 以上版本新建一个工程, 集成 SDK 运行直接闪退了。当然有经验的搜一搜也能很快解决,但是对一个刚接触的新手来说这个闪退还是挺突然的,期望能在文档中说明,更好的方案是能在 SDK 内部做兼容修复。




作者:杜鑫峰

相关实践学习
通过云拨测对指定服务器进行Ping/DNS监测
本实验将通过云拨测对指定服务器进行Ping/DNS监测,评估网站服务质量和用户体验。
相关文章
|
大数据 数据挖掘 BI
几款主流的App统计工具解析:友盟、Talking Data、openinstall
本文简要分析友盟、Talking Data、openinstall的优劣势以及特点,希望能给入门人员一点帮助
5111 0
|
移动开发 达摩院 算法
2021年度友盟+ APP消息推送白皮书:工作日6-8点通勤时间消息送达率每日最高
友盟+基于卓越的数据技术与算法能力,于2021年联合阿里巴巴达摩院,推出国内首款智能推送,在保障高送达率的基础上提升消息内容可读性和点击率。友盟+推出《2021 年度APP消息推送白皮书》,该白皮书从送达通道、用户送达偏好、分行业送达率等多个角度解读,带您了解行业推送现状的同时,有效提升APP的消息推送送达率。
2021年度友盟+ APP消息推送白皮书:工作日6-8点通勤时间消息送达率每日最高
|
运维 搜索推荐 定位技术
友盟开放日: APP开发运营的排兵布阵之道
3月2日至3月16日,友盟在北京、广州、深圳、杭州、上海五地巡回举办了“友盟开放日”活动,和开发者一起交流、分享“APP开发运营的排兵布阵之道”。SegmentFault为友盟开放日的全程合作伙伴,这里和大家分享一下“友盟开放日”中的精彩内容。
236 0
友盟开放日: APP开发运营的排兵布阵之道
|
缓存 监控 Java
借助友盟+U-APM实现移动APP启动慢解决实践
本APP为面向用户的一款LBS产品。用户反馈APP使用过程中存在启动慢等问题。本文主要针对该原生Android APP启动慢的问题进行分析及解决方案的介绍。
借助友盟+U-APM实现移动APP启动慢解决实践
|
数据采集 监控 小程序
使用友盟+的APM服务实现对移动端APP的性能监控
对于信息系统服务,一般我们的重点监控对象都是核心的后端服务,通常会采用一些主流的APM(Application Performance Management)框架进行监控、告警、分析。那么对于移动端的APP、小程序的运行时状态如何进行实时监控与分析呢?经过这次CSDN官方的推荐,友盟+提供的APM服务可以实现我们的这一目标,下面我们就尝试集成体验下友盟+提供的这款APM服务。
使用友盟+的APM服务实现对移动端APP的性能监控
|
运维 监控 Java
APP性能监测工具之友盟的 U-APM产品入门使用
最近公司做了一款新的APP,要求能够看到用户每天的新增量和活跃量,还有一些页面的点击量、停留时间等的监测,还有更重要的一点就是能够监测到app的异常情况。于是开始对第三方工具开始一番研究,对比之后我选择使用了友盟。
APP性能监测工具之友盟的 U-APM产品入门使用
|
监控 开发工具
手机app应用免费监控软件U-APM保姆级教学,入门使用
这篇文章简单的介绍一下友盟+U-APM,应用性能监控平台, 可以高效提升应用质量,智能诊断,快速定位问题,从产品质量验收到问题复现排查等各项功能,快速通道链接。
手机app应用免费监控软件U-APM保姆级教学,入门使用
|
缓存 Android开发
巧用友盟+U-APM 实现记一次App性能调优
在一次发版过程中,有某为某型号的机型在系统第一次升级以后出现app闪崩现象。为了通过工具能够迅速定位该类问题,打算引入一款移动端性能分析工具,经调研,有友盟+的一款U-APM可以解决该场景的问题。
|
2月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
749 1

热门文章

最新文章