Передача / синхронизация данных WebExtension между Firefox Desktop и Firefox Android
Я делаю WebExtension (для Firefox), который отслеживает списки для пользователя. Пользователь может добавлять / удалять элементы из списка или переключать элементы из одного списка в другой, что означает, что расширению требуется самая последняя версия списков для работы.
Таким образом, чтобы использовать его как на настольном компьютере, так и на Android, расширение должно передавать / синхронизировать некоторые данные (которые могут быть преобразованы в строку).
Я пытаюсь найти способ для пользователя сделать это как можно проще, без использования внешних сервисов.
Идеальным решением для этого (полностью прозрачным для пользователя) было бы использование storage.sync
, но хотя он и синхронизируется между устройствами, он (пока) не синхронизируется между обычным Firefox (для ПК) и Firefox для Android (реализация отслеживается по адресу https://bugzilla.mozilla.org/show_bug.cgi?id=1316442).
Другое решение было бы использовать bookmarks
API, но он не поддерживается Firefox для Android ( https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/bookmarks).
Это оставляет мне два решения, которые я вижу:
Разрешение пользователю сохранять / извлекать данные в / из локального файла, а это значит, что ему нужно скопировать файл на другое устройство (это то, что я сейчас имею в виду).
Сохранение / извлечение данных на / со стороннего сервера (что означает, что мне нужно будет создать сервер и сделать так, чтобы пользователь создал на нем учетную запись).
Есть ли другое решение, которое я пропускаю?
0 ответов
Согласно этому документу поддержки, следующие данные синхронизируются с / на Android: закладки, история, открытые вкладки, информация о формах и пароли.
На этой диаграмме показано, какие API-интерфейсы веб-расширений поддерживаются на Android:
- Закладки: на Android пока нет API
- История: на Android пока нет API
- Вкладки: поддерживается API. Расширения, которые должны время от времени или разовая синхронизация, могут реализовывать ручной процесс (это бесполезный поток для OP, поскольку вопрос описывает поток, в котором синхронизация должна происходить часто):
- Откройте вкладку с веб-расширением или URL-адресом данных с данными синхронизации в параметрах запроса. На этой вкладке отобразите текст, предлагающий пользователю открыть Firefox на другом устройстве. Запишите, что вы открывали эту вкладку локально, используя sessionStorage.
- Когда вкладка открыта на другом устройстве и отсутствует sessionStorage, получите данные синхронизации из параметров запроса и отобразите сообщение о том, что данные были синхронизированы и что теперь обе вкладки можно закрыть.
- Информация о форме: пока нет API
- Пароли: API пока нет
Не упоминается в этом списке, но также синхронизируется BrowserSettings
. Он позволяет перезаписывать некоторые синхронизируемые поля (homepageOverride
, newTabPageOverride
), но эти поля должны быть определены в manifest.json, поэтому они не могут быть динамическими. Кроме того, это может помешать нормальному функционированию.
В заключение: дождитесь поддержки браузера или выберите серверное решение.