错误在哪里?
Apple拒绝app并发送消息:
表现 - 2.1
我们在iPad上查看了您应用中的一个或多个错误 在连接到IPv6网络的Wi-Fi上运行iOS 9.3.5的iPhone。
具体而言,投票时会显示错误Supporting IPv6 DNS64 / NAT64 Networks
“如果您使用高级网络API(例如 NSURLSession )和CFNetwork框架编写客户端应用程序并按名称连接,则无需更改< / strong>您的应用使用IPv6地址的任何内容。“
N 3 - 我是否需要更新服务器?这取决于你的位置 服务器正在运行:如果您在更广泛的Internet上运行服务器, 答案是否。只有IPv6的设备才能访问您的服务器 通过DNS64 / NAT64。您应该更新您的服务器以支持IPv6作为 当然,但这是你可以在自己的时间做的事情。如果 您的iOS应用程序中嵌入了服务器(例如,Web) 允许用户与您的应用程序之间传输文件的服务器,您 应该确保它在仅IPv6环境中运行良好。
我的主人说:
对于服务器使用IPv6的服务器,我们没有看到任何问题 IPv4将通过DNAT / SNAT
提供
我的网站(服务器): http://badroads.info
我的应用程序代码(此代码在一周前在其他应用程序中获得批准):
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上查看了我的网站 我得到了以下结果:
谢谢!
答案 0 :(得分:3)
与您的服务器无关。
您的应用程序中必须有几个不支持IPV6的API(例如可达性)。请更新那些支持最新和IPV6的用户。
我认为NAT64并没有那么大的帮助。
答案 1 :(得分:3)
它不一定是IPv6网络支持问题。 应用程序崩溃,并连接到IPv6网络。它可以是两个不同的东西。 向审核小组询问崩溃日志,对这些日志进行符号化,并找出真正的问题。