高德地圖定位不准,定位回調不走,一些異常情況處理.


蘋果在iOS13 修改了地理位置信息授權選項,當[CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined,在- (void)mapViewRequireLocationAuth:(CLLocationManager *)locationManager;實現 [locationManager requestAlwaysAuthorization].系統會顯示 3 種選項:始終允許、使用應用期間、永不。而在 iOS 13 中,彈出該請求時不再提供「始終允許」選項,取而代之的是「允許一次」.所以iOS 13的用戶只能授權使用應用期間使用地理位置,在手機設置里面顯示的也是使用期間使用地理位置.但在- (void)amapLocationManager:(AMapLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status打印當前的授權權限狀態卻是kCLAuthorizationStatusAuthorizedAlways 始終允許的狀態,出現了實際權限與代理回調的權限不一致.導致會出現定位不准,定位回調不走,狀態欄不提示APP正在活躍地理位置等等一系列問題.

解決方案:

-(void)mapViewRequireLocationAuth:(CLLocationManager *)locationManager

{

    if (@available(iOS 13.0, *)) {

        [locationManager requestWhenInUseAuthorization];

    } else {

        [locationManager requestAlwaysAuthorization];

    }

}

這樣設置以后在- (void)amapLocationManager:(AMapLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status打印當前的授權權限狀態就與手機設置的狀態一致,之后也暫時沒遇到類似問題了.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM