БЕКАП НАГАДУВАНЬ ПРО ЛІКИ

Автоматичний бекап нагадувань — графік лікування не зникне

Як застосунок mojApteczka захищає графіки дозування під час зміни телефона, перевстановлення й оновлення — синхронізація з хмарою працює у фоні.

Твоїй мамі 74 роки, і вона приймає сім ліків щодня — о 8:00, 13:00, 20:00 і 22:00. Ти витратив два вечори, щоб налаштувати її телефон: назви, дози, години, нагадування, які дзвонять точно вчасно. Уже пів року все працює.

У суботу, зовсім несподівано, розряджений телефон не хоче вмикатися. Ти йдеш у салон, купуєш нову модель, робиш restore з iCloud. Відкриваєш mojApteczka — порожньо. Жодного препарату, жодного нагадування.

Це сценарій, який у квітні 2026 року вже не повинен мати права на існування. І в mojApteczka його немає — завдяки автоматичному бекапу нагадувань у хмару.

Проблема, яка на перший погляд не виглядає проблемою

Нагадування про ліки в застосунках для здоров’я зазвичай сприймають як «налаштування» — локальну конфігурацію телефона, схожу на будильник. Поки телефон працює, усе працює. Поки в тебе та сама версія застосунку, усе працює.

Проблема з’являється в моменти переходу:

  • Зміна телефона — restore з iCloud не завжди переносить усі дані застосунків. Особливо бази SwiftData / Core Data іноді не перезапускаються коректно після міграції
  • Перевстановлення застосунку — на iOS видалення застосунку очищає його локальну базу, але не завжди очищає заплановані сповіщення iOS (це окремий шар системи)
  • Оновлення до нової версії — інколи міграція схеми бази проходить не гладко, і застосунок стартує з чистим станом
  • TestFlight і бета-версії — кожна нова бета-версія за певних умов може очистити локальну базу, а заплановані сповіщення залишаються в системі

У кожному з цих випадків виникає парадокс: нагадування дзвонять, але застосунок про них не знає. Це класичний симптом «привидів нагадувань» — інженерної метафори для сигналів, запланованих в iOS, які вже не мають відповідника в локальній базі застосунку.

Сигнал о 8:00: «Бісопролол». У застосунку: порожньо. Ти не можеш вимкнути нагадування, бо не бачиш його. Не можеш змінити час. Ти опиняєшся в стані напівдовіри до власного телефона.

Двоетапний захист: очищення і синхронізація

mojApteczka розв’язує цю проблему двома незалежними механізмами, які працюють разом під час кожного запуску застосунку. Обидва невидимі для користувача, обидва займають мілісекунди.

Етап 1 — локальне очищення

Застосунок запитує iOS: «Які в тебе є заплановані сповіщення від mojApteczka?» — і порівнює відповідь зі своєю локальною базою нагадувань. Кожне сповіщення, яке не має відповідника в базі, автоматично видаляється із системи.

Це прибирає привидів. Якщо вони залишилися після попередньої версії, після перевстановлення, після невдалої міграції — вони зникають у момент, коли ти відкриваєш застосунок. Без налаштувань, без запитань, без повідомлень.

Етап 2 — синхронізація з хмарою

Кожне нагадування, яке ти додаєш, редагуєш або видаляєш, у фоні надсилається на сервер. Коли ти знову відкриваєш застосунок (на тому самому телефоні або на зовсім новому), застосунок робить три речі одночасно:

  • Завантажує стан із хмари й порівнює його з локальною базою
  • Відтворює локально ті нагадування, які є в хмарі, але відсутні локально
  • Надсилає в хмару ті, які є локально, але відсутні в хмарі (наприклад, створені офлайн)

У разі конфлікту (те саме нагадування, різні дані з обох боків) перемагає новіша зміна. Це просте правило «last-write-wins», але на практиці його достатньо, бо конфлікти виникають лише у виняткових ситуаціях (наприклад, паралельне редагування офлайн із кількох пристроїв).

Після завершення синхронізації застосунок автоматично переплановує сповіщення iOS, щоб кожне нагадування в базі мало своє відповідне сповіщення в системі. З погляду користувача — нічого не відбувається. Ти відкриваєш застосунок, бачиш свої нагадування, дзвонить те, що має дзвонити.

Що саме входить у бекап?

Синхронізується не кожен аспект застосунку — лише те, що потрібно для відтворення графіка. Конкретно:

  • Назва препарату та ідентифікатор запису
  • Призначена аптечка і підопічний (якщо ти керуєш більш ніж однією аптечкою, наприклад як опікун)
  • Тип повторення — щодня, вибрані дні тижня, кожні N днів, одноразово
  • Години дозування і кількості (з підтримкою дробових доз, наприклад «пів таблетки»)
  • Статус активне / неактивне — щоб після перевстановлення не ввімкнути знову нагадування, які вже були вимкнені
  • Кількість прийнятих доз і можливий ліміт курсової терапії (наприклад, антибіотик на 7 днів, день 5 із 7)

Після синхронізації застосунок має повний стан кожного нагадування й може безпомилково відтворити сповіщення iOS — з тими самими годинами, дозами й контекстом підопічного.

Реальні моменти, коли бекап рятує

Зміна телефона в літньої людини

Ти допомагаєш батькові чи мамі купити новий iPhone, бо стара модель уже не підтримує оновлення iOS. Робиш restore з iCloud, встановлюєш mojApteczka з App Store, входиш у його або її акаунт. Усі сім нагадувань на день — відтворені за кілька секунд. Не потрібно налаштовувати їх із нуля, ти не переплутаєш години й не пропустиш жодного препарату.

