Healthkit: установите «enableBackgroundDelivery», но iOS не запускает приложение, когда на некоторых устройствах появляются новые данные о работоспособности для пользователя - PullRequest
0 голосов
/ 12 сентября 2018

Я работаю с HealthKit SDK над моим приложением (это связано со здоровьем). Я настроил «enableBackgroundDelivery», ожидая, что iOS разбудит мое приложение, когда появятся новые данные о работоспособности пользователя, чтобы я мог начать запрашивать данные о работоспособности пользователя. iOS запускает приложение, когда появляются новые данные о работоспособности, и код работает должным образом на моем устройстве, а также на устройстве пользователя, но на некоторых устройствах iOS вообще не запускает приложение.

Если есть проблема с моим кодом, то он не должен работать на любом устройстве, но он работает с моим устройством и на устройствах пользователей, поэтому я думаю, что у меня очень мало проблем с моим кодом. Когда я искал другие возможности для этой проблемы, я обнаружил следующие причины, по которым iOS не запускает приложение, когда на некоторых устройствах появляются новые данные о работоспособности пользователя.

  1. Отслеживание фитнеса и здоровье отключены в Настройки -> Конфиденциальность -> Движение и фитнес. А Калибровка движения и Расстояние отключены в Настройки -> Конфиденциальность -> Службы определения местоположения -> Системные услуги. В этом случае само приложение «Здоровье» по умолчанию не может получить данные о состоянии здоровья, поэтому оно не разбудит мое приложение.

  2. Фоновое обновление приложения отключено для моего приложения. В этом случае, когда приложение свернуто или принудительно закрыто, HealthKit не активирует мое приложение, поскольку пользовательские настройки таковы.

  3. iOS намеренно не будит мое приложение или какое-либо приложение часто по многим причинам, таким как экономия батареи пользовательского устройства, или если пользователь активно использует так много приложений, то iOS отдает приоритет этим приложениям и расписанию iOS услуги нашего приложения в будущем. Внутренние алгоритмы iOS учитывают производительность и оптимизацию устройства и распределяют сервисы для приложений, установленных на устройстве, это означает, что наш код будет выполняться только тогда, когда iOS решит, что он будет выполнен. Это может быть причиной того, что я не вижу данные о состоянии здоровья некоторых пользователей, но как долго? iOS должно разбудить мое приложение хотя бы через один или два дня, но это не так.


Для пользователей, с которыми я сталкиваюсь, указанные выше параметры # 1 и # 2 установлены правильно. Если причина № 3, iOS должна разбудить мое приложение по крайней мере через один или два дня, но это не пробуждение приложения, я общался с некоторыми пользователями, и у них есть некоторые данные в стандартном приложении iOS «Здоровье» .


Кто-нибудь сталкивался с такой проблемой? Кто-нибудь имел представление о каких-либо других причинах того, почему iOS не разбудил мое приложение, кроме указанных выше причин (с точки зрения кода и настроек iOS)?

Мой код выглядит примерно так: https://gist.github.com/phatblat/654ab2b3a135edf905f4a854fdb2d7c8

Спасибо.

...