Мое приложение iOS было отклонено Apple, так как приложение аварийно завершает работу, если пользователь выбрал «Не разрешать» доступ к местоположению.И приступает к нажатию на кнопку «Моя карта».
Как обернуть эту кнопку в проверку, чтобы увидеть, было ли предоставлено разрешение пользователю, и если нет, то как я могу запросить разрешение еще раз?
//Map Button Action - Opens Maps - Gives choice of Google or Apple maps
@IBAction func googleMapBtn(_ sender: UIButton) {
UIDevice.current.isBatteryMonitoringEnabled = true
let state = UIDevice.current.batteryState
//If user is in Loop - Cant open maps
if state == .charging {
print("In Loop - Cant open maps")
}
//Present Map Options
else {
let alertController = UIAlertController.init(title: "Open Map", message: "", preferredStyle: .alert)
alertController.addAction(UIAlertAction.init(title: "Google Maps", style: .default, handler: { (action) in
self.googleMapsOpen()
}))
alertController.addAction(UIAlertAction.init(title: "Apple Maps", style: .default, handler: { (action) in
self.appleMapsOpen()
}))
alertController.addAction(UIAlertAction.init(title: "Back", style: .default, handler: { (action) in
self.dismiss(animated: true, completion: nil)
}))
self.present(alertController, animated: true) {
}
}
}
Код завершается сбоем всякий раз, когда пользователь выбирает тип карты Google / Apple, и выполняются self.googleMapsOpen () или self.appleMapsOpen ().Конкретно сбой по схеме let =
func googleMapsOpen(){
print("Google Maps Pressed")
let scheme = "comgooglemaps://?center=\(LocationManager.sharedInstance.location.coordinate.latitude),\(LocationManager.sharedInstance.location.coordinate.longitude)&zoom=15"
self.open(scheme: scheme)
}
func appleMapsOpen(){
print("Apple Maps Pressed")
let scheme = "http://maps.apple.com/?ll=\(LocationManager.sharedInstance.location.coordinate.latitude),\(LocationManager.sharedInstance.location.coordinate.longitude)&zoom=15"
self.open(scheme: scheme)
}