2016-07-04 4 views
0

Я пытаюсь в течение некоторого времени развертывать приложение, но оно продолжает отклоняться, поскольку оно не работает на сети Apple IPv6, хотя я используя NSURLSession для отправки POST. Я сделал больше попыток, чем могу подсчитать и исчерпал варианты, кто-нибудь знает, если это проблема, связанная с их тестовой средой, или это мой код? Здесь код:Поддержка IPv6 в приложении iOS (продолжайте отклоняться, хотя он работает в тестах)

- (NSData *) postToServer: (NSData *) msg { 

     __block NSData *urlData = NULL; 
     self.status = @"offline"; 
     dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); 

     NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; 
     NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration]; 

     NSURL *url = [NSURL URLWithString:@"http://myserver.php"]; 
     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10.0]; 
     [request setHTTPMethod:@"POST"]; 
     [request setHTTPBody:msg]; 

     NSURLSessionDataTask *postDataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { 

      if (error) { 
       self.status = @"offline"; 
       dispatch_semaphore_signal(semaphore); 
       return; 
      } 

      if ([response isKindOfClass:[NSHTTPURLResponse class]]) { 

       NSInteger statusCode = [(NSHTTPURLResponse *)response statusCode]; 

       if (statusCode >= 200 && statusCode < 300) { 

        self.status = @"online"; 
        urlData = data; 

       } 
       else { 

        self.status = @"offline"; 

       } 
       NSLog(@"Código resposta: %ld/Resposta ==> %@", (long)statusCode, [[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding]); 
      } 
      dispatch_semaphore_signal(semaphore); 

     }]; 
     [postDataTask resume]; 

     dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER); 

     return urlData; 

    } 

Пожалуйста, если я сделал что-то неправильно на этом помочь мне исправить это оттягивает мой график работы так много, и я не мог понять, даже читая темы, все от Apple Форума о IPv6. (Этот код работает на моем рабочем месте для iPhone SE iOS 9.3.2, только сбой в обзоре).
Спасибо за помощь.
Натана

+0

вы тестирование на IPv6-только сети? –

+0

Какова EXACT причина Apple, дал вам за отказ приложения? –

+0

«Мы обнаружили один или несколько ошибок в вашем приложении при просмотре на iPad и iPhone под управлением iOS 9.3.2 на Wi-Fi. В частности, мы не смогли получить доступ к содержимому вашего приложения из-за предупреждения, отображаемого при входе в систему ». –

ответ

0

Как заявил ОП для его решения:

Проблема была мой сервер, который не был готов полностью готов к IPv6. Если у него не было адреса IPv6, приложение могло бы синтезировать IPv4-адрр в то время как на IPv6 только сеть и нормально общаться, но мой хост имел адрес, но не мог ответить через него. Если у кого-то еще есть проблемы с этим, попробуйте использовать этот тест: http://ipv6-test.com/validate.php и проверьте, проходит ли ваш хост по протоколу AAAA DNS, но не работает, если вы сначала посмотрите на свой сервер, а не на код (предположив, что ваш код все в порядке, NSURLSession и прочее.

+0

Как синтезировать IPv4-адрес, пока на IPv6 только сеть и связь. – VJVJ