2017-01-01 6 views
1

У меня есть приложение таймера, которое должно работать в течение нескольких часов и воспроизводить звуки через определенные промежутки времени. Как я могу сделать эту работу, когда экран выключен (чтобы сохранить аккумулятор), или другое приложение, такое как ibooks, открыто? В настоящее время я запускаю функцию таймера в ViewDidLoad. Может, в этом и проблема. Какой здесь подход?Приложение таймера работает, когда экран выключен iOS

+0

планирование местных уведомлений возможно – luk2302

ответ

2

Запланировать запрос уведомления пользователя, используя UNNotificationRequest. Предоставьте объект UNCalendarNotificationTrigger или UNTimeIntervalNotificationTrigger в качестве триггера, в зависимости от вашей потребности.

Если вам нужна поддержка iOS 9 и ниже, существует аналогичный API UILocalNotification, который устарел в iOS 10, но может использоваться в случае необходимости обратной совместимости.

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

+0

Спасибо за ваш ответ. Проблема заключается в том, что таймер зависает, когда приложение идет в фоновом режиме или телефон переходит в спящий режим. Мое приложение требует, чтобы этого не произошло. Я проверил ряд спортивных таймеров и запущенных приложений, и они не замерзают, когда другие приложения запускаются одновременно. –

+0

Приложения уходят спать, когда в фоновом режиме. Однако вы можете сэкономить время сна, а затем перезапустить таймер, подсчитав, сколько времени прошло между временем и временем, когда ваше приложение перешло в спящий режим. Вы можете использовать 'NSDate', или если вам нужна более высокая точность, вы можете использовать время mach. –

+0

Вы изучили возможность использования аудиофонического режима? – Gruntcakes