IPv6 – 苹果拒绝应用iOS

错误在哪里?

苹果拒绝应用程序并发送消息:

性能 – 2.1

在连接到IPv6networking的Wi-Fi上运行iOS 9.3.5的iPad和iPhone上进行审核时,我们发现您的应用中存在一个或多个缺陷。

具体而言,投票时出现错误, 支持IPv6 DNS64 / NAT64networking

“如果您使用NSURLSession和CFNetwork框架等高级networkingAPI编写客户端应用程序,并通过名称进行连接,则不需要更改应用程序的任何内容以使用IPv6地址。”

接下来在苹果开发者论坛上说:

N 3 – 我需要更新我的服务器吗? 这取决于你的服务器在哪里运行: 如果你的服务器运行在更宽的互联网上,答案是否定的 。 您的服务器将可通过DNS64 / NAT64访问仅IPv6设备。 你应该更新你的服务器来支持IPv6,但这是你自己的事情。 如果您的iOS应用程序中embedded了服务器(例如,允许用户将文件传入和传出应用程序的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() } 

但我检查我的网站上https://ip6.nl和http://ipv6-test.com/validate.php我得到了以下结果: 结果 结果

谢谢!

这不是关于你的服务器。

在您的应用程序中必须有几个API不支持IPV6(例如Reachability)。 请更新那些最新的和IPV6支持的。

我认为NAT64不是很有帮助。

它不一定是IPv6networking支持问题。 该应用程序崩溃,并连接到IPv6networking。 它可以是两个不同的东西。 询问审查小组的崩溃日志,象征着这些日志,并找出什么是真正的问题。