locationManager.requestWhenInUseAuthorization()
é chamado quando o usuário pressiona um botão, mas nenhum prompt é exibido.
Aqui está meu código completo
import SwiftUI
import CoreLocation
struct ContentView: View {
@ObservedObject var distanceTracker = DistanceTracker();
var body: some View {
Button(action: distanceTracker.enableLocServices){
Text("Enable Location")
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
import CoreLocation
class DistanceTracker: NSObject, ObservableObject, CLLocationManagerDelegate {
let locationManager = CLLocationManager()
var startLocation: CLLocation!
var lastLocation: CLLocation!
@Published var traveledDistance = 0.0
override init() {
super.init()
locationManager.delegate = self
}
func enableLocServices(){
locationManager.requestWhenInUseAuthorization()
print("bruh")
}
func locationManagerDidChangeAuthorization(_ manager: CLLocationManager) {
switch manager.authorizationStatus {
case .notDetermined:
print("Location permission not asked for yet")
case .restricted:
print("Location usage is restricted (perhaps by parental controls or some other restriction)")
case .denied:
print("Location permission denied by user")
case .authorizedAlways:
print("Location permission granted for background and foreground use")
case .authorizedWhenInUse:
print("Location permission granted for foreground use only")
@unknown default:
print("An unknown authorization status received")
}
}
}
Ao apertar o botão, imprime "bruh". Editar: Além disso, o status impresso é "Permissão de localização ainda não solicitada"
NSLocationAlwaysAndWhenInUseUsageDescription
e NSLocationWhenInUseUsageDescription
ambos são adicionados à seção de informações.
Os serviços de localização no relógio e no telefone estão ativados (este é um aplicativo apenas para watchOS, mas ainda assim, e não consegui fazer isso funcionar para o IOS de qualquer maneira) e a permissão não foi negada anteriormente. Como posso consertar isso? Obrigado!
Você está usando isso
Você precisa adicionar também isso:
Ao tentar com isso, você verá a permissão aparecer.