[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 工具做性能优化检测,可以直接找出现卡顿的具体事哪个方法。然后作出对应的解决方法。至于性能优化检测怎么用,有很多可以参考的,这里不作简述了。


相关文章
|
2月前
|
移动开发 Android开发 数据安全/隐私保护
移动应用与系统的技术演进:从开发到操作系统的全景解析随着智能手机和平板电脑的普及,移动应用(App)已成为人们日常生活中不可或缺的一部分。无论是社交、娱乐、购物还是办公,移动应用都扮演着重要的角色。而支撑这些应用运行的,正是功能强大且复杂的移动操作系统。本文将深入探讨移动应用的开发过程及其背后的操作系统机制,揭示这一领域的技术演进。
本文旨在提供关于移动应用与系统技术的全面概述,涵盖移动应用的开发生命周期、主要移动操作系统的特点以及它们之间的竞争关系。我们将探讨如何高效地开发移动应用,并分析iOS和Android两大主流操作系统的技术优势与局限。同时,本文还将讨论跨平台解决方案的兴起及其对移动开发领域的影响。通过这篇技术性文章,读者将获得对移动应用开发及操作系统深层理解的钥匙。
|
3月前
【Azure Logic App】在逻辑应用中开启或关闭一个工作流是否会对其它工作流产生影响呢?
【Azure Logic App】在逻辑应用中开启或关闭一个工作流是否会对其它工作流产生影响呢?
|
3月前
|
存储 SQL JSON
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
|
3月前
|
安全 前端开发 网络安全
【Azure App Service】访问App Service应用报错 SSL: WRONG_VERSION_NUMBER
【Azure App Service】访问App Service应用报错 SSL: WRONG_VERSION_NUMBER
136 0
|
3月前
|
存储 Linux 网络安全
【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Linux/Linux Container)
【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Linux/Linux Container)
|
3月前
|
开发框架 前端开发 JavaScript
【Azure App Service】.NET应用读取静态文件时遇见了404错误的解决方法
【Azure App Service】.NET应用读取静态文件时遇见了404错误的解决方法
|
3月前
|
网络安全 API 数据安全/隐私保护
【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Windows)
【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Windows)
|
3月前
|
存储 大数据 索引
【Azure Contianer Apps】在云上使用容器应用时收集日志遇见延迟问题
【Azure Contianer Apps】在云上使用容器应用时收集日志遇见延迟问题
|
3月前
|
安全 API 网络架构
【Azure Logic App】使用 Easy Auth 在标准逻辑应用(Standard Logic App)中触发工作流
【Azure Logic App】使用 Easy Auth 在标准逻辑应用(Standard Logic App)中触发工作流
|
3月前
|
开发者
【Azure Logic App】中国区标准版本的逻辑应用(Standard Logic App)无法查看历史执行记录的解决之道
【Azure Logic App】中国区标准版本的逻辑应用(Standard Logic App)无法查看历史执行记录的解决之道

热门文章

最新文章