어디서 오류가 있습니까?IPv6 - Apple에서 앱을 거부합니다.
애플 앱 및 전송 messege를 거부 :
성능- Wi-Fi 인터넷에 아이 패드와 아이폰 실행 아이폰 OS 9.3.5으로 검토 할 때 우리는 당신의 응용 프로그램에서 하나 개 이상의 버그를 발견 2.1
가 연결 IPv6 네트워크.
특히, 투표가 이루어지고 Supporting IPv6 DNS64/NAT64 Networks
"당신은 높은 수준의 네트워킹 API를 사용하여 클라이언트 측 응용 프로그램을 작성하는 경우와 같은 NSURLSession과 CFNetwork에서 프레임 워크와 연결할 때 오류가 표시됩니다 이름으로, 귀하의 응용 프로그램에 대한 IPv6 주소로 작동하도록 변경할 필요가 없습니다. Apple Developer Forums에
다음은 말한다 :
N 3 - 내 서버를 업데이트해야합니까? 이는 서버가 실행중인 위치에 따라 다릅니다. 더 넓은 인터넷에서 서버를 실행중인 경우 대답은 no입니다. 서버는 DNS64/NAT64를 통해 IPv6 전용 장치 에 액세스 할 수 있습니다. 당연히 으로 IPv6을 지원하도록 서버를 업데이트해야하지만, 이는 자신이 할 수있는 일입니다. iOS 앱에 서버가 내장 된 경우 (예 : 사용자가 앱에서 파일을주고받을 수있는 웹 서버) 사용자가 인 경우 IPv6 전용 환경에서 제대로 작동하는지 확인해야합니다.
내 호스팅은 말한다 : 우리는 당신의 서버에 IPv6를 사용하여 서버에 대한 문제가 표시되지 않습니다
는 IPv4를 (DNAT/SNAT
내 사이트를 통해 사용할 수 있습니다 서버) : http://badroads.info
내 코드가 App ()이 코드는 다른 애플 리케이션에서 승인되었습니다 전 주 lication) :
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 내가 가지고 다음과 같은 결과 :
감사합니다!
IPv6을 통해 하드 코딩 된 URL에 연결할 수 있습니까? – Alnitak
@Alnitak Apple says me [IPv6 Networks IPv6 DNS64/NAT64] (https://developer.apple.com/library/mac/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/IPv6Transition/Understanding 및 IPv6Transition.html#//apple_ref에 대한 이해 및 준비에 대한 정보는/doc/uid/TP40010220-CH213-SW1) 네트워크 및 네트워킹 정보이 자습서에서는 NSURLSession과 같은 고급 네트워킹 API를 사용하여 클라이언트 측 응용 프로그램을 작성하고 이름으로 연결하는 경우 앱이 IPv6 주소로 작업하기 위해 무엇이든 변경해야합니다. ' – Roman
@Alnitak 제 질문에 대한 업데이트를 보시기 바랍니다. 감사! – Roman