#iphone #cocoa-touch
#iPhone #cocoa-touch
Вопрос:
У меня многозадачное приложение, и я использую все события делегирования приложений для фонового отображения, но когда устройство заблокировано или таймер ожидания истекает, ни одно из событий делегирования не запускается. Итак, мне нужно проверить состояние блокировки устройства.
Есть ли способ сделать это с помощью SDK (не частного решения api)?
Ответ №1:
Может быть, вы можете следить за элементом в связке ключей :
Ksecattrackessible При разблокировке Данные в элементе keychain доступны только тогда, когда устройство разблокировано пользователем. Это рекомендуется для элементов, которые должны быть доступны только тогда, когда приложение находится на переднем плане. Элементы с этим атрибутом переносятся на новое устройство при использовании зашифрованных резервных копий. Доступно в iOS 4.0 и более поздних версиях. Объявлено в SecItem.h .
Ответ №2:
Из обсуждения похоже, что вы могли бы использовать applicationProtectedDataWillBecomeUnavailable:
На устройстве, использующем защиту содержимого, защищенные файлы хранятся в зашифрованном виде и становятся доступными только при разблокировке устройства. Это уведомление позволяет вашему приложению узнать, что устройство будет заблокировано и что все защищенные файлы, к которым оно в данный момент обращается, вскоре будут недоступны.
Если ваше приложение в данный момент обращается к защищенному файлу, вы можете использовать этот метод для освобождения любых ссылок на этот файл. Хотя доступ к файлу, когда устройство заблокировано, не является ошибкой, любые попытки сделать это завершатся неудачей. Поэтому, если ваше приложение зависит от файла, вы можете предпринять шаги, чтобы избежать использования этого файла, пока устройство заблокировано.
Я предполагаю, что это будет вызвано независимо от того, используете ли вы защищенные файлы. Я еще не тестировал его.