Подтвердить что ты не робот

CLLocationManager в iOS9, дающий неправильные местоположения (iOS8 в порядке)

Мы испытываем некоторые странные проблемы в местах из CCLocationManager, начиная с iOS9. У iOS 7-8 проблем нет. Странные местоположения вызывают ошибки в приложении. Приложение используется во время вождения автомобиля, и у нас около 50 тестовых пользователей в TestFlight, и некоторые из них сообщают об этих проблемах.

Приложение реагирует на обновления местоположения, каждое обновление местоположения, каждые 25 м и каждые 50 м есть что-то делать. Для теста я сохранил все эти местоположения в массиве. У наших тестовых пользователей есть кнопка, которая отправит мне историю в формате GPX по почте.

Например, следующие 12 мест, куда высылаете мне:

<?xml version="1.0" encoding="UTF-8"?>
<gpx xmlns="http://www.topografix.com/GPX/1/1" version="1.1" creator="flitsmeister-ios-app-test" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd">
  <wpt lat="51.28165091" lon="5.77329012">
    <datetimegps>2015-09-29T04:36:55.371</datetimegps>
    <datetimeprocessed>2015-09-29T04:36:55.460</datetimeprocessed>
    <course>61.5</course>
    <speed>13.3</speed>
    <accuracyhorizontal>5.0</accuracyhorizontal>
    <accuracyvertical>3.0</accuracyvertical>
    <altitude>33.1</altitude>
    <sequencenr>0</sequencenr>
  </wpt>
  <wpt lat="51.28138654" lon="5.77244497">
    <datetimegps>2015-09-29T04:36:55.506</datetimegps>
    <datetimeprocessed>2015-09-29T04:36:55.523</datetimeprocessed>
    <course>69.3</course>
    <speed>13.5</speed>
    <accuracyhorizontal>5.0</accuracyhorizontal>
    <accuracyvertical>3.0</accuracyvertical>
    <altitude>33.7</altitude>
    <sequencenr>1</sequencenr>
  </wpt>
  <wpt lat="51.28171319" lon="5.77345935">
    <datetimegps>2015-09-29T04:36:56.371</datetimegps>
    <datetimeprocessed>2015-09-29T04:36:56.441</datetimeprocessed>
    <course>61.2</course>
    <speed>13.2</speed>
    <accuracyhorizontal>5.0</accuracyhorizontal>
    <accuracyvertical>3.0</accuracyvertical>
    <altitude>33.0</altitude>
    <sequencenr>2</sequencenr>
  </wpt>
  <wpt lat="51.28138654" lon="5.77244497">
    <datetimegps>2015-09-29T04:36:56.562</datetimegps>
    <datetimeprocessed>2015-09-29T04:36:56.571</datetimeprocessed>
    <course>69.3</course>
    <speed>13.5</speed>
    <accuracyhorizontal>5.0</accuracyhorizontal>
    <accuracyvertical>3.0</accuracyvertical>
    <altitude>33.7</altitude>
    <sequencenr>3</sequencenr>
  </wpt>
  <wpt lat="51.28177064" lon="5.77362548">
    <datetimegps>2015-09-29T04:36:57.371</datetimegps>
    <datetimeprocessed>2015-09-29T04:36:57.440</datetimeprocessed>
    <course>60.1</course>
    <speed>13.4</speed>
    <accuracyhorizontal>5.0</accuracyhorizontal>
    <accuracyvertical>3.0</accuracyvertical>
    <altitude>32.9</altitude>
    <sequencenr>4</sequencenr>
  </wpt>
  <wpt lat="51.28138654" lon="5.77244497">
    <datetimegps>2015-09-29T04:36:57.541</datetimegps>
    <datetimeprocessed>2015-09-29T04:36:57.558</datetimeprocessed>
    <course>69.3</course>
    <speed>13.5</speed>
    <accuracyhorizontal>5.0</accuracyhorizontal>
    <accuracyvertical>3.0</accuracyvertical>
    <altitude>33.7</altitude>
    <sequencenr>5</sequencenr>
  </wpt>
  <wpt lat="51.28182383" lon="5.77380183">
    <datetimegps>2015-09-29T04:36:58.371</datetimegps>
    <datetimeprocessed>2015-09-29T04:36:58.438</datetimeprocessed>
    <course>61.2</course>
    <speed>13.7</speed>
    <accuracyhorizontal>5.0</accuracyhorizontal>
    <accuracyvertical>3.0</accuracyvertical>
    <altitude>33.3</altitude>
    <sequencenr>6</sequencenr>
  </wpt>
  <wpt lat="51.28138654" lon="5.77244497">
    <datetimegps>2015-09-29T04:36:58.371</datetimegps>
    <datetimeprocessed>2015-09-29T04:36:58.491</datetimeprocessed>
    <course>69.3</course>
    <speed>13.5</speed>
    <accuracyhorizontal>5.0</accuracyhorizontal>
    <accuracyvertical>3.0</accuracyvertical>
    <altitude>33.7</altitude>
    <sequencenr>7</sequencenr>
  </wpt>
  <wpt lat="51.28188803" lon="5.77398322">
    <datetimegps>2015-09-29T04:36:59.371</datetimegps>
    <datetimeprocessed>2015-09-29T04:36:59.431</datetimeprocessed>
    <course>61.5</course>
    <speed>14.4</speed>
    <accuracyhorizontal>5.0</accuracyhorizontal>
    <accuracyvertical>3.0</accuracyvertical>
    <altitude>33.4</altitude>
    <sequencenr>8</sequencenr>
  </wpt>
  <wpt lat="51.28202386" lon="5.77435235">
    <datetimegps>2015-09-29T04:37:01.371</datetimegps>
    <datetimeprocessed>2015-09-29T04:37:01.432</datetimeprocessed>
    <course>61.2</course>
    <speed>14.9</speed>
    <accuracyhorizontal>5.0</accuracyhorizontal>
    <accuracyvertical>3.0</accuracyvertical>
    <altitude>33.5</altitude>
    <sequencenr>9</sequencenr>
  </wpt>
  <wpt lat="51.28188803" lon="5.77398322">
    <datetimegps>2015-09-29T04:37:01.444</datetimegps>
    <datetimeprocessed>2015-09-29T04:37:01.454</datetimeprocessed>
    <course>61.5</course>
    <speed>14.4</speed>
    <accuracyhorizontal>5.0</accuracyhorizontal>
    <accuracyvertical>3.0</accuracyvertical>
    <altitude>33.4</altitude>
    <sequencenr>10</sequencenr>
  </wpt>
  <wpt lat="51.28208027" lon="5.77454128">
    <datetimegps>2015-09-29T04:37:02.371</datetimegps>
    <datetimeprocessed>2015-09-29T04:37:02.430</datetimeprocessed>
    <course>61.9</course>
    <speed>15.1</speed>
    <accuracyhorizontal>5.0</accuracyhorizontal>
    <accuracyvertical>3.0</accuracyvertical>
    <altitude>33.3</altitude>
    <sequencenr>11</sequencenr>
  </wpt>
  <wpt lat="51.28188803" lon="5.77398322">
    <datetimegps>2015-09-29T04:37:02.513</datetimegps>
    <datetimeprocessed>2015-09-29T04:37:02.521</datetimeprocessed>
    <course>61.5</course>
    <speed>14.4</speed>
    <accuracyhorizontal>5.0</accuracyhorizontal>
    <accuracyvertical>3.0</accuracyvertical>
    <altitude>33.4</altitude>
    <sequencenr>12</sequencenr>
  </wpt>
  <wpt lat="51.28217918" lon="5.77472677">
    <datetimegps>2015-09-29T04:37:03.371</datetimegps>
    <datetimeprocessed>2015-09-29T04:37:03.434</datetimeprocessed>
    <course>61.5</course>
    <speed>15.2</speed>
    <accuracyhorizontal>5.0</accuracyhorizontal>
    <accuracyvertical>3.0</accuracyvertical>
    <altitude>33.5</altitude>
    <sequencenr>13</sequencenr>
  </wpt>
