IPv6 - Apple拒绝应用iOS

时间:2016-08-30 08:42:34

标签: ios swift app-store itunesconnect ipv6

错误在哪里?

Apple拒绝app并发送消息:

  

表现 - 2.1

     

我们在iPad上查看了您应用中的一个或多个错误   在连接到IPv6网络的Wi-Fi上运行iOS 9.3.5的iPhone。

     

具体而言,投票时会显示错误Supporting IPv6 DNS64 / NAT64 Networks

     

“如果您使用高级网络API(例如 NSURLSession )和CFNetwork框架编写客户端应用程序并按名称连接,则无需更改< / strong>您的应用使用IPv6地址的任何内容。“

下一页Apple Developer Forums说:

  

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.nlhttp://ipv6-test.com/validate.php上查看了我的网站 我得到了以下结果: Results Results

谢谢!

2 个答案:

答案 0 :(得分:3)

与您的服务器无关。

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

我认为NAT64并没有那么大的帮助。

答案 1 :(得分:3)

它不一定是IPv6网络支持问题。 应用程序崩溃,并连接到IPv6网络。它可以是两个不同的东西。 向审核小组询问崩溃日志,对这些日志进行符号化,并找出真正的问题。