Может ли приложение определить, установлено ли оно как внешнее тестирование через TestFlight

Я хотел бы, чтобы пользователи внутреннего тестирования и внешнего тестирования в TestFlight переходили на разные серверы API при первом запуске приложения. Мне интересно, возможно ли для приложения определить, было ли оно установлено как приложение «Внутреннее тестирование» или «Внешнее тестирование» из TestFlight.

Если это невозможно, моим следующим вариантом было создание отдельного приложения для отправки в Testflight, которое при запуске использовало бы другой сервер API. Но это сложнее.

Причина этого в том, что я хочу, чтобы внешние тестеры видели только реальные данные с сервера. А не поддельные тестовые данные, которые мы отправляли при разработке приложения.


person zingle-dingle    schedule 09.01.2017    source источник


Ответы (2)


Насколько мне известно, невозможно определить внутренних и внешних тестировщиков, выполняющих ваше приложение.

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

  • Я создаю две разные конфигурации сборки, одну для внутренних тестировщиков (например, ReleaseInternal), а другую для остальных (Release).
  • Я определяю макрос препроцессора/флаг Swift во внутренней конфигурации сборки тестера (например, INTERNAL_TESTING)
  • Я использую макрос препроцессора/флаг Swift для активации/деактивации определенных разделов кода или функций
  • Я создаю две разные схемы, каждая из которых использует соответствующую конфигурацию сборки, поэтому вам просто нужно переключить схему для сборки соответствующей версии приложения.
  • И, наконец, я автоматизирую выпуск приложения, используя fastlane, с флагом, указывающим, хочу ли я выпустить приложение для внутренних или внешних тестировщиков, чтобы не совершить ошибку и не выпустить неправильную версию не тем людям.
person José González    schedule 17.11.2017

Невозможно определить, было ли приложение установлено как «Внутреннее тестирование» или «Внешнее тестирование».

Другое решение — создать сборку, которая по умолчанию указывает на реальные данные, но имеет скрытый переключатель, которому можно научить внутренних пользователей переключаться на тестовые данные.

Вы можете использовать NSUserDefaults, чтобы сохранить параметр переключателя, чтобы внутренним пользователям не приходилось переключать его каждый раз, когда они устанавливают новую сборку или перезапускают приложение.

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

person charmingToad    schedule 09.01.2017
comment
Спасибо. Я рассматривал и этот вариант. Но для этого приложения я не уверен, что хочу рисковать смешиванием данных. - person zingle-dingle; 10.01.2017