Среда:
Cordova iOS 7.x (WKWebView)
Нативный плагин обрабатывает Face ID/Touch ID и резервный пароль
Веб-слой ( ServletController) загружает страницы через серверную пересылку (не полная навигация)
Описание проблемы:
- При успешной биометрической аутентификации → все работает нормально.
- Когда вход с паролем используется напрямую → также работает.
Нативный плагин отправляет два обратных вызова (биометрический сбой → успешный пароль). Обратный вызов успешного ввода пароля загружает домашнюю страницу внутри того же WKWebView. HTML отображается, но document.ready и deviceready никогда не срабатывают. Любой вызов Cordova (например, showHomeScreeninApp("success")) выдает ошибку ReferenceError: Невозможно найти переменную: cordova. Если пользователь сворачивает и снова открывает приложение, все внезапно начинает работать.
Что мы подозреваем:
Нативный UIViewController, обрабатывающий экран пароля, срывает или отсоединяет мост Кордовы, когда он закрывается, поэтому контекст WebView остается, но мост исчезает. Веб-контент перезагружается через пересылку сервлета, но новые события жизненного цикла не запускаются.
Проверено:
- Обходной путь JS, который повторно внедряет cordova.js и повторно запускает deviceready → работает временно.
- Проверено, что cordova.js присутствует и загружено.
- Проблема возникает только на iOS, а не на Android.
После успешного ввода пароля (даже если сначала произошел сбой биометрических данных) WKWebView должен сохранить мост Cordova и запустить обычный жизненный цикл готовности устройства/JS для запуска домашней страницы. правильно.
Вопрос:
Какие изменения необходимы на родной стороне iOS (плагин или жизненный цикл WKWebView), чтобы мост Кордова оставался активным или правильно прикреплялся к нему после перехода биометрия → пароль?
Подробнее здесь: https://stackoverflow.com/questions/797 ... vice-ready
Мобильная версия