How can I save a photo to photo library with geolocation metadata?
I have requested (and allowed) the app to access user location:
private func allowAccessToUserLocation() {
locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.requestWhenInUseAuthorization()
}
Do I need to ask for specific premissions for the camera app?
EDIT:
I use UIImagePickerController to take photos from within the app. All photos taken from within the app are stored in the photo library WITHOUT the geolocation.
Does it have anything to do with the way I save the image to photo library? Is my problem here rather than in the core location permissions??
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage{
UIImageWriteToSavedPhotosAlbum(pickedImage, self, #selector(image(_:didFinishSavingWithError:contextInfo:)), nil)
dismiss(animated: true, completion: {
self.showPhoto()})
}
}
Well I guess you need to access the location of the user first before you call func addAsset(image: UIImage, location: CLLocation? = nil) {...}
so somewhere in the func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {....}
I am calling:
let locationManager = CLLocationManager()
if CLLocationManager.locationServicesEnabled() {
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
locationManager.startUpdatingLocation()
}
else{
//Location service disabled"
}
//and then call....
addAsset(image: pickedImage, location: locationManager.location)
once i finish with the:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {...}
i stop updating the location:
locationManager.stopUpdatingLocation()
This works for me