У меня есть приложение таймера, которое должно работать в течение нескольких часов и воспроизводить звуки через определенные промежутки времени. Как я могу сделать эту работу, когда экран выключен (чтобы сохранить аккумулятор), или другое приложение, такое как ibooks, открыто? В настоящее время я запускаю функцию таймера в ViewDidLoad. Может, в этом и проблема. Какой здесь подход?Приложение таймера работает, когда экран выключен iOS
ответ
Запланировать запрос уведомления пользователя, используя UNNotificationRequest
. Предоставьте объект UNCalendarNotificationTrigger
или UNTimeIntervalNotificationTrigger
в качестве триггера, в зависимости от вашей потребности.
Если вам нужна поддержка iOS 9 и ниже, существует аналогичный API UILocalNotification
, который устарел в iOS 10, но может использоваться в случае необходимости обратной совместимости.
Обратите внимание, что как только уведомление срабатывает, оно только на стороне клиента, и ваше приложение не пробудится для выполнения задач. Только если пользователь решит активировать уведомление, ваше приложение получит контекст работы.
Спасибо за ваш ответ. Проблема заключается в том, что таймер зависает, когда приложение идет в фоновом режиме или телефон переходит в спящий режим. Мое приложение требует, чтобы этого не произошло. Я проверил ряд спортивных таймеров и запущенных приложений, и они не замерзают, когда другие приложения запускаются одновременно. –
Приложения уходят спать, когда в фоновом режиме. Однако вы можете сэкономить время сна, а затем перезапустить таймер, подсчитав, сколько времени прошло между временем и временем, когда ваше приложение перешло в спящий режим. Вы можете использовать 'NSDate', или если вам нужна более высокая точность, вы можете использовать время mach. –
Вы изучили возможность использования аудиофонического режима? – Gruntcakes
планирование местных уведомлений возможно – luk2302