【问题标题】:Transfer/synchronize WebExtension data between Firefox Desktop and Firefox Android在 Firefox Desktop 和 Firefox Android 之间传输/同步 WebExtension 数据
【发布时间】:2020-03-28 18:28:51
【问题描述】:

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

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

我正在尝试为用户找到一种方法,使其尽可能简单,而不使用外部服务。

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

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

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

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

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

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

【问题讨论】:

  • 好问题,但我认为您已经用尽了所有选项。不过,也许有人知道一些聪明的把戏。

标签: firefox synchronization firefox-addon-webextensions firefox-android


【解决方案1】:

根据this support document,以下数据与 Android 同步:书签、历史记录、打开的标签页、表单信息和密码。

This chart shows which web extension APIs are supported on Android:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2013-01-05
    相关资源
    最近更新 更多