gpt4 book ai didi

objective-c - iOS7 核心位置不更新

转载 作者:太空狗 更新时间:2023-10-30 03:22:01 29 4
gpt4 key购买 nike

我有一个非常简单的应用程序示例,用于初始化和更新用户位置。在设备上,它每秒左右成功抛出另一个回调位置,但是在设备(运行 iOS7 的 iPhone)上调用该方法一次,然后神秘地停止。 .

//Setup Location Manager in ViewDidLoad
locationManager = [[CLLocationManager alloc] init];
[locationManager setDistanceFilter:kCLDistanceFilterNone];
[locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
[locationManager setDelegate:self];
[locationManager startUpdatingLocation];

-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
NSLog(@"location services not turned on");
}

-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
NSLog(@"loactions %@", locations);
}

-(void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{

NSLog(@"new location %f, and old %f", newLocation.coordinate.latitude, newLocation.coordinate.longitude);
}

在 iOS6 中,此应用程序运行良好,并不断更新设备位置...自 iOS7 以来发生了什么变化?

最佳答案

这里有几点:

1- 我在任何地方都看不到属性:pausesLocationUpdatesAutomatically。此属性的默认值为是。这意味着根据您的事件类型(请参阅下面的#2),GPS 将暂停更新,这可能是您没有收到更新的原因。该算法是一个只有 Apple 知道的黑匣子,也许它在 iOS6 和 iOS7 之间以某种方式发生了变化。将 pausesLocationUpdatesAutomatically 设置为 NO 会影响电池。

2- 您应该根据您的应用程序设置您的 activityType。默认值是 CLActivityTypeOther,我不确定它如何影响 GPS 算法和上面的#1。因此,为了最初测试您的应用程序,我会适本地设置 activityType 并将 pausesLocationUpdatesAutomatically 更改为 No。在我的测试中,我会始终如一地获得大约每秒的更新(我在一夜之间进行了测试)。

3- 位置更新测试需要移动。为了获得更好的结果,我会使用您设置的 activityType 进行测试。换句话说,如果 activityType 是 CLActivityTypeFitness,我会四处走动测试它,等等。

4- locationManager didUpdateToLocation fromLocation 在 iOS7 中被弃用。此外,如果 locationManager didUpdateLocations 被实现,前者将不会被调用。所以在你上面的例子中,locationManager didUpdateToLocation fromLocation 没有被调用。

5- kCLLocationAccuracyBestForNavigation 和 kCLLocationAccuracyBest 之间没有真正的电池使用差异。另一方面,kCLLocationAccuracyBestForNavigation 使用最高速度的 GPS,此外还结合了加速度计数据。

所以我将从设置 activityType 开始,将 pausesLocationUpdatesAutomatically 设置为 NO,并将 desiredAccuracy 更改为 kCLLocationAccuracyBestForNavigation。一旦您获得持续更新,我就会将 pausesLocationUpdatesAutomatically 设置为 Yes 并尝试使用代码来实现相同的应用程序可用性。

希望对你有帮助

关于objective-c - iOS7 核心位置不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19393458/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com