Приложение не запрашивает разрешение службы определения местоположения при установке?
Я использую карту Google в своем приложении. Я установил это в info.plist
Конфиденциальность - Расположение при использовании Описание использования
и в моем коде (HomeScreen) я тоже проверяю, как это:
if (CLLocationManager.locationServicesEnabled())
{
locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.requestAlwaysAuthorization()
locationManager.startUpdatingLocation()
} else{
let alertController = UIAlertController(title: "Oops !!" , message: "Location service seems to be disabled. Please enable from Settings -> Privacy ->LocationService.", preferredStyle: .Alert)
let defaultAction = UIAlertAction(title: "OK", style: .Default, handler: nil)
alertController.addAction(defaultAction)
self.presentViewController(alertController, animated: true, completion: nil)
}
Но он не спрашивает разрешения при первой установке приложения. Любая помощь будет цениться.
3 ответа
Вы устанавливаете Info.plist
ключ для доступа к местоположению, когда пользователь использует приложение (то есть, когда оно находится на переднем плане), но в вашем коде вы запрашиваете разрешение всякий раз, когда приложение работает (то есть всегда).
Вам нужно решить, что вы хотите. Если вы хотите всегда иметь доступ к местоположению пользователя, измените Info.plist
ключ. Если вы хотите получить доступ к местоположению пользователя, когда ваше приложение находится на переднем плане, измените запрос на разрешение на requestWhenInUseAuthorization()
вместо.
import CoreLocation
class AppDelegate: CLLocationManagerDelegate{
var locationManager: CLLocationManager!
var currentCoordinate: CLLocationCoordinate2D?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
self.setupLocationManager()
return true
}
func setupLocationManager(){
locationManager = CLLocationManager()
locationManager?.delegate = self
self.locationManager?.requestAlwaysAuthorization()
locationManager?.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
locationManager?.startUpdatingLocation()
}
// Below method will provide you current location.
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
if currentCoordinate == nil {
currentCoordinate = locations.last?.coordinate
locationManager?.stopMonitoringSignificantLocationChanges()
let locationValue:CLLocationCoordinate2D = manager.location!.coordinate
print("locations = \(locationValue)")
//currentCoordinate use this location Coordinate in your whole app.
locationManager?.stopUpdatingLocation()
}
}
// Below Mehtod will print error if not able to update location.
func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
print("Error")
}
Если какой-либо запрос по моему ответу, то скажите мне.
Начиная с iOS 10, мы должны дать разрешения на местоположение в файле.plist, как показано ниже
и просто проверьте, включены ли службы определения местоположения вашего приложения в настройках. Настройки -> имя вашего приложения -> Разрешить доступ к местоположению. Никогда не должен быть выбран.
Удалите приложение с устройства и переустановите приложение снова, после чего оно должно запросить разрешение на местоположение.