0

我使用谷歌地圖在我app.I已經在info.plist中應用程序不請求位置服務權限何時在安裝時使用?

隱私設置此 - 位置在使用的時候使用情況說明

,並在我的代碼(主屏幕),我檢查這樣太:

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) 
    } 

但它在第一次安裝應用程序時沒有詢問權限。任何幫助將appriciate。

+0

你添加 <!DOCTYPE的plist PUBLIC 「 - //蘋果// DTD PLIST 1.0 // EN」「HTTP ://! www.apple.com/DTDs/PropertyList-1.0.dtd「> 爲了能夠檢測到您是否正在駕駛,我們需要訪問您的位置。 在您的.plist文件中? –

+0

只需在您的appdelegates.swift文件中設置此代碼 –

+0

@HimanshuMoradiya在AppDelagate中添加哪些代碼? –

回答

0
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") 
} 

如果有任何查詢根據我的答案告訴我。

+0

完美這是工作 –

+0

@AnushkaMadushan這是工作,那麼爲什麼讓你失望投票? –

+0

對不起,我該如何改變它 –

2

您正在設置Info.plist鍵用於在用戶使用應用程序時訪問該位置(即當它位於前臺)時,但在代碼中,只要應用程序正在運行(即始終)就請求權限, 。

你需要決定你想要的。如果您想始終能夠訪問用戶的位置,請更改密鑰Info.plist。如果您想要在應用程序位於前臺時訪問用戶的位置,請改爲將權限請求更改爲requestWhenInUseAuthorization()

0

從iOS的10起我們需要給於的.plist文件的位置的權限,就像下面enter image description here

,只是檢查你的應用程序的位置服務啓用或不settings.Settings - >您的應用程序的名稱 - >允許位置訪問。永遠不應該被選中。

從設備中刪除您的應用程序並重新安裝應用程序,然後它應該問你的位置權限。

相關問題