Ios 苹果IPv6$http

Ios 苹果IPv6$http,ios,cordova,ionic-framework,ipv6,appstore-approval,Ios,Cordova,Ionic Framework,Ipv6,Appstore Approval,由于以下原因,几天前我收到了被拒绝的应用程序: 我们在iPad和iPad上查看时发现你的应用程序中有一个或多个bug 在连接到IPv6网络的Wi-Fi上运行iOS 9.3.5的iPhone 具体来说,我们发现登录时会产生错误消息。 我们附上了一张截图供您参考 下一步 连接到IPv6网络时,请在设备上运行应用程序 (所有应用程序必须支持IPv6)以确定问题,然后进行修订和 重新提交应用程序以供审阅 如果我们误解了您的应用程序的预期行为,请回复 在Resolution Center中显示此消息,以提

由于以下原因,几天前我收到了被拒绝的应用程序:

我们在iPad和iPad上查看时发现你的应用程序中有一个或多个bug 在连接到IPv6网络的Wi-Fi上运行iOS 9.3.5的iPhone

具体来说,我们发现登录时会产生错误消息。 我们附上了一张截图供您参考

下一步

连接到IPv6网络时,请在设备上运行应用程序 (所有应用程序必须支持IPv6)以确定问题,然后进行修订和 重新提交应用程序以供审阅

如果我们误解了您的应用程序的预期行为,请回复 在Resolution Center中显示此消息,以提供有关这些 这些功能是为了工作

对于新应用,请从中卸载应用的所有早期版本 设备,然后安装并按照步骤重现问题。 对于更新,请安装新版本作为对以前版本的更新 版本,然后按照步骤重现问题

资源

有关支持IPv6网络的信息,请参阅 支持IPv6 DNS64/NAT64网络和关于联网

如果您在复制报告的问题时遇到困难,请尝试 测试技术问答QA1764:如何 复制针对应用商店提交的报告错误

我已经设置了两个IPv6网络,一个在时间胶囊中,另一个在MacBook Pro中共享。从Time Capsule的网络(完全是IPv6网络)来看,该应用程序工作正常。从MacBook Pro共享网络我收到两个结果。。。当设备连接到此IPv6网络并仅配置DNS时,应用程序工作,但当它接收到DNS和一个169.254.X.X格式的IP时,应用程序会中断与服务器的连接

问题是,$http请求-答案是错误端,而不是成功端。我试过使用Ionic$http和cordova http插件(),结果是一样的。我不知道发生了什么,因为我有一个与AngularJS合作的Cordova(只有Cordova,不是Ionic)项目,它没有失败。那么,Ionic$http和AngularJS$http之间有什么区别呢?我不明白有什么区别

请看

$http请求示例(使用Ionic$http和cordova http插件):


考虑到你已经发布了几个月了,我希望你已经解决了这个问题。我会回答这个问题,以防有人像我在寻找解决方案时那样降落在这里

此问题主要是由于服务器中的问题引起的。你的应用程序需要在ipv6上运行,这一点很重要,苹果公司才能批准你的应用程序。(见第一条评论)有一个方便的工具可以帮助我找出是否是这种情况

是的

如果这就是问题所在,解决方案如下:

  • 将IPv6地址添加到web服务器
  • 为您的网站添加AAAA记录
  • 为裸域添加AAAA记录
  • 确保DNS服务器具有IPv6地址
  • 如有必要,为名称服务器添加IPv6胶水
  • 为传入邮件服务器添加IPv6地址
  • 为邮件服务器的IPv6地址添加反向DNS
  • 检查您的SPF记录

  • 如果您不熟悉上述任何步骤,请检查

    “通过ipv6访问您的服务器对于苹果批准您的应用程序非常重要。”这根本不是事实。您的应用程序需要在IPv6上工作,但服务器只能是IPv4。苹果的测试网络使用NAT64来实现这一点。许多人在没有IPv6服务器的情况下批准了他们的应用程序。我主张每个人都将其服务器转换为IPv6,但这不是获得应用程序批准的要求。根据评论更新了答案。编辑并不能真正修复答案。它仍然只是让您的服务器在IPv6上可访问,而不是让您的应用程序在IPv6上工作。@RonMaupin在IPv6网络上使用$http时,它会查找IPv6地址。在IPv4网络上时,它默认为IPv4。如果您的dns和服务器未设置为接受IPv6查找,则angular上的$http可能会中断。
    callWs: function(ws, method, data){
      var defferer = $q.defer();
    
      if (device.platform == 'Android' || device.platform == 'iOS'){
    
        $window.CordovaHttpPlugin.postJson(url_request,
          data_sent,
          {"cache-control": "no-cache, private, no-store, must-revalidate",
          "Authorization": basic_auth,
          "Content-Type": "application/x-www-form-urlencoded; charset=utf-8"
          },
        function(res) {
          defferer.resolve(res.data);
        }, function(error) {
          defferer.reject(error);
        });
    
      } else {
    
        $http({
            url: url_request,
            method: 'POST',
            withCredentials: true,
            timeout: HTTPTIMEOUT,
            headers: {
                'cache-control': 'no-cache, private, no-store, must-revalidate',
                'Authorization': basic_auth,
                'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8'
            },
            dataType : 'json',
            data: data_sent
        }).then(function (res) {
          defferer.resolve(res.data);
        }, function (error) {
          defferer.reject(error);
        });
    
      }
    
      return defferer.promise;
    
    }