← Voltar aos projetos Aplicação móvel · iOS & Swift

Aplicação móvel de geolocalização iOS

Uma aplicação iOS nativa desenvolvida em Swift e SwiftUI dedicada à captura de GPS de alta precisão e ao rastreamento de rotas em tempo real.

PROJETO

O projeto

GeolocationApp é uma aplicação iOS nativa desenvolvida em Swift e SwiftUI. Permite a captura precisa de coordenadas GPS, geocodificação inversa automática de endereços, rastreamento de percursos em tempo real com cálculo de distância e velocidade, bem como arquivo local e partilha de dados registados.

Visão Geral do Projeto & Arquitetura

A GeolocationApp é uma aplicação nativa para iOS desenvolvida em Swift e SwiftUI. Projetada para oferecer o máximo desempenho e uma utilização fluida, combina a precisão dos serviços CoreLocation com o poder cartográfico do MapKit.

┌─────────────────────────────────────────────────────────────────────────────┐
│                   GeolocationApp iOS Native Architecture                    │
└──────────────────────────────────────┬──────────────────────────────────────┘
                                       │
           ┌───────────────────────────┼───────────────────────────┐
           ▼                           ▼                           ▼
  📍 CoreLocation Engine       🗺️ MapKit & SwiftUI         💾 Local Data Pipeline
  • High-precision GPS fixes   • Interactive vector maps   • JSON File persistence
  • Reverse geocoding worker   • MapPolyline route tracing • Documents directory
  • Authorization state flow   • Combine reactive bindings • Multi-channel export
            

Registo GPS de Alta Precisão

Captura instantânea de latitude, longitude, margem de precisão, marcas temporais completas e metadados do dispositivo iOS.

Geocodificação Inversa Automática

Conversão automática de coordenadas GPS em endereços postais legíveis (rua, código postal, cidade, país).

Rastreio de Percurso em Tempo Real

Registo de trajetos em direto com desenho de polilinhas interativas, cálculo de distância total e velocidade instantânea.

Funcionalidades Principais & Gestão de Dados

Armazenamento Local Persistente

Gravação segura do histórico de posições em formato JSON diretamente na pasta local Documents da aplicação.

Partilha Multicanal de Dados

Exportação rápida de dados de posição através de Apple Maps, SMS pré-preenchidos ou e-mails estruturados.

Gestão do Histórico

Interface intuitiva para consultar de forma seletiva ou eliminar os pontos GPS registados.

Arquitetura & Tecnologias

  • Linguagem & Interface: Swift 5 & Framework declarativo SwiftUI
  • Serviços de Localização: CoreLocation (gestão de permissões e recetor GPS de alta frequência)
  • Cartografia: MapKit (mapas vetoriais e traçado MapPolyline em tempo real)
  • Gestão de Estado: Framework Combine (arquitetura reativa com @Published e ObservableObject)
  • Persistência: Serialização JSON através do FileManager local (Pasta Documents)

Estrutura do Código-Fonte

O projeto baseia-se numa arquitetura modular que garante a rigorosa separação de responsabilidades:

  • App/Ponto de Entrada: Configuração do ciclo de vida da aplicação (@main).
  • Models/Modelos de Dados: Estruturas de dados conformes com os protocolos Codable e Identifiable.
  • Services/Camada de Serviços: Controlador de geolocalização e gestão do recetor GPS de hardware.
  • Views/Camada de Vistas: Vistas em SwiftUI (Início, Trajeto em tempo real, Histórico e Componentes de mapa).

Privacidade Apple & Matriz de Permissões

A aplicação respeita as diretrizes de privacidade da Apple através das declarações de utilização no ficheiro Info.plist:

Chave de Permissão Info.plist Finalidade de Utilização Nível de Autorização
NSLocationWhenInUseUsageDescription Permite a leitura de GPS enquanto a aplicação está aberta em primeiro plano. Obrigatório
NSLocationAlwaysAndWhenInUseUsageDescription Habilita a gravação contínua de percursos mesmo em segundo plano. Opção em Segundo Plano

Código-Fonte & Repositório GitHub

Consulte o código-fonte completo da aplicação nativa para iOS em Swift e SwiftUI no GitHub.

Ver Código no GitHub ↗