gpt4 book ai didi

swift - 将坐标存储到 Firebase 中的实时数据库

转载 作者:行者123 更新时间:2023-11-30 11:02:09 25 4
gpt4 key购买 nike

我正在尝试保存纬度。又长。到数据库。但数据库没有显示任何内容,并且 Swift 中也没有显示任何错误。我的代码如下所示。

override func viewDidLoad() {
super.viewDidLoad()

mapView.showsUserLocation = true

if CLLocationManager.locationServicesEnabled() == true {
if CLLocationManager.authorizationStatus() == .restricted || CLLocationManager.authorizationStatus() == .denied || CLLocationManager.authorizationStatus() == .notDetermined {
locationManager.requestWhenInUseAuthorization()
}

let userLatitude = locationManager.location?.coordinate.latitude
let userLongtitude = locationManager.location?.coordinate.longitude
let userTime = locationManager.location?.timestamp

Auth.auth().createUser(withEmail: "test@gmail.com",password: "xxxx", completion: {(User, error) in
if error != nil {
self.displayMyalertMessage(userMessage: error!.localizedDescription)
} else {
print("Success")
}
guard let uid = User?.user.uid else {return}
let ref = Database.database().reference(fromURL:"")
let userReference = ref.child("Locations").child(uid)

let values = ["Latitude": userLatitude as Any, "Longtitude": userLongtitude as Any, "Time": UserTime as Any] as [String : Any]
userReference.updateChildValues(values, withCompletionBlock: { (error, reference) in
if error != nil {
print(error as Any)
return
}
})
})
}

最佳答案

var locationManager = CLLocationManager()

func initiateLocation(){

locationManager.delegate = self
locationManager.requestWhenInUseAuthorization()
locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
locationManager.distanceFilter = 100
locationManager.startUpdatingLocation()
locationManager.allowsBackgroundLocationUpdates = true

//checkForLocationServices()
checkLocationAuthorizationStatus()
guard let myLatitude = locationManager.location?.coordinate.latitude else{
return
}
guard let myLongitude = locationManager.location?.coordinate.longitude else{
return
}

}


func checkLocationAuthorizationStatus() {
let status = CLLocationManager.authorizationStatus()
if status == CLAuthorizationStatus.notDetermined{
print("NotDetermined")
locationManager.requestWhenInUseAuthorization()
CLLocationManager.locationServicesEnabled()
locationManager.requestLocation()
}else {
print("Problem with authorization")
}
}



// Handle incoming location events.
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let location: CLLocation = locations.last!
print("Location: \(location)")
updateMyLocationToDataBase()
}


// Handle authorization for the location manager.
func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
switch status {
case .restricted:
print("Location access was restricted.")
case .denied:
print("User denied access to location.")
// Display the map using the default location.
case .notDetermined:
print("Location status not determined.")
case .authorizedAlways: fallthrough
case .authorizedWhenInUse:
print("Location status is OK.")
}
}

// Handle location manager errors.
func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
locationManager.stopUpdatingLocation()
print("Error: \(error)")

let appName = Bundle.main.object(forInfoDictionaryKey: "CFBundleDisplayName") as! String

let msg :String = "You have denied the app to access your location. Please enable the location services in your settings for the app to get the location";
let alertController = UIAlertController(title: "Allow \(appName) to access your location while you are using the app?", message: msg, preferredStyle: .alert)
let cancelAction = UIAlertAction(title: "CANCEL", style: UIAlertActionStyle.default, handler: nil)

let settingsAction = UIAlertAction(title: "SETTINGS", style: .default) { (_) -> Void in
guard let settingsUrl = URL(string: UIApplicationOpenSettingsURLString) else {
return
}

if UIApplication.shared.canOpenURL(settingsUrl) {
UIApplication.shared.open(settingsUrl, completionHandler: { (success) in
print("Settings opened: \(success)") // Prints true
})
}
}


alertController.addAction(cancelAction)
alertController.addAction(settingsAction)

self.present(alertController, animated: true, completion: nil)
}

关于swift - 将坐标存储到 Firebase 中的实时数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53217903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com