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. Это могут быть две разные вещи. Попросите группу обзора для журналов сбоев, опишите эти журналы и узнайте, в чем проблема.