</gpx>

Если я напечатаю это местоположение на карте (геопланетщик - мой друг), я увижу это:

Точки, напечатанные на карте

Примечание: точки B D F H находятся в одном месте, но для иллюстрации проблемы я поместил их в одну строку рядом друг с другом.

Как вы можете видеть, следуете ли вы последовательности A, B, C, вы увидите, что точка B не находится в нужном месте.

Начиная с сборки iOS9 почти каждый испытуемый испытывает эту ситуацию один или два раза в неделю.

Следуя некоторому коду, мы используем:

CLLocationManager (в среднем потоке):

_manager = [[CLLocationManager alloc] init];
_manager.delegate = self;
_manager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
_manager.activityType = CLActivityTypeAutomotiveNavigation;
_manager.pausesLocationUpdatesAutomatically = TRUE;

if([_manager respondsToSelector:@selector(allowsBackgroundLocationUpdates)])
    _manager.allowsBackgroundLocationUpdates = TRUE;
[_manager requestAlwaysAuthorization];

В другом методе я вызываю start (также когда приложение запускает и останавливает его, когда оно завершается). (основной поток)

[_manager startUpdatingLocation];

Код для работы с локациями (я удалил некоторый код, чтобы этот пример был чистым):

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    CLLocation *lastLocation = [locations lastObject];

    // test that the horizontal accuracy does not indicate an invalid measurement
    if (lastLocation.horizontalAccuracy < 0)
        return;

    // test the age of the location measurement to determine if the measurement is cached
    // in most cases you will not want to rely on cached measurements
    NSTimeInterval locationAge = -[lastLocation.timestamp timeIntervalSinceNow];
    if (locationAge > 5.0)
        return;

    NSDate *dateLocationArrived = [NSDate date];

    CLLocation *beforeLocationRealtime = [self.LastLocationRealtime copy];
    CLLocation *newLocation = [lastLocation copy];


    //Realtime location.
    [self setSpeedForLocation:[newLocation copy] withOldRealtimeLocation:[beforeLocationRealtime copy]];

    [_delegateKaart updatedRealtimeLocation:newLocation fromPreviousLocation:[self.PreviousCurrentLocation copy]];

    self.BeforeLastLocationRealtime = [self.LastLocationRealtime copy];
    self.LastLocationRealtime = [newLocation copy];

    if([self.CurrentLocation distanceFromLocation:newLocation] < 50) //Less then 50m?
    {
        if([_locationEach25m distanceFromLocation:newLocation] > 25)
        {
            //Nieuwe last 25m.
            _locationEach25m = [newLocation copy];


            //Each 25m do
            [_delegateDashboard updatedLocation:[newLocation copy]];
            [_delegateSignalering locationUpdated:[newLocation copy]];

            [self holdLast200LocationsAndAddLocation:[lastLocation copy] withLocationArray:locations AndArriveDate:dateLocationArrived AndVerwerkt:TRUE];
        }
        else
            [self holdLast200LocationsAndAddLocation:[lastLocation copy] withLocationArray:locations AndArriveDate:dateLocationArrived AndVerwerkt:FALSE];
        return;//Stop
    }

    //Each 50m 
    [self holdLast200LocationsAndAddLocation:[lastLocation copy] withLocationArray:locations AndArriveDate:dateLocationArrived AndVerwerkt:TRUE];

    _locationEach25m = [newLocation copy]; //Also new last 25m .
    self.PreviousCurrentLocation = [self.CurrentLocation copy];//50m back. 
    self.CurrentLocation = [newLocation copy]; 

    [_delegateDashboard updatedLocation:[newLocation copy]];
    [_delegateSignalering locationUpdated:[newLocation copy]];

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        [_delegateCountryDetector locationUpdated:[newLocation copy]];
        [self setHuidigeWegForLocation:[newLocation copy]];
    });

    [[SignaleringController sharedInstance] runSignaleringCheckForLocation:[newLocation copy]];
}

