/ / iOS7 Core Location не се актуализира - цел-c, ios7, core-location, cllocationmanager

iOS7 Core Location не се актуализира - цел-c, ios7, core-location, cllocationmanager

Имам един много прост пример за приложението, което инициализираи актуализира местоположението на потребителите .. На устройството успешно хвърля друга позиция за обратно повикване всяка секунда, но на устройството (iPhone, изпълняващо iOS7) се извиква метод веднъж и след това мистериозно спира ...

//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?

Отговори:

12 за отговор № 1

Има няколко неща тук:

1 - Не виждам никъде имота: pausesLocationUpdatesAutomatically. По подразбиране за тази собственост е Да. Това означава, че в зависимост от типа Ви на дейност (вж. # 2) по-долу, GPS ще преустанови актуализациите и това може да е причината да не получавате актуализации. Алгоритъмът е черна кутия, която само Apple знае и може би някак си се е променила между iOS6 и iOS7. Настройването на паузитеНастройки на паузитеАвтоматично, за да НЕ може да повлияе на батерията.

2- Трябва да зададете Тип дейност в зависимост отВашето приложение. По подразбиране е CLActivityTypeOther, което не съм сигурен как влияе на GPS алгоритъма и # 1 по-горе. Така че, за да тествате първоначално приложението си, ще настроя активността Тип по подходящ начин и ще променя паузите. На моите тестове ще получа актуализация за всяка секунда последователно (тествах я за една нощ).

3- Тестване на тестовите актуализации изисква движение. За да постигнете по-добри резултати, ще използвам типа дейност, който сте задали за тестване. С други думи, ако activityType е CLActivityTypeFitness, ще ходя наоколо, за да я тествам и т.н.

4- местоположениеManager didUpdateToLocationотLocation е отхвърлено в iOS7. Освен това, ако LocationManager didUpdateLocations е внедрена, първата няма да бъде извикана. Така че в случая по-горе, locationManager didUpdateToLocation fromLocation не се извиква.

5 - Няма реална разлика в използването на батериятамежду kCLLocationAccuracyBestForNavigation и kCLLocationAccuracyBest. От друга страна, kCLLocationAccuracyBestForNavigation използва GPS върхова скорост и освен това я комбинира с данните от акселерометъра.

Така че ще започна с настройка activityType,задаване на паузиЗадаванеАвтоматично на НЕ и промяна на желанатаактуалност в kCLLocationAccuracyBestForNavigation. След като получавате непрекъснати актуализации, тогава ще задам pausesLocationUpdatesAutomatically на Yes и ще се опитам да работя с кода, за да постигна същата използваемост на приложения.

Надявам се това да помогне