错误在哪里?
Apple拒绝app并发送消息:
性能 - 2.1我们在连接到IPv6网络的Wi-Fi上运行iOS 9.3.5的iPad和iPhone上查看了应用程序中的一个或多个错误 . 具体来说,投票时显示错误并支持IPv6 DNS64 / NAT64网络“如果您使用NSURLSession和CFNetwork框架等高级网络API编写客户端应用程序并按名称连接,则应该不需要为您的应用更改任何内容以使用IPv6地址 . “
N 3 - 我是否需要更新服务器?这取决于服务器的运行位置:如果您在更广泛的Internet上运行服务器,答案是否定的 . 只有IPv6设备才能通过DNS64 / NAT64访问您的服务器 . 您应该更新服务器以支持IPv6,但这是您可以在自己的时间内完成的事情 . 如果您的iOS应用程序中嵌入了服务器(例如,允许用户与应用程序之间传输文件的Web服务器),则应确保它在仅限IPv6的环境中正常运行 .
我的主人说:
我们没有看到任何问题,因为服务器上带有IPv6的服务器将通过DNAT / SNAT提供IPv4
我的网站(服务器):http://badroads.info
我在App中的代码( this code was approved in another application a week ago ):
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我得到了以下结果:
谢谢!
2 回答
它与您的服务器无关 .
您的应用程序中必须有几个API不支持IPV6(例如可达性) . 请更新那些支持最新和IPV6的用户 .
我认为NAT64并没有那么大的帮助 .
它不一定是IPv6网络支持问题 . 应用程序崩溃,并连接到IPv6网络 . 它可以是两个不同的东西 . 向审核小组询问崩溃日志,象征这些日志并找出真正的问题 .