[JPush]极光推送应用,app启动导致的严重卡顿问题

简介: [JPush]极光推送应用,app启动导致的严重卡顿问题

刚接手一个新项目,app刚运行时,就打印了如下日志,还导致了严重的卡顿。

问题:

20200107105046651.png


```Objective-C


2019-12-18 15:43:14.195169+0800 xxx_Project[957:163233] | JIGUANG | I - [JIGUANGSessionController] connecting with coreAddr 121.46.20.44,port 7010

Main Thread Checker: UI API called on a background thread: -[UIApplication currentUserNotificationSettings]

PID: 957, TID: 163245, Thread name: org.hxhg.jiguang.thread, Queue name: com.apple.root.default-qos.overcommit, QoS: 0

Backtrace:

4 xxx_Project 0x0000000100f9a72c -[JPUSHAPNSStateReport init] + 232

5 xxx_Project 0x0000000100f9e4cc -[JPUSHClientController UDPReportAPNSState] + 44

6 xxx_Project 0x0000000100f9dd74 -[JPUSHClientController setup] + 484

7 Foundation 0x000000019939b22c 503900AF-2ECD-329F-B742-C07C3E672BEB + 1278508

8 CoreFoundation 0x0000000198f30a00 1B9B1E61-8CB4-3903-9870-402C3DE959BB + 694784

9 CoreFoundation 0x0000000198f30958 1B9B1E61-8CB4-3903-9870-402C3DE959BB + 694616

10 CoreFoundation 0x0000000198f300f0 1B9B1E61-8CB4-3903-9870-402C3DE959BB + 692464

11 CoreFoundation 0x0000000198f2b23c 1B9B1E61-8CB4-3903-9870-402C3DE959BB + 672316

12 CoreFoundation 0x0000000198f2aadc CFRunLoopRunSpecific + 464

13 CoreFoundation 0x0000000198f2b828 CFRunLoopRun + 60

14 xxx_Project 0x0000000100f6e40c -[JPUSHThread clientThreadMain] + 100

15 Foundation 0x000000019939b0a4 503900AF-2ECD-329F-B742-C07C3E672BEB + 1278116

16 libsystem_pthread.dylib 0x0000000198ccdd8c _pthread_start + 156

17 libsystem_pthread.dylib 0x0000000198cd176c thread_start + 8

2019-12-18 15:43:14.357377+0800 xxx_Project[957:163245] [reports] Main Thread Checker: UI API called on a background thread: -[UIApplication currentUserNotificationSettings]

PID: 957, TID: 163245, Thread name: org.hxhg.jiguang.thread, Queue name: com.apple.root.default-qos.overcommit, QoS: 0

Backtrace:

4 xxx_Project 0x0000000100f9a72c -[JPUSHAPNSStateReport init] + 232

5 xxx_Project 0x0000000100f9e4cc -[JPUSHClientController UDPReportAPNSState] + 44

6 xxx_Project 0x0000000100f9dd74 -[JPUSHClientController setup] + 484

7 Foundation 0x000000019939b22c 503900AF-2ECD-329F-B742-C07C3E672BEB + 1278508

8 CoreFoundation 0x0000000198f30a00 1B9B1E61-8CB4-3903-9870-402C3DE959BB + 694784

9 CoreFoundation 0x0000000198f30958 1B9B1E61-8CB4-3903-9870-402C3DE959BB + 694616

10 CoreFoundation 0x0000000198f300f0 1B9B1E61-8CB4-3903-9870-402C3DE959BB + 692464

11 CoreFoundation 0x0000000198f2b23c 1B9B1E61-8CB4-3903-9870-402C3DE959BB + 672316

12 CoreFoundation 0x0000000198f2aadc CFRunLoopRunSpecific + 464

13 CoreFoundation 0x0000000198f2b828 CFRunLoopRun + 60

14 xxx_Project 0x0000000100f6e40c -[JPUSHThread clientThreadMain] + 100

15 Foundation 0x000000019939b0a4 503900AF-2ECD-329F-B742-C07C3E672BEB + 1278116

16 libsystem_pthread.dylib 0x0000000198ccdd8c _pthread_start + 156

17 libsystem_pthread.dylib 0x0000000198cd176c thread_start + 8

2019-12-18 15:43:30.876049+0800 xxx_Project[957:163247] | JIGUANG | E - [JIGUANGSessionController] ack timeout for request rid: 21

2019-12-18 15:43:32.890411+0800 xxx_Project[957:163250] | JIGUANG | I - [JIGUANGSessionController] connecting with coreAddr 121.46.20.44,port 7010


``


我的解惑步骤如下:

1、看日志有:[UIApplication currentUserNotificationSettings],那么肯定是跟推送有关系,认为这个方法不能与极光推公用,导致的卡顿。将其注释,发现无效。

2、反其道而行之,注释极光推初始化文件,发现没有卡顿的问题了,由此判断,根本原因是极光推的问题。

于是打断点,看文档,查看极光推的初始化及其实现步骤,发现,整个流程都没什么问题。

3、查看极光推SDK最新版本,已经是V3.2.6,而项目使用的是V3.0.5版本,于是立即更新SDK,重新运行,发现不再出现类似的提示。

问题解决,这个处理方式。


发现不足:

刚开始尝试了1和2的方法,但是当时时间紧任务重,没想是SDK版本问题,着急先做新增模块了。后来在开发的过程中偶然回想到SDK版本迭代,才用了第3个处理方案。

但是,我查看了极光推的SDK更新日志,并没有提到卡顿的情况,以及解决方案;工单也没有看到类似的问题。要解决这个问题只能去不断的尝试,太过依赖开发经验,这是很致命的。


当然,还有个最直接的方法,就是使用Instruments-time profile 工具做性能优化检测,可以直接找出现卡顿的具体事哪个方法。然后作出对应的解决方法。至于性能优化检测怎么用,有很多可以参考的,这里不作简述了。


相关文章
|
18天前
|
Java Android开发
Rockchip系列之CAN APP测试应用实现(4)
Rockchip系列之CAN APP测试应用实现(4)
24 1
|
2月前
|
监控 安全 数据可视化
【教程】为什么要为 App 应用加固 ?如何为 App 应用加固 ?
【教程】为什么要为 App 应用加固 ?如何为 App 应用加固 ?
|
3月前
|
机器学习/深度学习 算法 数据可视化
基于Google Earth Engine云平台构建的多源遥感数据森林地上生物量AGB估算模型含生物量模型应用APP
基于Google Earth Engine云平台构建的多源遥感数据森林地上生物量AGB估算模型含生物量模型应用APP
107 0
|
14天前
|
搜索推荐 前端开发 JavaScript
【专栏】从网页轻松转换为应用越来越便捷
【4月更文挑战第27天】本文介绍了将网页转换为移动应用的在线生成App过程,包括原理(封装网页内容,添加移动特性)、优势(便捷高效,节省成本,快速上线)以及具体步骤(选择工具,准备内容,配置选项,生成测试,发布推广)。同时,注意版权、兼容性和用户体验问题。通过案例分析和实践经验分享,帮助读者深入了解如何通过在线工具实现App梦想,强调了网页优化、用户界面设计和个性化定制的重要性。
|
2天前
|
XML 开发框架 .NET
C#/ASP.NET应用程序配置文件app.config/web.config的增、删、改操作
C#/ASP.NET应用程序配置文件app.config/web.config的增、删、改操作
|
11天前
|
缓存 移动开发 前端开发
【专栏:HTML与CSS前端技术趋势篇】HTML与CSS在PWA(Progressive Web Apps)中的应用
【4月更文挑战第30天】PWA(Progressive Web Apps)结合现代Web技术,提供接近原生应用的体验。HTML在PWA中构建页面结构和内容,响应式设计、语义化标签、Manifest文件和离线页面的创建都离不开HTML。CSS则用于定制主题样式、实现动画效果、响应式布局和管理字体图标。两者协同工作,保证PWA在不同设备和网络环境下的快速、可靠和一致性体验。随着前端技术进步,HTML与CSS在PWA中的应用将更广泛。
|
11天前
|
前端开发 Android开发 开发者
【Flutter前端技术开发专栏】Flutter中的混合应用(Hybrid Apps)开发
【4月更文挑战第30天】本文探讨了使用Flutter开发混合应用的方法。混合应用结合Web技术和原生容器,提供快速开发和低成本维护。Flutter,一款现代前端框架,以其插件系统和高性能渲染引擎支持混合应用开发。通过创建Flutter项目、添加平台代码、使用WebView、处理平台间通信以及发布应用,开发者可构建跨平台混合应用。虽然混合应用有性能和用户体验的局限,但Flutter的跨平台兼容性和丰富的插件生态降低了开发成本。开发者应根据项目需求权衡选择。
【Flutter前端技术开发专栏】Flutter中的混合应用(Hybrid Apps)开发
|
25天前
tauri-app生成应用的图标
tauri-app生成应用的图标
9 0
|
27天前
|
搜索推荐 开发工具 Android开发
安卓即时应用(Instant Apps)开发指南
【4月更文挑战第14天】Android Instant Apps让用户体验部分应用功能而无需完整下载。开发者需将应用拆分成模块,基于已上线的基础应用构建。使用Android Studio的Instant Apps Feature Library定义模块特性,优化代码与资源以减小模块大小,同步管理即时应用和基础应用的版本。经过测试,可发布至Google Play Console,提升用户便利性,创造新获客机会。
|
2月前
|
前端开发 Android开发 iOS开发
应用研发平台EMAS使用 aliyun-react-native-push 库接入推送和辅助通道,推送都可以收到,但是在App切到后台或者杀掉进程之后就收不到推送了,是需要配置什么吗?
【2月更文挑战第31天】应用研发平台EMAS使用 aliyun-react-native-push 库接入推送和辅助通道,推送都可以收到,但是在App切到后台或者杀掉进程之后就收不到推送了,是需要配置什么吗?
32 2