![](/img/trans.png)
[英]Xcode 7.1 iOS 9.1 CLLocationManager not always working?
[英]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.