由于IPv6导致的iOS应用发布失败,是否该怪Azure?
2017-07-04 18:09
288 查看
IPv6已经被越来越广泛的支持了,尤其是苹果强制要求iOS (确切的说是iOS 9以及后续版本)应用必须支持IPv6之后(官方宣布),更将进一步推动IPv6的使用。
不过苹果应用作为客户端强制要求IPv6,是不是变相地要求服务端也得是IPv6支持的呢?最近就发现很多抱怨,说由于Azure不支持IPv6,所以导致调用了Azure服务的应用发布失败。比如这个Azure feedback里的评论。
首先我同意Azure或者其他服务提供商应该更多的支持IPv6,而且Azure上的VM和负载均衡在大部分区域已经支持IPv6了(具体可查看这里和这里)。不过回到这个问题的本身,iOS应用发布失败真的是因为调用了部署在Azure上的服务导致的?根据我的分析,不是。
首先,来看看苹果商店会做哪些检测来判定是否支持IPv6,总结下来有以下几点:
是否使用网络框架
是否使用只支持IPv4的API (注意这里的API不是指服务端API,而是客户端引用库里的API,尤其是网络相关的)
是否有写死的IPv4网络地址
所以压根就跟服务端没什么关系,除非把服务端的URI写死成IPv4地址了。
另外,看看苹果官网关于服务端的说法:
最后,看看客户端到服务端访问的全过程,如下图。即使服务端只支持IPv4,支持IPv6的苹果客户端也是可以工作的
综上所述,如果iOS应用由于IPv6检测失败导致发布失败,不应该去怪服务端,而应该检查自己的客户端代码:
是否有写死的IPv4地址
是否使用底层的网络API,比如gethostbyname,gethostbyname2
是否使用小单位地址存储类型,比如uint32_t, in_addr
不过苹果应用作为客户端强制要求IPv6,是不是变相地要求服务端也得是IPv6支持的呢?最近就发现很多抱怨,说由于Azure不支持IPv6,所以导致调用了Azure服务的应用发布失败。比如这个Azure feedback里的评论。
首先我同意Azure或者其他服务提供商应该更多的支持IPv6,而且Azure上的VM和负载均衡在大部分区域已经支持IPv6了(具体可查看这里和这里)。不过回到这个问题的本身,iOS应用发布失败真的是因为调用了部署在Azure上的服务导致的?根据我的分析,不是。
首先,来看看苹果商店会做哪些检测来判定是否支持IPv6,总结下来有以下几点:
是否使用网络框架
是否使用只支持IPv4的API (注意这里的API不是指服务端API,而是客户端引用库里的API,尤其是网络相关的)
是否有写死的IPv4网络地址
所以压根就跟服务端没什么关系,除非把服务端的URI写死成IPv4地址了。
另外,看看苹果官网关于服务端的说法:
Server updates
If you have a server running on the wider Internet, it is not necessary to update your server immediately. Your server will be accessible to IPv6-only devices via DNS64/NAT64.最后,看看客户端到服务端访问的全过程,如下图。即使服务端只支持IPv4,支持IPv6的苹果客户端也是可以工作的
综上所述,如果iOS应用由于IPv6检测失败导致发布失败,不应该去怪服务端,而应该检查自己的客户端代码:
是否有写死的IPv4地址
是否使用底层的网络API,比如gethostbyname,gethostbyname2
是否使用小单位地址存储类型,比如uint32_t, in_addr
相关文章推荐
- iOS 10 不提示「是否允许应用访问数据」,导致应用无法使用的解决方案
- 测试你的iOS应用是否支持IPV6
- 苹果IOS开发者账号总结--发布应用APP时team name是否可以随意写?
- iOS 10 不提示「是否允许应用访问数据」,导致应用无法使用的解决方案
- iOS App store 应用审核由于 IPv6 网络问题被拒的一点分析
- iOS应用获取用户成本因iPhone4S发布而降低
- iOS已发布应用中对异常信息捕获和处理
- VCS双机由于ID冲突导致启动失败
- sqlnet.ora限制导致双机应用资源启动失败
- Vsphere 抓取物理机时由于物理机使用GPT分区导致失败
- 一周中星期几发布iOS和Android App应用最好?
- VCS双机由于ID冲突导致启动失败
- 由于ActionList导致的数据保存失败的问题;
- 苹果最新发布“iOS应用开发线路图”
- [Cocoa]iOS 开发者账户,联机调试,发布应用事宜
- iOS 开发者账户,联机调试,发布应用事宜
- iOS已发布应用中对异常信息捕获和处理 推荐
- iOS 应用中检测网络是否存在的方法
- 由于系统时间修改导致Oracle启动失败
- Flash发布iOS应用全攻略(二)——如何成为一个合法的iOS开发者