API v1

Background Tasks — iOS

background/BackgroundTask Equivalente Android: BackgroundService + Foreground type=location

Diferente do Android (que mantém um Foreground Service contínuo), no iOS o trabalho em background é dividido entre CLLocationManager com updates contínuos, BGTaskScheduler para tarefas periódicas, e Background Modes para manter sockets vivos.

Arquivos

background/
└── BackgroundTask.swift   · agendamento + entrega para o TCPClient

Estratégias usadas

EstratégiaPara que serve
CLLocationManager.allowsBackgroundLocationUpdates = trueManter coleta de GPS com o app em background.
startMonitoringSignificantLocationChanges()Wake-up por mudanças significativas quando o app é descartado.
BGAppRefreshTask / BGProcessingTaskJanelas periódicas para flush de cache LIFO no Socket TCP.
Background Modeslocation, fetch, remote-notification, processing — definidos em AppMonisatIos.entitlements.

Filtro de movimento

Mesmo critério do Android: posições são enviadas se houver deslocamento ≥ 10 m ou heartbeat por tempo configurado. O JSON de configuração remoto controla o intervalo dinamicamente.

Limitações iOS vs Android

  • iOS não permite Foreground Service contínuo — o app pode ser suspenso a qualquer momento fora dos Background Modes ativos.
  • BGTaskScheduler não garante janela fixa: o sistema decide quando executar.
  • Sockets TCP podem ser fechados pelo SO em background prolongado — reconexão obrigatória ao retorno.