簡體   English   中英

CLLocationManager一直無法正常運行(iOS 8,Xcode 6)

[英]CLLocationManager not working all the time (iOS 8, Xcode 6)

基本上一半時間使用委托方法

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations;

根本沒有被調用。 但是另一半時間,它運行良好! 我發現它通常發生在關閉並退出Xcode之后,我第一次啟動Xcode時,但是在那之后或運行了兩次之后,它似乎運行良好。 我不是100%知道這僅僅是Xcode的問題還是什么,我很快就會獲得開發者的許可證,因此我將看看它是否可以在實際設備上正常工作。

從viewDidAppear(也嘗試在viewDidLoad中嘗試,沒有區別)開始,我運行一個方法來初始化我的locationManager內容:

locationManager = [[CLLocationManager alloc]init];

[locationManager setDelegate:self];
locationManager.distanceFilter = 20.0f;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.pausesLocationUpdatesAutomatically = NO;

if ([locationManager respondsToSelector:@selector(requestAlwaysAuthorization)])
    [locationManager requestAlwaysAuthorization];

[locationManager startUpdatingLocation];

有時候這行得通,有時卻行不通。 我什至安排了一個計時器,每隔大約幾秒鍾就重新運行一次,這是行不通的。

還有什么我應該做的嗎? 這個問題有什么答案嗎?

謝謝。

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations;  

僅當新位置可用時,才調用此委托方法。 有時GPS不會獲得衛星信號,因此無法獲得位置。 因此,在這些情況下,上述方法將不會被觸發。 由於您正在模擬器中進行測試,因此您應該更改或設置位置。 我認為它將在實際設備上正常運行。

添加viewdidappear

_locamangr = [CLLocationManager new];
    _locamangr.delegate = self;
    //    _locamangr.distanceFilter = kCLDistanceFilterNone;
    _locamangr.desiredAccuracy = kCLLocationAccuracyBest;
    if ([_locamangr respondsToSelector:@selector(requestAlwaysAuthorization)]) {
        [_locamangr requestAlwaysAuthorization] ;
        [_locamangr requestWhenInUseAuthorization];
    }
    [_locamangr startUpdatingLocation];

並在infoplist中設置。 NSLocationWhenInUseUsageDescription NSLocationAlwaysUsageDescription

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM