Передача / синхронизация данных 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).

Это оставляет мне два решения, которые я вижу:

  1. Разрешение пользователю сохранять / извлекать данные в / из локального файла, а это значит, что ему нужно скопировать файл на другое устройство (это то, что я сейчас имею в виду).

  2. Сохранение / извлечение данных на / со стороннего сервера (что означает, что мне нужно будет создать сервер и сделать так, чтобы пользователь создал на нем учетную запись).

Есть ли другое решение, которое я пропускаю?

0 ответов

Согласно этому документу поддержки, следующие данные синхронизируются с / на Android: закладки, история, открытые вкладки, информация о формах и пароли.

На этой диаграмме показано, какие API-интерфейсы веб-расширений поддерживаются на Android:

  • Закладки: на Android пока нет API
  • История: на Android пока нет API
  • Вкладки: поддерживается API. Расширения, которые должны время от времени или разовая синхронизация, могут реализовывать ручной процесс (это бесполезный поток для OP, поскольку вопрос описывает поток, в котором синхронизация должна происходить часто):
    • Откройте вкладку с веб-расширением или URL-адресом данных с данными синхронизации в параметрах запроса. На этой вкладке отобразите текст, предлагающий пользователю открыть Firefox на другом устройстве. Запишите, что вы открывали эту вкладку локально, используя sessionStorage.
    • Когда вкладка открыта на другом устройстве и отсутствует sessionStorage, получите данные синхронизации из параметров запроса и отобразите сообщение о том, что данные были синхронизированы и что теперь обе вкладки можно закрыть.
  • Информация о форме: пока нет API
  • Пароли: API пока нет

Не упоминается в этом списке, но также синхронизируется BrowserSettings. Он позволяет перезаписывать некоторые синхронизируемые поля (homepageOverride, newTabPageOverride), но эти поля должны быть определены в manifest.json, поэтому они не могут быть динамическими. Кроме того, это может помешать нормальному функционированию.

В заключение: дождитесь поддержки браузера или выберите серверное решение.

Другие вопросы по тегам