Отделение спящего режима iPhone от всех остальных приложений WillResignActive - PullRequest
3 голосов
/ 30 января 2011

Мое приложение поддерживает пин-код для моих пользователей, и меня просили показывать пин-код каждый раз, когда приложение возвращается из многозадачности или устройство возвращается из спящего режима.Чтобы убедиться, что первое, что видит пользователь, это экран пин-кода, а не реальные данные за секунду до того, как он увидит пин-код, я наблюдаю за методами applicationDidEnterBackground и applicationWillResignActive.Проблема в том, что applicationWillResignActive вызывается во многих случаях, например, когда пользователь дважды нажимает на кнопку «Домой», получает SMS или push-уведомление, при попытке купить запрос на покупку в приложении.Есть ли способ для меня отделить все эти случаи и просто распознать автоматический режим ожидания устройства или случай, когда пользователь нажимает на кнопку режима ожидания?

Спасибо

Рой

1 Ответ

1 голос
/ 30 января 2011

Нет прямого способа разграничить все причины, по которым ваше приложение переходит в фоновый режим. Однако вы можете позвонить по номеру CFAbsoluteTimeGetCurrent() в applicationWillResignActive:, сохранить отметку времени и проверить, прошло ли достаточно времени в applicationDidBecomeActive: для подтверждения ввода PIN-кода. Например, если прошло менее 10 секунд, вы можете пропустить ввод PIN-кода. Это делает ваше приложение менее безопасным, но в то же время оно также будет раздражать пользователей.

Хотя это решение может показаться далеко не идеальным, на самом деле, не имеет значения, почему ваше приложение отказалось от своего активного состояния. Какова бы ни была причина, он может стать активным через очень долгое время, и он может также никогда не стать активным снова, если iOS решит прекратить его.

...