Módulo responsável pelo monitoramento da localização geográfica do usuário. Este módulo roda em background e fica monitorando os lugares visitados pelos usuários.
Para inicializar a geolocalização, a aplicação precisa obter a permissão do usuário conforme passos abaixo:
1. Adicione a chave NSLocation no Info.plist do aplicativo:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>O aplicativo $(EXECUTABLE_NAME) usará a localização para otimizar a sua experiência.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>O aplicativo $(EXECUTABLE_NAME) usará a localização para otimizar a sua experiência.</string>
<key>NSMotionUsageDescription</key>
<string>O aplicativo $(EXECUTABLE_NAME) usará seus movimentos para otimizar a sua experiência.</string>
</dict>
</plist>
2. Ative o acesso as informações de WiFi em Capabilities Access WiFi Information
:
3. Em seguida, ative Location updates
em Capabilities:
4. Em seu AppDelegate, no método applicationDidBecomeActive
, após permissão para fazer Tracking, solicite ao usuário permissão para sua aplicação usar geolocalização.
Task {
if await ATTrackingManager.requestTrackingAuthorization() == .authorized {
locationManager.delegate = self
locationManager.requestWhenInUseAuthorization()
}
}
5. Implemente o método locationManagerDidChangeAuthorization
do delegate CLLocationManagerDelegate em seu AppDelegate. Assim que concedida a permissão do usuário, validar a permissão concedida. Caso for para somente uso do App, requisitar para usar sempre, caso contrário, chamar a inicialização do módulo GeoBehavior:
switch manager.authorizationStatus {
case .authorizedWhenInUse:
manager.requestAlwaysAuthorization()
default:
break
}
MDMCore.start(withAppId: "SEU_APP_ID", kitModules: [MDMGeoBehavior.self()])
Opt-out
Para fazer o opt-out do módulo, basta chamar o seguinte comando:
MDMGeoBehavior.setOptOut(true)
Para desfazer o opt-out do módulo, basta chamar o seguinte comando:
MDMGeoBehavior.setOptOut(false)