2016-08-10 10 views
0

iTunes Appが拒否されました。拒否されたアプリケーションNSUrlConnection IPv6ネットワークの問題iOS

理由:iPhone に見直したときに

私たちは、IPv6ネットワークに接続されているのWi-Fi上のiOS 9.3.4を実行しているアプリケーション内の1つまたは複数のバグを発見しました。

特に、アプリケーションのコンテンツを読み込めませんでした。

私はNAT64ネットワーク(macからのセットアップ)でテストしましたが、うまくいきましたが、Appleの審査チームはIPv6ネットワークに問題があります。

Webサービスの呼び出しにはNSURLConnectionを使用しましたが、無応答です。

NSURLConnection:connectionDidFinishLoading:が呼び出されますが、IPv6ネットワークでNSDataの応答nilを取得し、それがnilのreceivedData becauseof解析エラー取得IPv4ネットワーク

JSONの解析コード

NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:receivedData options:kNilOptions | NSJSONReadingAllowFragments | NSJSONReadingMutableContainers error:&error]; 

に罰金働いている:データを読み取ることができませんでしたそれは正しい形式ではないからです。

IPv4ネットワークでも、IPv6接続DidFinishLoadingでも問題なく動作しています。

答えて

3

アプリのNSURLSessionを変更します。この代理メソッドを使用して応答を取得します。

サービスurl = "ここであなたのURLを解析します";あなただけのコピー&ペーストこのデリゲートメソッドで

NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration]; 
    NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration: defaultConfigObject delegate: self delegateQueue: [NSOperationQueue mainQueue]]; 
    NSURL * url = [NSURL URLWithString:serviceurl]; 
    NSMutableURLRequest * urlRequest = [NSMutableURLRequest requestWithURL:url]; 
    NSURLSessionDataTask * dataTask = [defaultSession dataTaskWithRequest:urlRequest]; 
    [dataTask resume]; 

あなた connectionDidFinishLoadingconnectionDidReceiveResponseは、 connectionDidReceiveDataconnectionDidFailWithErrorは(NSURLSession *)セッションのタスクの他の一部にする必要があります:

- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask 
    didReceiveResponse:(NSURLResponse *)response 
    completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler 
    { 
     NSLog(@"### handler 1"); 
     [self.responseData setLength:0]; 
     completionHandler(NSURLSessionResponseAllow); 
    } 

    - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask 
     didReceiveData:(NSData *)data 
    { 


    } 
    - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task 
    didCompleteWithError:(NSError *)error 
    { 
     if(error == nil) 
     { 

      NSLog(@"Download is Succesfull"); 
     } 
     else 
     { 
      NSLog(@"Error %@",[error userInfo]); 

     } 
    } 

私はこれがに便利だと思います君は。

関連する問題