Это похоже на ошибку iOS9 в locationmanager, которая дает мне неправильные результаты о местонахождении пользователя. Если я ищу Stackoverflow.com, мне кажется, что это единственный.

→ Пример2:

  <wpt lat="52.32835728" lon="5.05861943">
    <datetimegps>2015-10-01T06:27:29.905</datetimegps>
    <datetimearrivedincode>2015-10-01T06:27:30.196</datetimearrivedincode>
    <datetimeprocessed>2015-10-01T06:27:30.205</datetimeprocessed>
    <c>138.4</c>
    <s>26.5</s>
    <accuracyhorizontal>10.0</accuracyhorizontal>
    <accuracyvertical>6.0</accuracyvertical>
    <al>5.9</al>
    <nr>95</nr>
  </wpt>
  <wpt lat="52.32813366" lon="5.05927501">
    <datetimegps>2015-10-01T06:27:31.905</datetimegps>
    <datetimearrivedincode>2015-10-01T06:27:32.275</datetimearrivedincode>
    <datetimeprocessed>2015-10-01T06:27:32.301</datetimeprocessed>
    <c>119.5</c>
    <s>26.0</s>
    <accuracyhorizontal>10.0</accuracyhorizontal>
    <accuracyvertical>4.0</accuracyvertical>
    <al>5.7</al>
    <nr>96</nr>
  </wpt>
  <wpt lat="52.32835728" lon="5.05861943">
    <datetimegps>2015-10-01T06:27:33.196</datetimegps>
    <datetimearrivedincode>2015-10-01T06:27:33.203</datetimearrivedincode>
    <datetimeprocessed>2015-10-01T06:27:33.275</datetimeprocessed>
    <c>138.4</c>
    <s>26.5</s>
    <accuracyhorizontal>10.0</accuracyhorizontal>
    <accuracyvertical>6.0</accuracyvertical>
    <al>5.9</al>
    <nr>97</nr>
  </wpt>
  <wpt lat="52.32802075" lon="5.05960610">
    <datetimegps>2015-10-01T06:27:32.905</datetimegps>
    <datetimearrivedincode>2015-10-01T06:27:33.246</datetimearrivedincode>
    <datetimeprocessed>2015-10-01T06:27:33.283</datetimeprocessed>
    <c>119.2</c>
    <s>26.3</s>
    <accuracyhorizontal>10.0</accuracyhorizontal>
    <accuracyvertical>4.0</accuracyvertical>
    <al>5.3</al>
    <nr>98</nr>
  </wpt>

