Фоновые задачи короткие и бюджетные; система решает, когда дать окно. Нужны идемпотентность, backoff и честные Info.plist modes.
Разбор
- BGAppRefreshTask и BGProcessingTask имеют разные SLA.
- expirationHandler обязан быстро завершить работу.
- Вечный daemon на iOS эмулировать нельзя.
- Для отладки используют launch arguments BG tasks.
Итог
Фон на iOS — кооперация с планировщиком, не сервис 24/7.