【发布时间】:2018-06-01 14:48:45
【问题描述】:
我正在尝试在 Apple 中提交我的 iOS 应用程序。但是由于 IPv6 的问题,他们拒绝了我的应用程序:他们试图从 IPv6 网络连接到我们的服务器,但没有成功。
我们更改了服务器端:现在我们的服务器已准备好使用 IPv6(我在 ipv6test.com 上对其进行了测试,一切都很好)。
在我的应用程序中,我使用 URLSession.shared.dataTask 创建请求。 Apple 在这样的代码行中遇到了问题:
var urlRequest: URLRequest = URLRequest(url: myServerUrl);
urlRequest.httpMethod = "POST";
..... //preparing POST data, setting timeout, etc.
urlRequest.httpShouldHandleCookies - true;
let task = URLSession.shared.dataTask(with: urlRequest, completionHandler: {(data: Data?, response: URLResponse?, error: Error?) in
do {
guard let resp = response as? HTTPURLResponse else { throw NetworkError.connectionError;} //here they got a problem
....
}
catch {...}
我不明白,为什么他们无法连接到我们的服务器。从我们的网络 (IPv4) 来看,一切都很好。
最奇怪的事情是:我昨天在 10:05 发送了这个应用程序。在 10:30 我们看到了来自 Apple 网络的一个请求,并且它是成功的(200 状态)。看起来很奇怪,因为他们写道,他们甚至无法在这个应用程序中授权......
请问有人可以帮忙解决这种情况吗?不明白,哪里出了问题,怎么办。
【问题讨论】:
-
你有带sim卡的实体设备吗?
-
不幸的是,没有。我有没有 SIM 卡的物理设备。我在模拟器中测试了我的应用程序。但在提交之前,我将我的应用程序安装在 2 个带 SIM 卡的真实设备上,一切正常。
-
这个问题可能与 IPv6 无关,而 Apple(出于某种原因)只是无法在您的应用中授权。为什么你认为问题与你代码中的这个特定部分有关?
-
因为我添加了“断点” - 在 catch 块中,我显示了程序中出现问题的步骤。我为此请求设置了超时(60 秒)。苹果表示,该应用程序在 1 分钟内尝试连接,然后显示此错误。所以,超时了。
标签: ios swift networking ipv6