На карте:

второй пример

Примечание: A и C находятся в точном месте, я вручную их изменил, чтобы показать, что A находится за C.

Странно следующее:

  • 4rd/D имеет более раннее время GPS, затем пункт 3/C
  • Как-то я не получил место для 06:27:31, но получил два 06:27:33
  • 1st/A и 3rd/C имеют одинаковые GPS-координаты. Это не может быть правильно, потому что автомобиль ведет по шоссе 26 м/с (93 км/ч).

Точка 3 означает, что я не могу исправить ее, удерживая последнюю дату GPS и пропустить все, что было раньше, чем последнее.

→ Пример 3:

Общий файл GPX: Общий файл GPX

Включение в проблему: Масштабирование проблемы

Перемещали двойные и неправильные точки порядка рядом друг с другом: Перемещено двойные и неправильные точки порядка рядом друг с другом

Просто перезагрузите точки, которые интересуются примечаниями ABCD. Просто перезагрузите точки, которые интересуются примечаниями ABCD

Файл GPX с приведенного выше снимка экрана:

<?xml version="1.0" encoding="UTF-8"?>
<gpx xmlns="http://www.topografix.com/GPX/1/1" version="1.1" creator="flitsmeister-ios-app-test" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd">
<wpt lat="51.89792674" lon="4.54830456">
  <tgps>2015-09-29T15:23:40.999</tgps>
  <tv>2015-09-29T15:23:53.850</tv>
  <c>131.8</c>
  <s>13.1</s>
  <ah>5.0</ah>
  <av>3.0</av>
  <al>2.0</al>
  <nr>464</nr>
</wpt>
<wpt lat="51.89745789" lon="4.54927853">
  <tgps>2015-09-29T15:23:47.999</tgps>
  <tv>2015-09-29T15:23:53.910</tv>
  <c>125.9</c>
  <s>8.6</s>
  <ah>5.0</ah>
  <av>6.0</av>
  <al>5.4</al>
  <nr>465</nr>
</wpt>
<wpt lat="51.89745789" lon="4.54927853">
  <tgps>2015-09-29T15:23:47.999</tgps>
  <tv>2015-09-29T15:23:53.929</tv>
  <c>125.9</c>
  <s>8.6</s>
  <ah>5.0</ah>
  <av>6.0</av>
  <al>5.4</al>
  <nr>466</nr>
