Установка мобильных приложений на iOS отличается от Android тем, что система не позволяет устанавливать приложения из неизвестных источников. Для запуска сборки требуется специальный сертификат разработчика и привязанный к нему provisioning profile. Этот профиль содержит информацию о подписи и список разрешенных устройств, идентифицированных по уникальному номеру UDID. Если UDID устройства отсутствует в профиле, iOS откажется устанавливать приложение, и никакие настройки телефона это не исправят. Кроме того, профиль вшивается в сборку при подписи, поэтому старые сборки не будут работать на новых устройствах, а Apple разрешает регистрировать только 100 устройств каждого типа в год.
Одним из популярных способов раздачи сборок является сервис Firebase App Distribution. Он использует Ad Hoc-профиль, где явно перечислены разрешенные UDID. Для работы сервиса на телефоне необходимо удалить старый профиль, если он есть, затем открыть ссылку из приглашения в браузере Safari, принять условия и установить профиль. После этого устройство регистрируется в аккаунте разработчика, и сборка становится доступной. Однако с 2022 года доступ к Firebase ограничен для российских компаний, что может приводить к ошибкам при загрузке сборок.
Если сервис недоступен или сборка не загружена, можно установить приложение напрямую через Mac. В Apple Configurator или Xcode можно перетащить файл .ipa на подключенное устройство или использовать утилиту ideviceinstaller. Также приложение можно собрать и запустить прямо из Xcode на реальном устройстве, что позволяет использовать режим отладки и видеть логи в реальном времени. Для этого устройство должно быть доверено компьютеру, включен режим разработчика, и выбран правильный аккаунт разработчика в настройках подписи.
Существуют способы установки без привязки к конкретному устройству. Сервис TestFlight подписывает сборки профилем для App Store, поэтому список UDID не требуется. Доступ выдается конкретному пользователю по приглашению на Apple ID, и установка происходит сразу после принятия приглашения. Симулятор в Xcode также не требует UDID, так как приложение запускается на виртуальной машине Mac. Это удобно для проверки вёрстки на разных моделях, но не позволяет протестировать работу камеры и реальной производительности железа.