公司遇到一件很棘手的事情,app发版之后,长江以北地方的用户网络信号很好,但是打开app之后网络连接不上,而长江以南的用户网络却很好。大家找了很多资料,提出一些方案:
1、是不是运营商把我们公司的ip给限制流量了
2、是不是用户所在的网络环境比较差
3、当数据网络切换wifi,或者wifi切换数据网络的时候,会出现一会延迟,有可能会导致无法连接
4、我们服务器的配置问题是否出了问题,针对以上的猜测,我们团队准备处理问题
我们先说说运营商是如何给手机提供服务的:
GPRS是一种以全球手机系统(GSM)为基础的数据传输技术,可说是GSM的延续。GPRS和以往连续在频道传输的方式不同,是以封包(Packet)式来传输,因此使用者所负担的费用是以其传输资料单位计算,并非使用其整个频道,理论上较为便宜。
使用GPRS手机需要设一个连接(APN)设置(使用移动梦网WAP业务设为CMWAP,使用其他互联网业务设为CMNET),每个手机号都对应了一个GPRS的上网账号,里面纪录了对应账号的上网数据,而运营商分配给每个账号的存储空间是极小的。时间长了,积累的历史数据占了大部分空间,速度就慢了。拨打当地运营商人工客服电话,要求作一次GPRS的数据刷新,15分钟后开关机1次。这个方法特别适合从没作过GPRS数据刷新的朋友。
也不是这个问题导致的。
三大运营商的apn:
移动: cmiot cmnet cmlte cmtds
cmiot :中国移动物联网专用apn
cmnet :移动普通手机专用apn
cmlte :上网可以无线连接到中国移动的4G网络,实现高速上网和流畅的视频观看体验
cmtds是中国移动独立建设的全国性的、以宽带互联网技术为核心的电信数据3G网络
cmwap使用HTTP代理协议和WAP网关协议可以访问到Internet
联通: 3gnet scuiot cuiot wonet gmtds
3gWAP:3gWAP是中国联通3G的接入点名称,用于手机上网的。
3gnet :3gNET是中国联通3G的另一个接入点名称。3gNET主要用于直接接入互联网,上网随心。简单来说如果你是通过手机接入3gNET,只要你手机的内存够大,应用市场里的软件你都可以随意下载到手机中,不会受到限制scuiot :联通物联卡scuiot是联通在2017年9月份发布的一款物联网卡,目前有2g和4g两种版本
wonet :wonet根据联通公司4G发展策略,4GLTE及3G定制终端接入点名称设置为wonet
cuiot :scuiot和cuiot都是联通apn接入点之一,联通的apn一般设置较多的是cuiot
电信: ctnet ctm2m ctlte
CTNET:互联网(有套餐,各地价格不同,就是广告里主推的那种)我们理解的3G手机上网一般是指上互联网,也就是CTNET;这个有点类似于中国移动的CMNET,是只开放互联网连接
ctlte:具备大数据传输,具有一定的稳定性
ctm2m :电信物联网卡
如何设置APN:
下来填入上面的就可以自己设置apn了。
顺便加点知识IPv6与IPv4有什么区别?
IPv6的地址空间更大。IPv4中规定IP地址长度为32,即有232-1个地址;而lPv6中IP地址的长度为128,即有24128-1个地址。夸张点说就是,如果IPV6被广泛应用以后,全世界的每一粒沙子都会有相对应的一个IP地址。
IPv6是下一版本的互联网协议,也可以说是下一代互联网的协议,它的提出最初是因为随着互联网的迅速发展,IPv4定义的有限地址空间将被耗尽,地址空间的不足必将妨碍互联网的进一步发展。为了扩大地址空间,拟通过IPv6重新定义地址空间。IPv6采用128位地址长度,几乎可以不受限制地提供地址。按保守方法估算IPv6实际可分配的地址,整个地球的每平方米面积上仍可分配1000多个地址。在IPv6的设计过程中除了一劳永逸地解决了地址短缺问题以外,还考虑了在IPv4中解决不好的其它问题,主要有端到端IP连接、服务质量(QoS)、安全性、多播、移动性、即插即用等。
最后解决问题是,对代码进行最终定位,发现ios的可以正常运行,但是Android的却是不可以,经过代码分析发现,Android代码里面为了判别网络,直接ping了www.baidu.com。当我们app处于高峰时期的时候,百度会对同一接口的请求进行屏蔽,导致Android无法连接网络。ios的代码ping了我们服务器的地址,我们服务器没对请求进行屏蔽,所以把ping百度的代码去掉,从新发版就好了。