Я столкнулся с одним из требований, когда мне нужно определить, использует ли пользователь iPhone или нет. Даже если мое приложение в фоновом режиме, то тоже. До сих пор я нашел следующие выходы, но ни один из них не указывает на механизм разблокировки:
applicationProtectedDataWillBecomeUnavailable
: Это сообщит, заблокировал ли пользователь / разблокировал устройство, но будет работать, только если установлен пароль.
Уведомления Дарвина о блокировке / разблокировке : не принимаются в AppStore.
Датчик приближения (UIDeviceProximityStateDidChangeNotification
) : это произойдет, только если пользователь звонит.
[[UIScreen mainScreen] brightness]
: можно запросить в состоянии applicationDidEnterBackground
, чтобы проверить, заблокирован ли телефон или была нажата домашняя кнопка. Если яркость больше 0, это означает, что кнопка «Домой» была нажата или произошел переход в какое-либо другое приложение, если оно равно 0, это означает, что заблокировано.
Использование датчиков движения: учитывая разрядку аккумулятора, довольно некорректный подход для проверки того, как работает устройство или ускорение в определенной системе координат
UIDeviceOrientationDidChangeNotification
: работает только когда приложение находится на переднем плане.
Какова технология, лежащая в основе реализации Apple "Поднять на пробуждение": я видел, что iPhone6s делает экран ярче, когда вы поднимаете его. Они должны использовать более эффективный способ, чем акселерометр?
Я не вижу других хороших подходов. Я что-то пропустил?