Google-Fit на iphone: сегментированные данные

Я пытаюсь запросить с помощью API Fit rest сегментированные данные с iphone, на котором установлен GoogleFit и настроена синхронизация между здоровьем Apple и googelfit.

На мой телефон Android я получаю данные, как и ожидалось, с помощью этого POST:

        "aggregateBy": [
    {
      "dataSourceId": "derived:com.google.step_count.delta:com.google.android.gms:estimated_steps",
      "dataTypeName": "com.google.step_count.delta"
    },
    {
      "dataSourceId": "derived:com.google.distance.delta:com.google.android.gms:merge_distance_delta",
      "dataTypeName": "com.google.distance.delta"
    }
    {
      "dataSourceId": "derived:com.google.active_minutes:com.google.android.gms:merge_active_minutes",
      "dataTypeName": "com.google.active_minutes"
    }
  ],
  "endTimeMillis": 1643325227000,
  "startTimeMillis": 1640991600000,
  "bucketByActivitySegment": {
    "minDurationMillis": 600000
  }

}

Но от пользователя iphone это возвращает пустое ведро.

Я проверил доступные источники данных для пользователя Apple. Я сделал несколько «проб и ошибок» для dataSourceId, подключенных к «active_minutes». Особенно

  1. производные:com.google.active_minutes:com.google.ios.fit:appleinc.:iphone:1148c16f:top_level
  2. производные:com.google.active_minutes:com.google.ios.fit:appleinc.:watch:f40f5c4a:top_level

Пробы и ошибки не проводились с агрегатным сообщением с одним из вышеуказанных источников, поэтому расстояние и количество шагов не использовались. Два приведенных выше dataSourceId были получены из «запроса списка сообщений» для доступных источников данных, выполненного пользователем iphone со следующими областями:

      fitness.activity.read
fitness.location.read

Никакие сегментированные данные не возвращаются ни из dataSourceIds (пустое ведро также). Содержимое приложения пользователя Apple указывает на то, что где-то должны быть сегментированные данные, см. ссылку на снимок экрана.

(Редактировать: также пытался установить «minDurationMillis: 0»)

При этом такие запросы, как:

      {
  "aggregateBy": [
    {
      "dataSourceId": "derived:com.google.distance.delta:com.google.android.gms:merge_distance_delta",
      "dataTypeName": "com.google.distance.delta"
    }
  ],
  "endTimeMillis": 1643325227000,
  "startTimeMillis": 1640991600000,
  "bucketByTime": {
    "durationMillis": 2333627000
  }
}

возвращает данные от пользователя Apple. Но меня очень интересуют сегменты (минимум 10 минут)

Итак, вопрос: у кого-нибудь есть опыт получения сегментированных данных от пользователей Apple-Googlefit?

Рис.: скриншот iphone

1 ответ

Обновлять.

Поскольку (**) (см. первый пост) действительно возвращал данные с айфонов, я выбрал 1-часовое решение «bucketByTime» как для андроидов, так и для айфонов.

Если важны сегменты, можно анализировать/фильтровать данные "bucketByTime" по сегментам. Однако тип активности не получается с помощью этого POST.

Возникли новые проблемы:

Как уже упоминалось, (**) POST возвращает данные. Особенно когда:

"startTimeMillis" = [начало 2022 года]

а также

"endTimeMillis" = [сейчас].

Исполнитель cron настроен так, что (**) повторяется один раз в день, где:

"startTimeMillis" = ["предыдущий сейчас"]

а также

"endTimeMillis" = [сейчас].

Однако это не возвращает никаких данных от пользователей iphone. Чтобы уточнить, с айфонов не поступают ежедневные данные.

Некоторые предварительно сформированные проверки:

  1. Пользователи iphone видят данные как обычно во внешнем интерфейсе приложения GoogleFit (см. ссылку на скриншот в первом посте).
  2. Попытка (**) с каждым доступным «dataStreamId» и «name» (возвращается из «запроса списка» для доступных источников данных) — ничего не возвращается.
  3. Попросил пользователей iphone проверить разрешения GoogleFit в соответствии с этой страницей поддержки . (Придется поверить им на слово, что он настроен правильно)

Важный вывод:

Для одного пользователя iphone иногда возвращаются «неполные»[2] данные. Я полагаю, что эти данные записаны его яблочными часами. Я попросил его надеть часы сегодня.

Вы бы поняли, когда спрашивали, например. merge _distance_delta приложение объединяет доступные источники в аккуратную временную шкалу. Вопросы на этом уровне не доступны публично (насколько мне известно).

[2] Сумма не соответствует (близко) к результатам внешнего интерфейса GoogleFiT (как это происходит для пользователей Android).

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