我正在制作一个WebExtension(用于Firefox(,为用户跟踪列表。用户可以添加/删除列表中的元素,或者将元素从一个列表切换到另一个列表,这意味着扩展需要使用最新版本的列表。
因此,要在桌面和Android上使用,扩展需要传输/同步一些数据(可以字符串化(。
我试图为用户找到一种尽可能简单的方法,而不使用外部服务。
理想的解决方案(对用户来说完全透明(是使用storage.sync
,但尽管它确实在设备之间同步,但它(尚未(在普通的Firefox(桌面(和Firefox for 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)或者。
这给我留下了两个我可以看到的解决方案:
-
让用户将数据保存到本地文件/从本地文件检索数据,这意味着他们需要将文件复制到其他设备(这就是我现在所拥有的(。
-
将数据保存到第三方服务器/从第三方server检索数据(这意味着我必须创建一个服务器,并让用户在上面创建一个帐户(。
我还缺少其他解决方案吗?
根据此支持文档,以下数据将从/同步到Android:书签、历史记录、打开的选项卡、表单信息和密码。
此图表显示了Android上支持哪些web扩展API:
- 书签:Android上还没有API
- 历史:Android上还没有API
- 选项卡:支持API。应该偶尔或一次性同步的扩展可以实现手动过程(这对OP来说是一个无用的流程,因为问题描述了同步应该经常发生的流程(:
- 打开具有web扩展名或数据URL的选项卡,查询参数中包含同步数据。在此选项卡中,显示一些文本,要求用户在另一台设备上打开Firefox。保存您使用会话存储在本地打开此选项卡的记录
- 当该选项卡在另一台设备上打开并且会话存储丢失时,请从查询参数中获取同步数据,并显示一条消息,说明数据已同步,现在可以关闭这两个选项卡
- 表单信息:尚未提供API
- 密码:还没有API
此列表中未提及,但也同步了BrowserSettings
。它允许覆盖一些同步的字段(homepageOverride
、newTabPageOverride
(,但这些字段必须在manifest.json中定义,因此它们不能是动态的。此外,它可能会干扰正常功能。
总之:等待浏览器支持或选择服务器解决方案。