</wpt>
<wpt lat="51.89745789" lon="4.54927853">
  <tgps>2015-09-29T15:23:47.999</tgps>
  <tv>2015-09-29T15:23:53.932</tv>
  <c>125.9</c>
  <s>8.6</s>
  <ah>5.0</ah>
  <av>6.0</av>
  <al>5.4</al>
  <nr>467</nr>
</wpt>
<wpt lat="51.89762654" lon="4.54890185">
  <tgps>2015-09-29T15:23:44.999</tgps>
  <tv>2015-09-29T15:23:53.933</tv>
  <c>128.0</c>
  <s>13.4</s>
  <ah>5.0</ah>
  <av>4.0</av>
  <al>0.6</al>
  <nr>468</nr>
</wpt>
<wpt lat="51.89745789" lon="4.54927853">
  <tgps>2015-09-29T15:23:47.999</tgps>
  <tv>2015-09-29T15:23:53.965</tv>
  <c>125.9</c>
  <s>8.6</s>
  <ah>5.0</ah>
  <av>6.0</av>
  <al>5.4</al>
  <nr>469</nr>
</wpt>
<wpt lat="51.89755810" lon="4.54904694">
  <tgps>2015-09-29T15:23:45.999</tgps>
  <tv>2015-09-29T15:24:02.016</tv>
  <c>126.9</c>
  <s>12.5</s>
  <ah>5.0</ah>
  <av>4.0</av>
  <al>0.2</al>
  <nr>470</nr>
</wpt>
<wpt lat="51.89800163" lon="4.54815385">
  <tgps>2015-09-29T15:23:47.731</tgps>
  <tv>2015-09-29T15:24:02.068</tv>
  <c>132.9</c>
  <s>12.8</s>
  <ah>5.0</ah>
  <av>4.0</av>
  <al>2.3</al>
  <nr>471</nr>
</wpt>
<wpt lat="51.89800163" lon="4.54815385">
  <tgps>2015-09-29T15:23:47.999</tgps>
  <tv>2015-09-29T15:24:05.832</tv>
  <c>132.9</c>
  <s>12.8</s>
  <ah>5.0</ah>
  <av>4.0</av>
  <al>2.3</al>
  <nr>472</nr>
</wpt>
<wpt lat="51.89749909" lon="4.54917803">
  <tgps>2015-09-29T15:23:46.999</tgps>
  <tv>2015-09-29T15:24:05.842</tv>
  <c>126.9</c>
  <s>10.8</s>
  <ah>5.0</ah>
  <av>4.0</av>
  <al>8.4</al>
  <nr>473</nr>
</wpt>
<wpt lat="51.89800163" lon="4.54815385">
  <tgps>2015-09-29T15:23:47.999</tgps>
  <tv>2015-09-29T15:24:06.289</tv>
  <c>132.9</c>
  <s>12.8</s>
  <ah>5.0</ah>
  <av>4.0</av>
  <al>2.3</al>
  <nr>474</nr>
</wpt>
<wpt lat="51.89745789" lon="4.54927853">
  <tgps>2015-09-29T15:23:47.999</tgps>
  <tv>2015-09-29T15:24:06.307</tv>
  <c>125.9</c>
  <s>8.6</s>
  <ah>5.0</ah>
  <av>6.0</av>
  <al>5.4</al>
  <nr>475</nr>
</wpt>
<wpt lat="51.89732735" lon="4.54958171">
  <tgps>2015-09-29T15:23:52.999</tgps>
  <tv>2015-09-29T15:24:06.339</tv>
  <c>121.6</c>
  <s>2.9</s>
  <ah>5.0</ah>
  <av>4.0</av>
  <al>-2.3</al>
  <nr>476</nr>
</wpt>
  </gpx>

В этом файле проблема возникла пару раз, но, похоже, находится в двух проблемных местах. После этого никаких проблем больше, кроме как пользователь убил приложение после некоторого KM.

→ Я пробовал:

  • Настройка ActivityType на CLActivityTypeAutomotiveNavigation
  • Настройка pauseLocationUpdatesAuto - YES
  • Желаемая эффективность для kCLLocationAccuracyBestForNavigation
  • Перемещение всего в основной поток и не изменяйте нити.
  • Расширение ведения журнала, чтобы узнать, содержит ли мой массив Location более одного объекта location, но это не так.
  • Регистрация местоположения HASH и Pointer, но все они по-разному.

