React Native - как приложение определяет IP-адрес упаковщика, не найденный на устройстве

У меня есть нативное приложение, если я запускаю его на симуляторе iOS, оно работает и может подключиться к работающему упаковщику, работающему на localhost:8081, однако, если я пытаюсь запустить приложение на реальном устройстве iOS, оно выходит из строя, потому что оно не могу загрузить пакет js, потому что он не может найти службу упаковщика.

Мое устройство и мой dev-сервер находятся в одной и той же сети WIFI. Как приложение определяет местонахождение службы pacakger? Если я изменю файл AppDelegate.m и заменим:

jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil];

//with an explicit IP address, then the app works:

jsCodeLocation = [NSURL URLWithString:@"http://192.168.0.9:8081/index.ios.bundle?platform=ios&dev=true"];

Любые советы по настройке, которые мне может понадобиться изменить для запуска на реальном устройстве, без необходимости явно изменять этот файл.

Благодарю.

2 ответа

Мне удалось временно решить эту проблему, добавив ее в файл Info.plist.

<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
<key>NSAllowsLocalNetworking</key>
<true/>

Я долго путешествовал по этой проблеме и вижу, что проблема связана с эмулятором IOS iphone. Это решение для меня легко и не требует кода:

Это решение предназначено для симулятора iphone, у вас нет этой ошибки на физическом iphone.

  1. Запустите приложение на xcode или npm/yarn
  2. Как только приложение откроется в симуляторе, нажмите: CMD + D
  3. Клип на «Настроить Bundler»
  4. Теперь у вас есть 3 входа:
  5. ID: 0.0.0.0: заменить 127.0.0.1
  6. ПОРСТ: 8081: Заменить: 8081
  7. Последний ввод: Индекс: пустой
Другие вопросы по тегам