Rom*_*man 14 itunesconnect ipv6 app-store ios swift
错误在哪里?
Apple拒绝app并发送消息:
表现 - 2.1
我们在连接到IPv6网络的Wi-Fi上运行iOS 9.3.5的iPad和iPhone上查看了应用中的一个或多个错误.
具体而言,在进行投票和支持IPv6 DNS64/NAT64网络时会显示错误
"如果您使用NSURLSession和CFNetwork框架等高级网络API编写客户端应用程序并按名称连接,则不需要为应用程序更改任何内容以使用IPv6地址."
Apple Developer Forums上的下一篇文章说:
N 3 - 我需要更新我的服务器吗?这取决于服务器的运行位置:如果您在更广泛的Internet上运行服务器,答案是否定的.只有IPv6设备才能通过DNS64/NAT64访问您的服务器.您应该更新服务器以支持IPv6,但这是您可以在自己的时间内完成的事情.如果您的iOS应用程序中嵌入了服务器(例如,允许用户与应用程序之间传输文件的Web服务器),则应确保它在仅限IPv6的环境中正常运行.
我的主人说:
我们没有看到任何问题,因为服务器的IPv6服务器是IPv4,将通过DNAT/SNAT提供
我的网站(服务器):http: //badroads.info
我在App中的代码(此代码在一周前在另一个应用程序中得到批准):
func sendToServer(dataFromDictionary: Dictionary<NSString, AnyObject>) {
let url: NSURL = NSURL(string: "http://badroads.info/t-or-c/****.php")!
let request:NSMutableURLRequest = NSMutableURLRequest(URL:url)
let session = NSURLSession.sharedSession()
request.HTTPMethod = "POST"
do {
request.HTTPBody = try NSJSONSerialization.dataWithJSONObject(dataFromDictionary, options: [])
} catch let parseError as NSError {
request.HTTPBody = nil
dispatch_async(dispatch_get_main_queue()) {
EZLoadingActivity.hide()
self.alertMessageSuccessError("Error", messageM: "Oops, something went wrong! Try again, please!")
}
}
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
if error != nil {
dispatch_async(dispatch_get_main_queue()) {
EZLoadingActivity.hide()
self.alertMessageSuccessError("Error", messageM: "Oops, something went wrong! Try again, please!")
}
return
}
let json: NSDictionary?
do {
json = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableLeaves) as? NSDictionary
} catch let parseError as NSError {
dispatch_async(dispatch_get_main_queue()) {
EZLoadingActivity.hide()
self.alertMessageSuccessError("Error", messageM: "Oops, something went wrong! Try again, please!")
}
return
}
if let parseJSON = json {
if let status = parseJSON["status"] as? String {
if status == "200" {
dispatch_async(dispatch_get_main_queue()) {
EZLoadingActivity.hide()
self.defaultsDataLogin.setObject(true, forKey: "isDone")
self.alertMessageAdM("Successfully!", messageM: "See results!")
}
} else if status == "400" {
dispatch_async(dispatch_get_main_queue()) {
EZLoadingActivity.hide()
self.alertMessageSuccessErrorAdM("Error", messageM: "You have already data!")
}
} else {
dispatch_async(dispatch_get_main_queue()) {
EZLoadingActivity.hide()
self.alertMessageSuccessError("Error", messageM: "Oops, something went wrong! Try again, please!")
}
}
} else {
dispatch_async(dispatch_get_main_queue()) {
EZLoadingActivity.hide()
self.alertMessageSuccessError("Error", messageM: "Oops, something went wrong! Try again, please!")
}
}
} else {
dispatch_async(dispatch_get_main_queue()) {
EZLoadingActivity.hide()
self.alertMessageSuccessError("Error", messageM: "Oops, something went wrong! Try again, please!")
}
}
})
task.resume()
}
Run Code Online (Sandbox Code Playgroud)
但我检查了我的网站https://ip6.nl和http://ipv6-test.com/validate.php
我得到了以下结果:

谢谢!
这与您的服务器无关。
您的应用程序中一定有少数 API 不支持 IPV6(例如 Reachability)。请将其更新为最新且支持 IPV6 的版本。
我认为 NAT64 没有太大帮助。