Я уже зарегистрировал радар, но мне хотелось узнать, есть ли у кого-то еще такая проблема.
Похоже, что существенные изменения местоположения (SLC) ведут себя по-разному на iOS 11, но только на приложениях, которые построены на Xcode 9. Кажется, что SLC работают намного хуже и задерживаются по сравнению с iOS 10. Я могу запомните это с помощью данных из нескольких устройств и легко воспроизводимого эксперимента. Я хотел попытаться сохранить этот пост коротким, поэтому, если кто-то хочет больше данных или инструкций о том, как воспроизвести проблему более подробно, я с удовольствием расскажу, как я сделал все это.
Используя это минималистичное приложение кэширования SLC: https://github.com/Root-App/root-ios-slc-tester Мне удалось получить данные с устройств iOS 10 и iOS 11.
Проблема существует ТОЛЬКО на устройствах iOS 11, где приложение, получающее SLC, было построено на Xcode 9. Просто чтобы убедиться, что это понятно:
- Устройство iOS 10 + приложение, построенное на Xcode 9: работает как раньше
- Устройство iOS 10 + приложение, построенное на Xcode 8: работает как раньше
- Устройство iOS 11 + приложение, построенное на Xcode 8: работает как раньше
- iOS 11 device + приложение, построенное на Xcode 9: проблема существует
В большинстве случаев (но не всегда) SLC на сборке iOS 11 + Xcode 9 происходят значительно позже SLC на устройствах управления (iOS 10).
Сравнивая файлы журналов из вышеуказанного приложения, устройства iOS 10 получают SLC более чем за 2 минуты до устройств iOS 11. Иногда за 10-15 минут!
Примеры сокращенных данных, где каждая строка представляет собой другое отключение, и представляет собой первый случай, когда SLC был записан для этого отключения (в HH: mm: ss):
iOS 10 | iOS 11
-------------------
20:41:08 | 20:44:45
07:21:25 | 07:27:48
18:54:57 | 19:07:36
07:48:17 | 07:51:03
17:29:44 | 17:38:18
Промежутки между тем, когда был SLC в iOS 10 и iOS 11, выглядят неприемлемо разными.
Кто-нибудь еще видит это ухудшенное поведение SLC?