IOS - Как создать модальный пользователь / пароль вне UIApplication?
Я не уверен, что это можно сделать вообще...
Справочная информация: я создаю собственное приложение, которое означает, что оно не попадает в магазин приложений, поэтому я не ограничен правилами магазина приложений.
У меня есть dylib, который загружается перед основным приложением. Это своего рода библиотека для приложений. Я использую конструктор __attribute__
загрузить мои вещи. Там я хотел бы поместить alertview или любой вид всплывающего окна, которое получит вопрос о пользователе / пароле. Если пароль верный, то пользователю разрешено перейти в исходное приложение.
Так как это в dylib, у меня еще нет UIApplication, и я не хочу вмешиваться в исходное приложение или источники.
Предложения, советы приветствуются... Спасибо.
4 ответа
Вот как я сделал очень похожую вещь в своем приложении:
0) Перехват applicationDidFinishLaunching
сообщение, добавьте свой собственный код, запустите оригинальную реализацию.
1) Сделать непрозрачным полноэкранное UIWindow (например, черное).
2) Установите его windowLevel
в UIWindowLevelAlert + 1
Таким образом, он скрывает все остальные окна в приложении.
3) Добавьте поля для пользователя и пароля в это окно UIWindow.
Я почти уверен, что вы не можете показать UIAlertView без инициализации UIApplication и экземпляра UIWindow.
Только сама iOS может показывать предупреждения вне приложения, например, когда она запрашивает разрешения или в случае входа в iTunes или игровой центр...
В качестве обходного пути вы можете:
- сделать вид входа в систему внутри приложения
- создать веб-приложение для процесса входа в систему. Веб-приложение может запускать собственное приложение с настраиваемой схемой URL-адреса и передавать в приложение такие параметры, как "пользователь" и "пароль".
Вы можете запустить поток при загрузке вашего dylib и заставить его слушать ваши UIApplication
чтобы стать доступным, отобразите предупреждение в главном потоке.
Вы должны создать представление для входа в систему, тогда, если вы передадите имя входа, вы сможете продолжить работу с приложением, в противном случае вы просто закроете приложение.