2016-08-30 17 views
14

どこがエラーですか?IPv6 - アップル拒否のアプリiOS

アップルのアプリと送らmessege拒否:

パフォーマンス - iPadと接続のWi-Fi上のiOS 9.3.5を実行している iPhoneに見直したときに2.1

を私たちはあなたのアプリ内の1つまたは複数のバグを発見しましたIPv6ネットワークに接続します。

具体的には、投票が行われ、Supporting IPv6 DNS64/NAT64 Networks

「あなたは、高レベルのネットワークAPIを使用して、クライアント側のアプリケーションを書いている場合などNSURLSessionとCFNetworkはフレームワークを、あなたが接続したときにエラーが表示されますを変更する必要はありません。あなたのアプリがIPv6アドレスで動作するようにする必要はありません。 Apple Developer Forums

次は言う:

N 3 - 私は私のサーバーを更新する必要がありますか?それはあなたの サーバがどこで動作しているかによって異なります:より広いインターネット上でサーバを稼働させている場合は、 答えはいいえです。 DNS64/NAT64経由でIPv6専用デバイス にアクセスできるようになります。もちろん、 としてIPv6をサポートするようにサーバーを更新する必要がありますが、それは自分の時間にできることです。 iOSアプリにサーバーが組み込まれている場合(たとえば、ユーザーがアプリケーションとの間でファイルを転送できるWeb サーバー)、 は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 Iまし以下の結果: Results Results

ありがとう!

+0

ハードコードされたURLはIPv6経由で到達可能ですか? – Alnitak

+0

@Alnitak Apple says私は[IPv6 Networks IPv6 DNS64/NAT64](https://developer.apple.com/library/mac/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/IPv6Transition/UnderstandingandPreparingfortvIPv6Transition.html#//apple_refの準備と準備のサポートについては、/doc/uid/TP40010220-CH213-SW1)ネットワークとAbout Networkingこのチュートリアルでは、NSURLSessionなどの高水準ネットワークAPIを使用してクライアント側のアプリケーションを作成していて、名前で接続する場合、あなたのアプリがIPv6アドレスで動作するために何かを変更する必要があります。 ' – Roman

+0

@Alnitak私の質問の更新が表示されます。ありがとう! – Roman

答えて

3

あなたのサーバーに関するものではありません。

アプリケーションには、IPV6に対応していないAPI(リーチアビリティなど)が少なくて済む必要があります。最新のものとIPV6でサポートされているものを更新してください。

NAT64はそれほど役に立たないと思います。

+0

具体的なことは何ですか?このコードは間違っていますか?教えてください、他のコードはありません。私はNSURLSessionを使用しています。このコードはエラーが発生することを知っているので、Appleのスクリーンショットから見ることができます – Roman

+0

NSURLSession以外のサードパーティ製ではなくAppleのAPIを使用していますか? – nix

+0

Crashlytics(3.7.3)、Digits GoogleInterchangeUtilitiesを使用してGoogleのモバイル広告--SDKをインストールするFirebaseInstanceID(1.0.8)を使用して 3.3.1 Firebase 3.5.1 インストールFirebaseAnalyticsのインストールファブリック(1.6.8) を使用して2.4.0 7.10.0 (1.2.1 ) GoogleSymbolUtilities(1.1.1)の使用 の使用GoogleUtilities(1.3.1) Appleはこのコードで画面を送った – Roman

3

IPv6ネットワークサポートの問題である必要はありません。 アプリがクラッシュし、IPv6ネットワークに接続しています。それは2つの異なることができます。 レビューチームにクラッシュログを依頼し、それらのログを象徴し、実際の問題点を確認します。

関連する問題