提升iOS审核通过率之“IPv6兼容测试”
作者:jingle 腾讯系统测试工程师
商业转载请联系腾讯WeTest授权,非商业转载请注明出处。
一、背景
在WWDC2015大会上苹果宣布iOS9将支持纯IPv6的网络服务。2016年6月1号,所有提交到AppStore上的应用都必须支持IPv6,否则将通不过审核。为了确保我们的app正常提交到苹果进行审核,不耽误项目进度,我们必须在提交到AppStore前对待提交app做IPv6兼容测试。
二、为什么要使用IPv6
从IPv4到IPv6,IP地址的数量从2的32次方扩展到2的128次方,这个是IPv6碾压IPv4的地方,足够地球上的每粒沙子分配一个或者多个IP地址。当然,除了IPv4本身的原因(地址枯竭)外,下面提到的几点,也说明了IPv6比IPv4更加高效,例如:
1. 避免了网络地址转换(NAT)的需要
2. 通过使用简化的头提供了更快的路由通过网络
3. 防止网络碎片
4. 避免广播邻居地址解析
但最根本的原因莫过于苹果审核的压力,不得不将app适配IPv6。
三、测试应该关注的点
1. 保证项目代码中使用的是更高层次的网络API,避免使用socket API
在苹果官网上,有这么一张图,说明了哪些框架支持IPv6,哪些不支持, 如下图所示:
图中蓝色部分默认支持IPv6,如果项目代码中使用的是WebKit或者AFNetWorking这些网络框架,那么需要改动的代码不会很多。
2. 走读代码中是否使用了IP地址
比如,检查代码中是否包含了类似于192.168.0.1的地址,如果有,需要换为其对应的域名地址。
3. 检查代码是否包含只适用于IPv4的API
确保项目代码中没有以下API:
inet_addr()
inet_aton()
inet_lnaof()
inet_makeaddr()
inet_netof()
inet_network()
inet_ntoa()
inet_ntoa_r()
bindresvport()
getipv4sourcefilter()
setipv4sourcefilter()
如果有了这些代码也不要怕,只需要将对应的API换为IPv6所支持的API即可,下表是IPv4和IPv6的对应关系表:
4. 本地搭建IPv6环境,回归app中所有网络请求的模块
我们现在连的网络,无论是wifi还是移动、联通、电信的各种不同类型的网络,都是IPv4的,也就是实际生活中和我们打交道的全是IPv4环境。但我们需要测试IPv6在iOS APP中的兼容性,是必然不能在现有的网络环境下测试的,需要测试人员自己构建测试环境。
值得欣慰的是,苹果公司在MAC OS X 10.11以后的系统中就埋下了开启IPv6环境的彩蛋。我们所要做的就是参照官方文档,在本地搭建这样的测试环境。即用MAC机建立一个热点,然后用iPhone连接该热点,回归待测模块。简单的示意图如下所示:
a)需要准备的设备:
系统是OS X 10.11以后版本的MAC机(该MAC机要使用非WIFI方式上网,且支持双网卡)一台,iPhone手机一台。这个地方有些土豪同学可能会有疑问,我的Mac本本只有无线网卡,没有有线网孔啊,这时你就需要一个苹果Thunderbolt千兆以太网转换器,如下图所示:
b)开启NAT64网络
打开“系统偏好设置”,按住option键的同时点击“共享”,如下图所示:
之后,在共享页就能看到“创建NAT64网络”的可选框了,如下图所示:
到此,我们的NAT64网络就创建完成了,剩下的就是创建热点了。
c)在MAC机上创建WiFi热点
MAC上创建WiFi热点,很简单,这里就不再详细说明了,看下面这张图也能知道怎么创建的:
这里想说明一点,也是比较关键的一点:点击上图中的“启动”button后,有些网络会出现如下图所示的共享失败情况:
出现这种情况,说明你当前使用的网络受到了802.1x协议的限制,无法共享。只能通过去802.1x保护或者换其他可以共享的网络进行共享。
如果是在公司网络,可以寻求IT进行网络切换,或者找开发他们搭建好的网络环境进行测试(ps:如果开发没有IPv6网络环境,且发版时间又比较紧张的情况下,可以和老大申请回家办公,或者随便一个咖啡馆)。
如果热点搭建成功,是可以在mac机右上角的网络状态处看到如下图所示的图标:
d)iPhone手机连接创建好的热点,连接成功后,可以查下iPhone手机的IP地址。
我这里看到的是169.254.*.*的IP地址,这类地址属于保留地址,具体什么是保留地址,请自行百度。
e)回归待测app,确保所有的网络请求在本地搭建好的IPv6网络环境下正常的,这里说的“正常”就是指和在IPv4网络环境下的表现一致。
经测试,在IPv6网络环境下,QQ可以正常使用,微信网络连接失败(微信最新的SDK已支持IPv6)。
最后,如果感兴趣的话,可以用抓包工具看一下,IPv6的地址长什么样子,之前都是在课本中见到过,这次测试也算是头一次真正看到IPv6的地址啦,如下图所示:
四、项目实战
这里以地图SDK为例,简单说明具体的测试步骤。地图SDK,是地图软件开发工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合,它包括接口API、示例代码、支持性的技术注解或者其他的支持文档,有了这些,第三方开发者可以很方便的使用这些API开发自己所需的功能,这里附上腾讯地图开放平台地址:http://lbs.qq.com/ios_v1/index.html。
目前和腾讯地图SDK合作的小伙伴有京东、58同城、携程、嘀嘀等。
1. 首先需要分析该SDK使用到了哪些库
地图SDK中使用的framework如下图:
针对地图SDK中使用到的这些库,逐一确认是否支持IPv6,比如WebKit.framework框架,苹果官方文档就明确说明了支持IPv6。
2. 检查SDK源码中是否使用到了IP地址
这块主要是走查所有有网络请求的模块,是否将IP地址替换为了域名,这块一般是在代码某个配置文件中进行定义的。比如,下图所示的server地址:
3. 检查代码中是否包含只支持IPv4的API
由于SDK使用的是WebKit.framework,不存在底层的socket API,这块没有风险。
4. 本地搭建测试环境,回归SDK网络相关模块
这里,需要保证在IPv6环境下的功能与在IPv4环境下表现一致的,就可以说明测试通过。
5. 抓包确认
最后,可以通过抓包看看是否真的走的是所搭建的IPv6的测试环境,当然也可以亲眼目睹下IPv6的IP地址长什么样儿。
【腾讯WeTest iOS预审工具】
为了提高IEG苹果审核通过率,腾讯专门成立了苹果审核测试团队,打造出iOS预审工具这款产品。经过1年半的内部运营,腾讯内部应用的iOS审核通过率从平均35%提升到90%+。
现将腾讯内部产品的过审经验,以线上工具的形式共享给各位。在WeTest腾讯质量开放平台上可以在线使用。点击链接:http://wetest.qq.com/product/ios 即可立即体验!
iOS预审工具分四步进行预审服务
【一键扫描】只需提供ipa包、审核图片、审核视频、应用描述,即可在4小时内拿到一份完整的检测报告,定位问题的同时提供解决方案,助您成功通过审核。
【案例分享】集结iOS审核失败常见原因,丰富案例为您提供参考依据。
【专家服务】腾讯专家团队为您分析各种疑难杂症,提出最优解决方案。
【ASO优化】专业优化AppStore内关键字搜索结果,让产品离用户更近一步。希望App/手游在预审验收保证下,都可以快快乐乐过审,开开心心赚钱。
关注“腾讯WeTest”公众号,获取更多干货:
提升iOS审核通过率之“IPv6兼容测试”的更多相关文章
- 告别被拒,如何提升iOS审核通过率(下篇)——应用内容检查大法与提审资源检查大法
WeTest 导读 之前的<告别被拒,如何提升iOS审核通过率(上篇)>分享了客户端检查的相关要点,本篇会给大家介绍有关应用内容的检查项和提审资源相关检查项要点. 应用内容检查大法 苹果对 ...
- iOS审核总被拒?腾讯教你提升iOS审核通过率!
作者:Jamie,腾讯开发工程师,在iOS预审和ASO优化领域从事专项测试相关工作,为腾讯游戏近100个产品提供专项服务. 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. WeTest ...
- 告别被拒,如何提升iOS审核通过率(上篇)
iOS审核一直是每款移动产品上架苹果商店时面对的一座大山,每次提审都像是一次漫长而又悲壮的旅行,经常被苹果拒之门外,无比煎熬.那么问题来了,我们有没有什么办法准确把握苹果审核准则,从而提升审核的通过率 ...
- 三步走起 提升 iOS 审核通过率 上篇
<ignore_js_op> Bugly 技术干货系列内容主要涉及移动开发方向,是由 Bugly 邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟撰写而成,内容均属原创,转载请标明 ...
- 三步走起 提升 iOS 审核通过率 下篇
根据2015年的数据统计情况,并结合<苹果应用商店审核指南>,互娱 iOS 预审组通过细分将预审工作划为3大模块:客户端资源检查.应用内容检查和提审资源检查. 在上一篇文章中,Bugly ...
- iOS审核秘籍】提审资源检查大法
iOS审核秘籍]提审资源检查大法 2015/11/27 阅读(752) 评论(1) 收藏(6) 加入人人都是产品经理[起点学院]产品经理实战训练营,BAT产品总监手把手带你学产品点此查看详情! 本篇主 ...
- iOS审核这些坑,腾讯游戏也踩过
作者:Jamie,专项技术测试工程师,在iOS预审和ASO优化领域从事专项测试相关工作,为腾讯游戏近100个产品提供专项服务. WeTest 导读 在App上架苹果应用商店的过程中,相信大多数iOS开 ...
- iOS IPv6兼容支持和IPv6审核被拒收集整理
最近遇到一个大坑:IPv6审核被拒问题,于是广寻解决方案,先把一些可以用资料文档收集起来备用.也希望同行能用得着. 官方文档说明:Supporting IPv6 DNS64/NAT64 Network ...
- ipa包兼容性大作战!WeTest iOS深度兼容测试全新升级
2018年,移动端适配话题热闹无比,有iOS新版本新机型发布,全面屏.异形屏.曲面屏争相斗艳,从而产生了各类特殊的屏幕分辨率设备. 正是因为这些特殊分辨率,导致2018年手机设备频繁出现适配问题,如屏 ...
随机推荐
- Extjs6中的新特性
Ext JS在Sencha框架中引入了许多新的和令人兴奋的改进.这些变化为基于所有现代浏览器.设备和屏幕尺寸带来了新的功能和可用性. 工具包(ToolKits) Ext JS 6最大的变化就是将Ext ...
- windows server 2012 AD 活动目录部署系列(七)Active Directory 的授权还原
域内所有的域控制器都有一个内容相同的Active Directory,而且 Active Directory 的内容是动态平衡的,也就是说任何一个域控制器修改了 Active Directory,其他 ...
- JNI中的内存管理(转)
源:JNI中的内存管理 JNI 编程简介 JNI,Java Native Interface,是 native code 的编程接口.JNI 使 Java 代码程序可以与 native code 交互 ...
- XCode里的模拟器到底在哪里?我的App被放到哪里了?如何寻找真机的沙盒文件?
一. 开发iOS,必然少不了和XCode这个家伙打交道.平时我们调试自己的App的时候,最常用到的就是模拟器Simulator了,调试的时候,我们的App会自动被XCode安装到模拟器中去,不过: 你 ...
- php 中文切割字符串长度
function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true) { if(function_ex ...
- IOS开发-UI学习-根据URL显示图片,下载图片的练习(button,textfield,image view,url,data)
编写一个如下界面,实现: 1.在文本输入框中输入一个网址,然后点击显示图片,图片显示到UIImageView中. 2.点击下载,这张显示的图片被下载到手机的Documents文件夹下的Dowmload ...
- Binary转换成Hex字符串
想调优别人的代码,网上搜索一下Binary to Hexstring的转换,全是利用printf.scanf之类实现的,效率好低,还是自己想个简单的办法吧! .......此处省略一万字....... ...
- VMWare虚拟机bridged、host-only和NAT网络模式的区别和用法
VMWare提供了三种工作模式,它们是bridged(bridged 模式).NAT( 网络地址转换模式)和host-only(主机模式) . 1 VMWare虚拟机bridged.host-onl ...
- BZOJ2698染色
2698: 染色 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 223 Solved: 150[Submit][Status][Discuss] De ...
- Zju1290 Word-Search Wonder(http://begin.lydsy.com/JudgeOnline/problem.php?id=2768)
2768: Zju1290 Word-Search Wonder Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 4 Solved: 2[Submit] ...