Как запускать iOS-приложение каждую минуту бесконечно?
Я сделал заявление, которое должно отправлять обновление местоположения и статуса на сервер каждую 1 минуту. Я попробовал следующие способы, но никто из них не помог мне. есть ли решение для этого?
1 - NSTimer - Многие люди предложили сделать это. но проблема собирается в backgroundMode, и он работает только в течение 20 минут. после этого приложение прекращает отправку данных.
2 - BackgroundFetchMode - в начале выглядит как правильное решение. Но эта способность не гарантирует запуск приложения каждую 1 минуту. у него есть алгоритм, который iOS решает, какое приложение должно работать.
Этот API не похож на задачу таймера, система будет решать, когда вызывать обработчик, в зависимости от многих ограничений. Поэтому, если для timeInterval установлено значение 2,00f(2secs), обработчик вызывается каждые 2+(минимум) секунды.
3 - LocationUpdate - снова этот способ не работает, потому что он запускает ваше приложение, только если вы перемещаетесь не менее чем на 500 метров.
Приложения могут ожидать уведомления, как только устройство переместится на 500 метров или более от предыдущего уведомления. Не следует ожидать уведомлений чаще, чем раз в пять минут. Если устройство способно извлекать данные из сети, менеджер местоположения с гораздо большей вероятностью будет своевременно доставлять уведомления.
4 - Push-уведомления - в статье, написанной этим методом, вы можете запустить приложение в течение определенного времени, и это действительно так!
Вы можете запланировать уведомление в течение определенного времени. но проблема показывает уведомление пользователя. что мне нужно что-то молчать в фоновом режиме.
Кроме того, вы не можете запускать некоторый код каждые 1 минуту. это просто показать уведомление пользователю. и пользователь должен нажать на ваше уведомление, и тогда didReceiveLocalNotification может быть доступен, и вы можете запустить код.
1 ответ
Как утверждает Apple в своей документации:
В iOS только определенные типы приложений могут работать в фоновом режиме:
- Приложения, которые воспроизводят звуковой контент для пользователя в фоновом режиме, например приложение музыкального проигрывателя
- Приложения, которые записывают аудио контент в фоновом режиме
- Приложения, которые постоянно информируют пользователей о своем местонахождении, такие как навигационное приложение
- Приложения, которые поддерживают передачу голоса по Интернет-протоколу (VoIP)
- Приложения, которые должны регулярно загружать и обрабатывать новый контент
- Приложения, которые получают регулярные обновления от внешних аксессуаров
Приложения, которые реализуют эти сервисы, должны декларировать сервисы, которые они поддерживают, и использовать системные платформы для реализации соответствующих аспектов этих сервисов. Объявление сервисов позволяет системе узнать, какими сервисами вы пользуетесь, но в некоторых случаях именно системные каркасы фактически предотвращают приостановку работы вашего приложения.
Вы можете прочитать все о реализации и объявлении этих фоновых задач в ссылке. Однако, если у вас приложение другого типа или вы не можете использовать системные платформы, ваше приложение не может работать в фоновом режиме бесконечно. И даже если это так, вы всегда должны ожидать, что система по какой-то причине останавливает вашу задачу (например, перезагрузка телефона).