→ Я узнал:

  • Не устанавливайте pausesLocationUpdatesAutomatically в FALSE. По умолчанию TRUE и для навигационного приложения он должен оставаться TRUE. Вы получите гораздо больше мест, если вы установите для этого значение ЛОЖЬ, места, которые не отличаются от других.
  • Устанавливать свойства в CLLocationManager один раз, когда вы меняете свойства на часто странные, и больше делегаций прибудет в делегат. В примере: если вы установите эти свойства в методе делегирования didUpdateLocation, вы получите 4 местоположения на той же миллисекунде.

    _manager.desiredAccuracy = kCLLocationAccuracyBestForNavigation; _manager.activityType = CLActivityTypeAutomotiveNavigation;

4b9b3361

Ответ 1

Я, наконец, понял это. Следующие ошибки:

  • У меня был еще один CLLocationManager в моем проекте, который запускал этот код каждую секунду:

    [locationManager startUpdatingLocation]; if ([locationManager отвечаетToSelector: @selector (allowBackgroundLocationUpdates)]) {   locationManager.allowsBackgroundLocationUpdates = TRUE; }

  • Я устанавливал свойства в CLLocationManager несколько раз. Когда вы слишком часто меняете свойства, на делегата приедут странные и дополнительные места. Например: если вы установите эти свойства в методе делегата didUpdateLocation, вы получите 4 местоположения на той же миллисекунде.

    _manager.desiredAccuracy = kCLLocationAccuracyBestForNavigation,
    _manager.activityType = CLActivityTypeAutomotiveNavigation;

  • Мы выяснили, что один тестовый пользователь сломал свой GPS-чип или что-то в этом роде. По какой-то причине его устройство иногда сообщало о неправильных координатах GPS. Убедитесь, что как минимум два пользователя сообщают об ошибке! В какой-то момент, когда мы фиксировали точки 1 и 2, этот пользователь имел эту ошибку, но все остальные пользователи были в порядке. Позже он также сообщил об ошибках в версии магазина (которая была построена с помощью iOS8).

  • Не отключайте pausesLocationUpdatesAutomatically (установите значение false). По умолчанию он включен и для навигационного приложения он должен оставаться включенным. Когда вы отключите это, вы получите гораздо больше мест, не отличающихся от других.

Итак, есть большая разница между iOS8 и iOS9. Если вы испытываете странные местоположения, проверьте эти пункты выше.

Ответ 2

Я не уверен, что это целая история, но после двухдневного расследования, что я думаю, происходит.

Менеджер locationManager будет делать что-то вроде того, что вы описываете (дублированные местоположения), если он воссоздан в любой момент. Это имеет смысл в некотором смысле, если вы создадите новый locationManager или повторно инициализируете свой текущий, он получит другой набор вашего текущего местоположения. Я смог получить аналогичные результаты, создав игрушечное приложение, которое обновляло locationManager каждый раз, когда была нажата кнопка, и регулярно нажимал кнопку.

Если диспетчер location потерял сетевое соединение (сигнал ячейки и Wi-Fi), он не смог передать данные позиции. Короче говоря, я считаю, что locationManager уничтожается всякий раз, когда устройство теряет интернет-соединение и когда оно воссоздает моменты позже, используя старые координаты. Почему это кеширование этих ценностей и то, как сигнатуры времени являются неправильными, все еще остается загадкой для меня.

Наконец, я создал игрушечное приложение, которое использует тот же код, который вы используете для инициализации locationManager (минус код, используемый для хранения предыдущих 200 местоположений). Все, что он делает, помещает булавку на карту каждый раз, когда получает ваше местоположение. Я ездил с ним и видел несовместимые места размещения, но не совсем то, что вы описали. Тот факт, что я видел странное поведение, заставляет меня предположить, что это ошибка с iOS 9, а не с вашим кодом.

На данный момент, учитывая все остальные ошибки, обнаруженные в iOS 9, я считаю справедливым, чтобы помешать этому до Apple.

Ответ 3

не может добавлять комментарий..

все еще работает нормально, установив distanceFilter

Я следую вашему ответу: _locationManager.activityType = CLActivityTypeFitness; _locationManager.pausesLocationUpdatesAutomatically = YES;

также найдите некоторые проводные местоположения, такие как: введите описание изображения здесь

сначала полностью равно третьему, почему это...