iOS Face ID / Touch ID Блокировка экрана Конфликт в willEnterForegroundNotification - PullRequest
1 голос
/ 04 мая 2019

У меня есть код, который помещает размытое UIVisualEffectView поверх текущего окна, когда срабатывает уведомление didEnterBackgroundNotification.Затем он пытается отменить это при запуске willEnterForegroundNotification (упрощено для удобного чтения):

class AutoBlur {
    init() {
        NotificationCenter.default.addObserver(self, selector: #selector(appDidEnterBackground), name: UIApplication.didEnterBackgroundNotification, object: nil)
        NotificationCenter.default.addObserver(self, selector: #selector(appWillEnterForeground), name: UIApplication.willEnterForegroundNotification, object: nil)
    }

    @objc func appDidEnterBackground() {
        blur()
    }

    @objc func appWillEnterForeground() {
        guard UserState.isScreenLockEnabled else {
            unblur()
            return
        }
        let authContext = LAContext()
        authContext.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: "test") { success, error in
            DispatchQueue.main.async {
                guard success else {
                    return
                }
                unblur()
            }
        }
    }

    //...
}

Хотя этот подход обычно работает, при тестировании функциональности приложения Face ID приложения я обнаружил следующую аномалию:

  1. Откройте приложение
  2. Выключите экран на устройстве
  3. Включите устройство
  4. Проведите пальцем вверх по экрану блокировки устройства

Ожидаемые результаты: устройство должно разблокироваться, а затем мое приложение должно запустить свой код оценки идентификатора лица, чтобы не размыть представление.

Фактические результаты: действие смахивания подрезается моим приложениемКод оценки идентификатора лица.Он не дает пользователю возможности проводить пальцем по экрану блокировки, эффективно блокируя его на своем устройстве.

Есть ли какое-либо состояние, за которым я должен следить, или какое-то другое событие, на которое безопаснее реагировать для запуска моегоОценка лица?

...