2016-06-28 6 views
9

Я разработал приложение (для IOS), написанное на основе реакции, которое хорошо работает в сетях IPV4. Однако недавно Apple отправила сообщение о том, что мое приложение не работает при тестировании в сети IPV6. Они сказали мне, что я должен был сделать его совместимым с сетями только для IPV6.Как сделать API-вызовы совместимыми с IPV6 в реакции-native с помощью функции .fetch?

Вопрос в том, как сделать мои существующие API-вызовы совместимыми с сетью IPV6?

Мой API использует протокол https и вызывается доменным именем, а не сырым IP-адресом.

Образец выборки называют, что я использую:

fetch(query,{ 
     method: 'post', 
     headers: Utils.fetchHeaders('post') 
     }) 
     .then(Utils.checkStatus) 
     .then(Utils.parseJSON) 
     .then(json => this._handleResponse(json)) 
     .catch(error => { 

     this.setState({ 
      votingError: 'Sorry, there was an error!', 
      loading: false 
     }); 

     }); 

и API конечной точки в следующем формате:

https://www.myapidomain.com

любая помощь приветствуется.

ответ

6

выборки API внутренне использует NSURLSession, который уже поддерживает IPv6:

Большинство приложений не требует каких-либо изменений, так как IPv6 уже поддерживается NSURLSession и CFNetwork API.

Источник: https://developer.apple.com/news/?id=05042016a

Поскольку вы не используете IPv4-адреса с выборкой API вы должны быть хорошо идти.

Так что я подозреваю, что есть что-то еще (может быть, какой-то сторонний код?), Не сотрудничая с этим. Является ли Apple предоставлением более подробной информации о том, что не работает?

Предлагаю вам следовать за this tutorial, чтобы проверить его на вашей стороне и выяснить, что не так.

+1

Кажется, что моя конечная точка, которая представляет собой цифровую океанскую капельку, не принимает соединения от сетей IPV6. Хотя мой домен назначен IPV6 IP. Кажется, что проблема связана с капелькой. Я говорю с цифровым океаном, чтобы решить эту проблему. – meteorite

+0

Хорошо, я думаю, что исправил это, включив поддержку IPV6 на моем сервере, однако я не понимаю, почему я должен сделать такую ​​модификацию. Почему я не могу подключиться к серверу IPV4 из сети только для IPV6? Есть идеи? – meteorite

+0

Я также сомневаюсь, что API-интерфейс Fetch внутренне использует NSURLSession. Потому что почему он не должен работать по умолчанию? Парень, который просмотрел мое приложение на стороне Apple, сказал, что приложение работает, когда он переключился на ipv4-сеть, но не работал в сети ipv6. Возможно, их сеть не переводит IPV4 ips на IPV6 или выборка фактически не использует NSURLSession – meteorite