8

我正在制作一个跟踪用户列表的 WebExtension(用于 Firefox)。用户可以从列表中添加/删除元素,或者将元素从一个列表切换到另一个,这意味着扩展需要最新版本的列表才能使用。

因此,要在桌面和 Android 上使用,扩展需要传输/同步一些数据(可以字符串化)。

我试图找到一种方法让用户尽可能简单地做到这一点,而不使用外部服务。

理想的解决方案(对用户完全透明)是使用storage.sync,但尽管它确实在设备之间同步,但它(尚未)在普通 Firefox(桌面)和 Firefox for Android 之间同步(在https:// /bugzilla.mozilla.org/show_bug.cgi?id=1316442)。

另一种解决方案是使用bookmarksAPI,但 Firefox for Android ( https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/bookmarks ) 也不支持它。

这给我留下了两个我可以看到的解决方案:

  1. 让用户在本地文件中保存/检索数据,这意味着他们需要将文件复制到其他设备(这就是我现在所拥有的)。

  2. 将数据保存到第三方服务器/从第三方服务器检索数据(这意味着我必须创建一个服务器,并让用户在其上创建一个帐户)。

我还缺少其他解决方案吗?

4

1 回答 1

1

根据此支持文档,以下数据与 Android 同步:书签、历史记录、打开的选项卡、表单信息和密码。

此图表显示 Android 支持哪些 Web 扩展 API

  • 书签:Android 上还没有 API
  • 历史:Android 上还没有 API
  • 选项卡:支持 API。应该偶尔或一次性同步的扩展可以实现手动过程(这对于 OP 来说是一个无用的流程,因为问题描述了应该经常发生同步的流程):
    • 在查询参数中打开带有网络扩展或数据 URL 的选项卡,其中包含同步数据。在此选项卡中,显示一些文本,要求用户在另一台设备上打开 Firefox。记录您使用 sessionStorage 在本地打开此选项卡。
    • 当在另一台设备上打开选项卡并且缺少 sessionStorage 时,从查询参数中获取同步数据并显示一条消息,表明数据已同步并且现在可以关闭两个选项卡。
  • 表单信息:还没有 API
  • 密码:还没有 API

此列表中未提及,但也同步的是BrowserSettings. 它允许覆盖一些已同步的字段(homepageOverride, newTabPageOverride),但这些字段必须在 manifest.json 中定义,因此它们不能是动态的。此外,它可能会干扰正常功能。

总之:等待浏览器支持或选择服务器解决方案。

于 2020-03-28T10:28:51.130 回答