zoukankan      html  css  js  c++  java
  • 由于IPv6导致的iOS应用发布失败,是否该怪Azure?

    IPv6已经被越来越广泛的支持了,尤其是苹果强制要求iOS (确切的说是iOS 9以及后续版本)应用必须支持IPv6之后(官方宣布),更将进一步推动IPv6的使用。

    不过苹果应用作为客户端强制要求IPv6,是不是变相地要求服务端也得是IPv6支持的呢?最近就发现很多抱怨,说由于Azure不支持IPv6,所以导致调用了Azure服务的应用发布失败。比如这个Azure feedback里的评论。

    首先我同意Azure或者其他服务提供商应该更多的支持IPv6,而且Azure上的VM和负载均衡在大部分区域已经支持IPv6了(具体可查看这里这里)。不过回到这个问题的本身,iOS应用发布失败真的是因为调用了部署在Azure上的服务导致的?根据我的分析,不是。

    首先,来看看苹果商店会做哪些检测来判定是否支持IPv6,总结下来有以下几点:

    1. 是否使用网络框架
    2. 是否使用只支持IPv4的API (注意这里的API不是指服务端API,而是客户端引用库里的API,尤其是网络相关的)
    3. 是否有写死的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检测失败导致发布失败,不应该去怪服务端,而应该检查自己的客户端代码:

    1. 是否有写死的IPv4地址
    2. 是否使用底层的网络API,比如gethostbyname,gethostbyname2
    3. 是否使用小单位地址存储类型,比如uint32_t, in_addr
  • 相关阅读:
    TOMCAT添加管理用户认证
    NGINX配置详解及应用
    Zabbix部署
    NGINX+TOMCAT实现反向代理
    数据库-高级部分
    数据库-用户管理与pymysql
    数据库-表操作(CRUD)
    数据库-表关系练习
    数据库-表关系
    数据库-基础概念
  • 原文地址:https://www.cnblogs.com/hula100/p/7117913.html
Copyright © 2011-2022 走看看