Вопрос или проблема
Я нашел различные веб-страницы, обсуждающие то, как Apple удаляет данные из IndexedDb в Safari для сайтов, которые не посещались как минимум 7 дней (если только вы не добавите сайт на рабочий стол). Они утверждают, что это улучшает конфиденциальность.
Я работаю над приложением в Neutralino, которое использует веб-представление операционной системы вместо встраивания браузера, как это делает Electron. Я хочу использовать библиотеку JS для базы данных, такую как Pouch или Loki, которые имеют адаптеры для IndexedDb для сохранения данных. Но это вызывает опасения, что использование IndexedDb приведет к потере данных для пользователей, которые не используют его регулярно.
Если я могу быть уверен, что данные IndexedDb будут сохраняться на Mac, я бы стал его использовать. Это сэкономит мне время на написание адаптера для хранения данных с использованием API файловой системы Neutralino. Это полублокирующая проблема. Я планирую встроить интерфейс “приносите свою базу данных”, который можно будет использовать для создания адаптера для любой базы данных, но это было задумано как функция V2, а не MVP.
Возможность использовать одну из этих баз данных без необходимости писать этот уровень абстракции или адаптер для сохранения помогла бы мне быстрее достичь MVP и начать набирать бета-тестеров.
Я просто не могу найти никаких убедительных подтверждений того, что Apple не уничтожит данные IndexedDb в веб-представлении MacOS, которое использует Neutralino, если пользователь не запустит приложение как минимум раз каждые 7 дней.
Кто-нибудь знает, безопасно ли веб-представление MacOS (или настольное приложение на базе Neutralino для Mac) от правила Apple о 7 днях?
Ответ или решение
Проблема, которую вы подняли, связана с особенностями управления хранилищем в браузерах и веб-просмотрщиках на платформе macOS. Давайте разберёмся с ней подробно.
-
IndexedDB и Safari: Действительно, в Safari существует политика, согласно которой данные IndexedDB могут быть очищены через 7 дней после последнего посещения сайта, если сайт не был добавлен на рабочий стол или не зарегистрирован в качестве "доверенного" в настройках браузера. Это связано с тем, что Apple заботится о конфиденциальности пользователей и стремится минимизировать нежелательное накопление данных.
-
macOS WebView в Neutralino: Neutralino использует встроенные веб-просмотрщики, которые, как правило, работают на основе WebKit (движка, используемого в Safari). Однако поведение хранилища может варьироваться в зависимости от того, как реализован этот механизм в конкретном контексте приложения. Нужно учитывать, что веб-просмотрщик, используемый в приложении Neutralino, может не подчиняться тем же правилам об очищении данных, что и стандартный Safari.
-
Касательно управления данными: Как именно будет работать IndexedDB в macOS WebView Neutralino, зависит от реализации фреймворка и его взаимодействия с системой. В большинстве случаев, если приложение запускается регулярно, вероятность потери данных остается низкой, но гарантировать полное отсутствие очистки данных невозможно.
- Рекомендации:
- Тестирование: Рекомендуется провести тесты с вашим приложением, запуская его через регулярные промежутки времени (например, 7 дней) и проверяя, сохранились ли данные в IndexedDB.
- Резервное копирование данных: Чтобы минимизировать риск потери данных, можете реализовать механизм резервного копирования, который будет сохранять данные в локальное файловое хранилище или в другой формат при каждом запуске приложения или через определенные интервалы времени.
- Информирование пользователей: Добавьте уведомление для пользователей о том, как работает хранение данных и как они могут сохранить свои данные, если они не используют приложение регулярно.
Таким образом, в отсутствие однозначной информации о необходимости разделения хранилищ данных в вашем конкретном варианте реализации Neutralino, будет разумно предпринять дополнительные меры предосторожности. Это позволит вам обеспечить надежность работы приложения и удовлетворенность ваших пользователей.