2016-08-30 2 views
14

어디서 오류가 있습니까?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 내가 가지고 다음과 같은 결과 : Results Results

감사합니다!

+0

IPv6을 통해 하드 코딩 된 URL에 연결할 수 있습니까? – Alnitak

+0

@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

+0

@Alnitak 제 질문에 대한 업데이트를 보시기 바랍니다. 감사! – Roman

답변

3

귀하의 서버와 관련이 없습니다.

IPV6에서 지원되지 않는 API (예 : 도달 가능성)가 애플리케이션에 거의 존재해야합니다. 최신 버전과 IPV6 지원 버전을 업데이트하십시오.

NAT64가별로 도움이되지 않는다고 생각합니다.

+0

이 코드가 구체적으로 무엇이 잘못 되었는가? 제발 말해줘. 서버에 대한 다른 코드는 없다. 나는 API 써드 파티를 사용하지 않는다. 나는 NSURLSession을 사용한다. 이 코드가 오류를 일으킬 것이라는 점을 알고 Apple의 스크린 샷에서 볼 수 있습니다 – Roman

+0

타사는 아니지만 인터넷 (Wi-Fi)을 사용하는 Apple API는 아닙니까? NSURLSession 제외? – nix

+0

Crashlytics (3.7.3), Digits 원단을 사용하여 2.4.0 은 (1.6.8) 가 FirebaseInstanceID을 사용하여 중포 기지 3.5.1 설치 FirebaseAnalytics 3.3.1 설치 (1.0.8) 설치 구글 모바일 광고-SDK 7.10.0 사용 GoogleInterchangeUtilities (1.2.1) GoogleSymbolUtilities 사용 (1.1.1) GoogleUtilities (1.3.1) 하지만 Apple에서이 코드로 화면을 보냈습니다. – Roman

3

IPv6 네트워크 지원 문제 일 필요는 없습니다. 앱이 충돌하고 IPv6 네트워크에 연결되어 있습니다. 그것은 서로 다른 두 가지 일 수 있습니다. 검토 팀에 충돌 로그를 요청하고 로그를 표시하고 실제 문제가 무엇인지 확인하십시오.

관련 문제