苹果IPv6的$ HTTP离子拒绝
我收到了我的应用程序被拒绝前几天由于以下原因:
我们发现在你的应用程序的一个或更多的错误时,iPad和 iPhone运行iOS 9.3.5审查在连接到IPv6网络的Wi-Fi上。
具体而言,我们发现登录时产生了一条错误消息。 我们附上了截图供您参考。
下一步
请运行在设备上的应用程序,同时连接到IPv6网络 (所有的应用程序必须支持IPv6),以确定问题的(一个或多个),然后修改并重新提交 您的应用程序进行审核。
如果我们误解了您应用的预期行为,请回复 此消息在Resolution Center中,以提供有关这些 功能如何工作的信息。
对于新的应用程序,从 设备上卸载您应用程序的所有先前版本,然后安装并按照步骤重现问题。 如需更新,请安装新版本作为先前的 版本的更新,然后按照步骤重现问题。
资源
有关支持IPv6网络的信息,请参阅 支持IPv6 DNS64/NAT64网络和关于网络
如果你有困难重现报告的问题,请尝试 测试中所描述的工作流程技术Q & A QA1764:如何 重现针对App Store提交报告的错误。
我已经设置了两个IPv6网络,其中一个在时间胶囊中,另一个从我的MacBook Pro共享。从Time Capsule的网络(谁是完整的IPv6网络),该应用程序正常工作。从MacBook Pro共享网络中,我收到两个结果...当设备连接到此IPv6网络并且只配置了DNS时,该应用程序可以正常工作,但是当它接收到DNS和一个格式为169.254.XX的IP时,应用程序会崩溃连接到服务器。
问题是,$ http请求应答由错误端而不是成功端进行。我用Ionic $ http和cordova-http插件(https://github.com/Switch168/cordova-HTTP#110)尝试过,结果是一样的。我不知道发生了什么,因为我与AngularJS有一个Cordova(只有Cordova,不是Ionic)项目,它不会失败。那么,Ionic $ http和AngularJS $ http有什么区别?我不明白有什么区别。请参阅this image here
$ HTTP请求的例子(使用离子$ http和科尔多瓦-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;
}
考虑它的几个月,因为你张贴了这个,我希望你已经解决了这个问题。我正在回答这个问题,就像我在寻找解决方案时所做的一样。
此问题主要是由于服务器中的问题引起的。您的应用程序需要使用ipv6才能让Apple批准您的应用程序,这一点很重要。 (见第一条评论)有一个方便的工具,帮助我了解是否属于这种情况。
这是http://ipv6-test.com/validate.php
如果是这样的问题,解决方法如下:
- 添加IPv6地址到Web服务器。
- 为您的网站添加AAAA记录。
- 为裸露的域添加AAAA记录。
- 确保您的DNS服务器具有IPv6地址。
- 如有必要,为名称服务器添加IPv6胶水。
- 为传入邮件服务器添加IPv6地址。
- 为您的邮件服务器的IPv6地址添加反向DNS。
- 检查您的SPF记录。
如果您不熟悉任何的上述步骤,请this link.
“_IT重要的,你的服务器是通过IPv6可达苹果批准您app._”这是不正确的。您的应用程序需要使用IPv6,但服务器只能使用IPv4。 Apple测试网络使用NAT64来促进这一点。许多人在没有IPv6服务器的情况下批准了他们的应用程序。我会主张每个人都将他们的服务器转换为IPv6,但这并不是获得应用程序批准的要求。 –
根据评论更新了答案。 – esafwan
编辑并没有真正解决答案。它仍然是使您的服务器可以通过IPv6访问,而不是让您的应用程序在IPv6上工作。 –