在Firefox桌面和Firefox Android之间传输/同步WebExtension数据

时间:2018-12-11 18:03:34

标签: firefox synchronization firefox-webextensions firefox-android

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

因此要在台式机和Android上使用,该扩展程序都需要传输/同步一些数据(可以字符串化)。

我正在尝试为用户提供一种尽可能简单的方法,而无需使用外部服务。

对此的理想解决方案(对用户完全透明)是使用storage.sync,但是尽管它确实在设备之间进行同步,但是(尚未)在普通Firefox(台式机)和Firefox之间进行同步。 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. 将数据保存到第三方服务器/从第三方服务器检索数据(这意味着我必须创建一个服务器,并让用户在该服务器上创建帐户)。

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

1 个答案:

答案 0 :(得分: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来说这是无用的流程,因为问题描述了应该经常进行同步的流程):
    • 打开一个带有Web扩展名或数据URL的标签,并在查询参数中包含同步数据。在此选项卡中,显示一些文本,要求用户在另一台设备上打开Firefox。记录您使用sessionStorage在本地打开此选项卡的记录。
    • 当在另一台设备上打开选项卡并且缺少sessionStorage时,请从查询参数获取同步数据,并显示一条消息,表明数据已同步,并且两个选项卡现在都可以关闭。
  • 表格信息:no API yet
  • 密码:no API yet

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

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