Периодические и поздние события существенного изменения местоположения в приложениях, созданных с Xcode 9 для устройств iOS 11

Я уже подал радар по этому вопросу, но я хотел посмотреть, есть ли у кого-то еще эта проблема.

Похоже, что значительные изменения местоположения (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 + приложение, построенное на Xcode 9: проблема существует

Большую часть времени (но не всегда) SLC на сборке iOS 11 + Xcode 9 происходят значительно позже, чем SLC на управляющих (iOS 10) устройствах.

Сравнивая файлы журнала из вышеупомянутого приложения, устройства iOS 10 получают SLC более чем за 2 минуты до устройств iOS 11. Иногда за 10-15 минут до!

Пример сокращенных данных, где каждая строка представляет собой отдельное отключение и представляет первый раз, когда SLC был записан для этого отключения (в формате ЧЧ: мм: сс):

 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?

1 ответ

Если вы используете только доступ к данным "Во время использования", то, насколько я понимаю, для вас ничего не изменится.

Если вы используете доступ "Всегда", но не предоставили запасной вариант "При использовании", как это должно быть.

Ниже информация может быть полезна для iOS 11,

Как объясняет Брэд Дженсен в своем выступлении на WWDC, Apple решила, что принуждать пользователя предоставлять доступ к местоположению приложения "Всегда" - это плохой пользовательский опыт:

Теперь, вторая причина, по которой мы думаем, что многие разработчики предпочитают требовать авторизацию Always, они просто пытаются предоставить своим пользователям наилучший возможный опыт (…), но это создает очень плохой пользовательский опыт для пользователей, которые не хотят предоставить приложение всегда авторизацию. Они вынуждены выбирать между предоставлением приложению Always, что больше, чем хотелось бы в этом примере, или предоставлением Never, что означает, что они не могут воспользоваться ни одной из функций приложения, основанных на определении местоположения. И последний вариант - предоставить его Always, а затем отозвать эту авторизацию после того, как они закончили работу с приложением. В любом случае, пользователь не замечательно проводит время с этим приложением.

Для более подробной информации вы можете прочитать ниже блог, это может быть более полезным,

https://mackuba.eu/2017/07/13/changes-to-location-tracking-in-ios-11/

Другие вопросы по тегам