SugarLife — объяснения

Почему приложение ведёт себя именно так и чем платят настройки

View the Project on GitHub iMironRU/sugarlife-wiki

Запись в «Здоровье»

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

Зачем это может понадобиться

«Здоровье» — общее хранилище, из которого читают другие программы: дневники, приложения врачей, фитнес-трекеры. Положив туда сахар, вы даёте им его увидеть, не пересылая ничего вручную.

Если ничем таким вы не пользуетесь — включать незачем.

Что мы туда пишем

Сахар — только посчитанное значение. Сырое во время прогрева не уходит: см. почему число иногда помечено «сырым».

Инсулин — болюсы. Углеводы — то, что вы записали как еду.

Чего не пишем — и почему именно

Временный базал петли. В единицах его не существует, пока не известна профильная ставка; мы это число считаем сами, и класть свой расчёт в чужое хранилище нечестно.

Длинный инсулин. В «Здоровье» нет отдельного вида для него. Положенный рядом с коротким, он сложится с ним в одно «активное» число — и программа, которая это прочитает, посчитает вашу дозу по неверному фону.

Неподтверждённые дозы. Эхо помпы иногда не подтверждается её же историей. В «Здоровье» осталась бы доза, которой не было.

Отметки о заменах сенсора и канюли — инсулина они не несут, а места для них там нет.

Почему список такой строгий

«Здоровье» хранит записи неизменяемо. Положенное нельзя отредактировать — только удалить и положить заново, руками, по одной.

Поэтому туда уходит лишь то, что мы уже не переиграем. Там, где в Nightscout мы бы исправили запись, здесь исправлять нечем.

Про разрешение

Право на запись мы просим в момент первой отправки, а не при включении. Разрешение, которым не пользуются, со временем вызывает справедливый вопрос «а зачем оно им» — и человек отзывает всё разом, включая нужное.

Почему видно «пишем», но не видно «читаем»

В разделе разрешений про «Здоровье» вы увидите честный ответ про запись — дано или нет — и уклончивый про чтение. Это не наша недоделка.

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

Так что про чтение честно можно сказать только: «спросили; ответит ли система, нам не сообщают». Другие приложения в этом месте показывают то же самое — просто не всегда об этом пишут.

Android

Там своё хранилище — Health Connect. Это не то же самое под другим именем: другие правила и другие разрешения. Будет отдельной строкой, когда сделаем.