iOS Запуск таймера в вашем коде в фоновом режиме
Итак, я читал, что в iOS все таймеры будут останавливаться, когда ваше приложение работает в фоновом режиме. Я также читал, что вы можете запускать задачи в BG, используя beginBackgroundTaskWithExpirationHandler
( вроде так).
Я пытаюсь добиться того, чтобы метод вызывался каждые 3 минуты, а другой - фиксированное количество времени до первого. Мне удалось сделать это в течение одного NSTimer
который повторяется таким образом, что позволяет мне сделать это. Он работает нормально, но, очевидно, отключен (или приостановлен), когда приложение находится в фоновом режиме - я могу предположить только из-за причины, описанной выше.
Кто-нибудь знает, есть ли способ запустить таймер или хотя бы позвонить что-нибудь через определенное время, чтобы я мог это сделать?
1 ответ
В основном, если вы хотите продолжать работать в фоновом режиме, вы должны выполнить одно из следующих требований. Из документов Apple:
Реализация долгосрочных фоновых задач
Для задач, для реализации которых требуется больше времени, вы должны запросить определенные разрешения для их запуска в фоновом режиме без их приостановки. В iOS только определенные типы приложений могут работать в фоновом режиме:
- Приложения, которые воспроизводят звуковой контент для пользователя в фоновом режиме, например приложение музыкального проигрывателя
- Приложения, которые постоянно информируют пользователей о своем местонахождении, такие как навигационное приложение
- Приложения, которые поддерживают передачу голоса по Интернет-протоколу (VoIP)
- Приложения для газетных киосков, которые должны загружать и обрабатывать новый контент
- Приложения, которые получают регулярные обновления от внешних аксессуаров
Приложения, которые реализуют эти сервисы, должны декларировать сервисы, которые они поддерживают, и использовать системные платформы для реализации соответствующих аспектов этих сервисов. Объявление сервисов позволяет системе узнать, какими сервисами вы пользуетесь, но в некоторых случаях именно системные каркасы фактически предотвращают приостановку работы вашего приложения.