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 чтобы стать доступным, отобразите предупреждение в главном потоке.

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

Другие вопросы по тегам