IPv6 - Apple отклоняет приложение iOS
Где ошибка?
Apple отклоняет приложение и отправляет messege:
Производительность - 2.1
Мы обнаружили одну или несколько ошибок в вашем приложении, когда их рассматривали на iPad и iPhone работает под управлением iOS 9.3.5 на Wi-Fi, подключенном к сети IPv6.
В частности, при голосовании отображается ошибка, и поддержка IPv6 DNS64/NAT64 сетей
"Если вы пишете приложение на стороне клиента, используя высокоуровневые сетевые интерфейсы, такие как NSURLSession и фреймворки CFNetwork, и вы подключаетесь по имени, вам следует не изменять что-нибудь для вашего приложения для работы с адресами IPv6."
Далее на Форумы разработчиков Apple говорит:
N 3 - Нужно ли мне обновлять свой сервер? Это зависит от того, где сервер работает: Если у вас есть сервер, работающий в более широком Интернете, ответ не. Ваш сервер будет доступен только для устройств с поддержкой IPv6 через DNS64/NAT64. Вы должны обновить свой сервер, чтобы поддерживать IPv6 как конечно, но это то, что вы можете сделать в свое время. Если у вас есть сервер, встроенный в ваше приложение iOS (например, веб-сайт сервер, который позволяет пользователям передавать файлы в и из вашего приложения), вы должен убедиться, что он хорошо работает в среде только для 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
Я получил следующие результаты:
![Результаты]()
Спасибо!
Ответы
Ответ 1
Речь идет не о вашем сервере.
В вашем приложении должно быть немного API-интерфейсов, которые не поддерживаются IPV6 (например, Reachability). Обновите те, у кого есть последние версии и поддерживаемые IPV6.
Я думаю, что NAT64 не так полезен.
Ответ 2
Это не должно быть проблемой поддержки сети IPv6.
Приложение аварийно завершает работу и подключается к сети IPv6. Это могут быть две разные вещи.
Попросите группу обзора для журналов сбоев, опишите эти журналы и узнайте, в чем проблема.