iOS项目综合Android

浅谈APP弱网优化

2019-07-12  本文已影响0人  roc_鹏

当一个APP迭代完善到一定程度,就不得不考虑用户体验及性能优化。今天我们主要讨论弱网络环境下APP如何优化以达到更好的用户体验。

何为弱网络环境

从字面意来讲,就是在网速不好的情况下使用APP来处理网络请求操作。如3G、4G网络,在网络信号不好的情况下用户的网络速度维持在较低的水平。当然在WI-FI下也存在网速差的情况。通常网络延迟Ping值超过200ms。在这样差的网络环境下,如果不对弱网进行优化,APP在使用过程中难免加载缓慢,用户体验肯定大大折扣。

弱网环境模拟

那么我们如何在开发工程中测试弱网环境呢?
我们可以真机器连接xcode后,打开iPhone,选择【设置】->【开发者】->【Network Link Conditioner】->【Enable】->点亮Enable后的按钮。
在里面选择对应的网络环境模式进行测试。


WechatIMG5.jpeg

真实环境下如何检测APP弱网状态

在开发阶段我们可以利用手机设置弱网环境,那么在APP发布后如何检测APP弱网状态呢?
首先我们要区分网络状态和弱网络状态的区别。

网络状态

苹果监测网络状态,我们通常使用Reachablity框架或着使用AFNetworking中AFNetworkReachabilityManager来监测当前网络是否可用,是在WAN还是WiFi下。但在这里我可以告诉大家,通过以上方法无法检测实际的网络状态,它只是检测的是本地连接状态。在如下场景下用以上方法行不通的:
1.现在很流行的公用wifi,需要网页鉴权,鉴权之前无法上网,但本地连接已经建立;
2.存在了本地网络连接,但信号很差,实际无法连接到服务器;
3.iOS连接的路由设备本身没有连接外网。
在上面的情形下,使用上面的两种方法可能仍然返回网络可用。这里推荐一个框架 RealReachability。题外话就不啰嗦了。

弱网络状态

首先可以肯定的是有网的,有流量产生的。我们可以使用Ping值来检测当前网络是否为弱网。
ping 值是指,从PC对网络服务器发送数据到接收到服务器反馈数据的时间。也就是我们APP数据请求过去,再回来,所需要的时间,就是我们常说的ping值。大家可以查看下面的文章来了解什么是PING值,PING值的计算方法
苹果自己提供了 SimplePing 封装了 ping 的功能,它利用 resolve host,create socket(send & recv data), 解析 ICMP 包验证 checksum 等实现了 ping 功能。并且支持 iPv4 和 iPv6。
这样我们就可以在正式环境中,通过ping值来准确获取当前网络状况了。

弱网状态下如何优化

下面就是我们的重头戏,如何做弱网优化。我主要从移动前端以下几个方面说起:

结语

网络优化, 是App优化中相当重要的一项优化. 除了客户端, 接口的优化外, 很多一部分优化还依赖于服务器端, 包括服务器端的代码开发, 部署方式等。本人学识有限不便多谈。

上一篇下一篇

猜你喜欢

热点阅读