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». Особенно
- производные:com.google.active_minutes:com.google.ios.fit:appleinc.:iphone:1148c16f:top_level
- производные: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. Чтобы уточнить, с айфонов не поступают ежедневные данные.
Некоторые предварительно сформированные проверки:
- Пользователи iphone видят данные как обычно во внешнем интерфейсе приложения GoogleFit (см. ссылку на скриншот в первом посте).
- Попытка (**) с каждым доступным «dataStreamId» и «name» (возвращается из «запроса списка» для доступных источников данных) — ничего не возвращается.
- Попросил пользователей iphone проверить разрешения GoogleFit в соответствии с этой страницей поддержки . (Придется поверить им на слово, что он настроен правильно)
Важный вывод:
Для одного пользователя iphone иногда возвращаются «неполные»[2] данные. Я полагаю, что эти данные записаны его яблочными часами. Я попросил его надеть часы сегодня.
Вы бы поняли, когда спрашивали, например. merge _distance_delta приложение объединяет доступные источники в аккуратную временную шкалу. Вопросы на этом уровне не доступны публично (насколько мне известно).
[2] Сумма не соответствует (близко) к результатам внешнего интерфейса GoogleFiT (как это происходит для пользователей Android).