Restore після поломки

Телефон упав у воду. Ти купуєш новий, робиш restore. Деякі застосунки переносять дані, інші ні — але mojApteczka відтворює повний графік, бо тримає його в хмарі незалежно від iCloud.

Тестер TestFlight

Ти береш участь у бета-тестуванні нової версії mojApteczka. Кожні кілька днів встановлюєш нову версію. Теоретично кожна з них могла б очистити базу — але хмарний бекап стежить, щоб твій графік пережив кожне оновлення.

Видалення застосунку

Ти випадково натиснув «Видалити застосунок» замість «Прибрати з екрана “Початок”». Встановлюєш mojApteczka назад з App Store. Входиш — усе повертається.

Дитина з телефоном батьків

Дитина скинула налаштування iPhone тата. Налаштування повернулися до заводських, застосунки видалені. Restore з iCloud відновлює застосунки, але нагадування mojApteczka повертаються з хмари — незалежно від якості restore.

Безпека — RODO і технічний захист

Дані нагадувань зберігаються на серверах AWS у регіоні EU (Frankfurt). Це важливо з погляду RODO — дані про твої ліки не залишають Європейський Союз.

Передавання шифрується TLS, дані в стані спокою шифруються алгоритмами стандарту AES-256, якими керує AWS. Кожен запит синхронізації потребує чинного токена Cognito, який спливає через визначений час і поновлюється автоматично — це означає, що дані одного користувача повністю ізольовані від даних інших, навіть на рівні інфраструктури.

Після виходу застосунок вважає сесію завершеною — локальна база й копія в хмарі видаляються разом. Відповідно до RODO, якщо ти хочеш відмовитися від сервісу, вихід з акаунта й видалення застосунку завершують зберігання даних з обох боків.

Бекап та інші функції графіка

Бекап нагадувань — це нижчий шар, ніж інші функції, пов’язані з графіком. Коли ти хочеш швидко передати план лікування опікуну або лікарю, ти й далі користуєшся експортом графіка — це окрема функція, яка працює на тому самому стані. Коли налаштовуєш години й дози, робиш це в розділі нагадувань, де є віджети iOS і команди Siri. Коли керуєш підопічними, використовуєш роль опікуна. Бекап дбає про те, щоб усі ці функції мали свою базу даних, не пошкоджену зміною телефона чи перевстановленням.

Якщо тобі потрібна формальна документація графіка для візиту до лікаря, PDF-звіт для лікаря генерує документ із тієї самої бази — але це окремий процес, незалежний від бекапу.

Як перевірити, що бекап працює?

Найпростіший тест — і водночас найменш помітний — це увійти на другому пристрої (iPhone, iPad) у той самий акаунт mojApteczka. Графіки з’являться там протягом секунди. Немає екрана «синхронізую», немає налаштувань, немає нічого, що треба натискати. Вони просто є.

Для користувачів, яким потрібен повний технічний опис, доступний детальний опис функції автоматичного бекапу нагадувань — з механізмами двоетапної синхронізації, списком синхронізованих полів і деталями захисту.

Доступність

Функція автоматичного бекапу нагадувань працює в мобільному застосунку на iOS. Вона не потребує налаштування — активна з першого входу. Окремої підписки теж немає — бекап входить до стандартного набору функцій.

Завантаж mojApteczka в App Store і будь певен, що графік лікування — твій або твоїх близьких — переживе кожну зміну телефона, кожне оновлення й кожну міграцію даних.


Маєш питання про бекап нагадувань або інші функції mojApteczka? Напиши нам на kontakt@mojapteczka.pl.

Tomasz Szuster
Founder, mojApteczka

Часті запитання

Бекап працює автоматично чи його потрібно запускати?
Бекап працює повністю автоматично. Немає жодної кнопки «синхронізувати» чи налаштувань — під час кожного запуску застосунку стан нагадувань порівнюється з копією в хмарі, а відмінності вирівнюються у фоні. Користувач не бачить екрана завантаження, бо весь процес займає частку секунди.
Що станеться, якщо я зміню телефон?
Під час першого входу на новому пристрої застосунок зчитає стан нагадувань із хмари й відтворить їх локально разом зі сповіщеннями iOS. Графік дозування починає працювати одразу — без ручного переписування годин, ліків чи кількостей.
Чи безпечні дані нагадувань?
Так. Дані зберігаються на серверах AWS у регіоні EU (Frankfurt), шифруються і під час передавання (TLS), і в стані спокою. Кожна синхронізація потребує чинного токена Cognito — дані одного користувача повністю ізольовані від даних інших.
Що таке «привиди нагадувань» і як застосунок із ними працює?
Привиди нагадувань — це інженерна метафора для сповіщень iOS, які залишилися в системі після перевстановлення застосунку, але вже не мають відповідника в базі даних. mojApteczka під час кожного запуску порівнює заплановані сповіщення iOS з локальними записами — кожне сповіщення без мітки в базі автоматично видаляється із системи.
Чи працює бекап після виходу з акаунта?
Після виходу застосунок вважає сесію завершеною — локальна база й копія в хмарі видаляються разом, відповідно до вимог RODO (GDPR). Коли ти знову ввійдеш у той самий акаунт, синхронізація почнеться заново й відтворить лише ті дані, які зберігалися в хмарі до виходу.

Пов'язані статті