2016-08-29 1 views
0

Я создаю приложение iOS, которое общается с сервером. У нас есть тестовый/промежуточный сервер, производственный сервер, и каждый разработчик имеет локальный экземпляр сервера для разработки.Получение имени машины разработки во время компиляции?

Я добавил некоторую простую логику, которая настраивает адрес сервера в зависимости от того, выполняем ли мы сборку TestFlight, сборку App Store или сборку отладки (для разработки). Для сборки разработки приложение пытается поразить localhost, что хорошо и хорошо, если мы работаем на Simulator, но не так здорово, если мы работаем на устройстве.

Я знаю ngrok, что является возможным решением, но поскольку выставленный URL-адрес частично генерируется случайным образом (по крайней мере, для бесплатной версии), это не очень удобно. Я думал, что подходящим подходом для разработки может быть проверка имени машины разработки во время компиляции и вставка этого значения. Но я не знаю, как этого добиться, если это вообще возможно. Я помню, что я делал компиляцию переменной времени с помощью ant/maven и файлов свойств среды еще в мои дни Java, но мне интересно, есть ли довольно простой способ достичь этого в Xcode.

Можно ли пролить свет на это?

ответ

0

Так что я продолжал копать и пошел со следующим решением. Элементы этого были затронуты в многочисленных других сообщениях здесь.

  1. Я добавил новый файл заголовка HostNameMacroHeader.h в мой проект .
  2. Я добавил фазу «Сценарий запуска» в мою сборку, до «Скомпилировать источники». Сценарий содержит следующее:

    echo "//***AUTOGENERATED FILE***" > ${SRCROOT}/MyAppName/HostNameMacroHeader.h 
    echo "#define BUILD_HOST_NAME @\"`hostname`\"" >> ${SRCROOT}/MyAppName/HostNameMacroHeader.h 
    

Тогда в моей реализации, где я хочу использовать адрес сервера, я использую сгенерированный BUILD_HOST_NAME макрос.

Это довольно хакерское решение, но сейчас оно работает. Предложения и более чистые версии приветствуются.

Смежные вопросы