【发布时间】:2017-01-06 10:55:47
【问题描述】:
哪里出错了?
Apple 拒绝应用并发送消息:
性能 - 2.1
在 iPad 上审核时,我们在您的应用中发现了一个或多个错误,并且 在连接到 IPv6 网络的 Wi-Fi 上运行 iOS 9.3.5 的 iPhone。
具体来说,在进行投票和Supporting IPv6 DNS64 / NAT64 Networks时会显示错误
“如果您正在使用高级网络 API(例如 NSURLSession 和 CFNetwork 框架)编写客户端应用程序,并且您通过名称连接,则应该无需更改 任何让您的应用使用 IPv6 地址的东西。”
Apple Developer Forums 的下一个说:
N 3 — 我需要更新我的服务器吗?这取决于你在哪里 服务器正在运行:如果您的服务器在更广泛的 Internet 上运行, 答案是否定的。仅限 IPv6 的设备可以访问您的服务器 通过 DNS64/NAT64。您应该更新您的服务器以支持 IPv6 作为 当然,但这是你可以在自己的时间做的事情。如果 您在 iOS 应用程序中嵌入了服务器(例如,Web 允许用户将文件传输到您的应用程序或从您的应用程序传输文件的服务器),您 应该确保它在纯 IPv6 环境中运行良好。
我的主人说:
我们没有发现任何问题,因为您的服务器使用 IPv6 的服务器是 IPv4 将通过 DNAT / SNAT 提供
我的网站(服务器): http://badroads.info
我在 App 中的代码(此代码一周前在另一个应用程序中获得批准):
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 上查看了我的网站 我得到以下结果:
谢谢!
【问题讨论】:
-
硬编码的 URL 是否可以通过 IPv6 访问?
-
@Alnitak Apple say me For information about support IPv6 Networks IPv6 DNS64/NAT64 Networks and About Networking 在本教程中说如果您正在使用高级网络 API(如 NSURLSession)编写客户端应用程序...并且您通过名称连接,您无需更改任何内容即可让您的应用使用 IPv6 地址。`
-
@Alnitak 请查看我的问题的更新。谢谢!
-
如果您已经测试并且结果看起来不错。请向 Apple 开具技术支持事件 (TSI) 票证,他们将为您提供代码级支持。这是打开 TSI developer.apple.com/support/technical 的链接
-
@Roman 与苹果一起打开 TSI 票
标签: ios swift app-store app-store-connect ipv6