如何集成 Firefox Sync?

How to integrate Firefox Sync?

提问人:Felix Kling 提问时间:11/14/2010 更新时间:7/20/2015 访问量:1113

问:

Firefox 4 即将推出(好吧,明年;)),并且有一个 Firefox 插件可以将您的书签等与 Firefox 3 同步。

我想知道是否有人有全面的、最新的教程来将 Firefox Sync 集成到您自己的插件中?或者对此有任何想法?

我主要关注了这个官方的“教程”这篇博文,但信息似乎有点过时了。
例如,不再调用对象,但首选项变为 .我玩了一下所有提到的选项,但它似乎不起作用(而且我的插件没有显示在列表中,您可以在其中选择要同步的内容)。
WeaveEnginesweave.engines.services.sync.engines.

我假设 and 类很好,主要问题是注册引擎......TrackerStore

同步 firefox-addon

评论


答:

4赞 Philipp von Weitershausen 11/17/2010 #1

您提到的 ClientAPI 教程绝对是要走的路。我最近更新了它,所以如果有什么东西不起作用,请告诉我们,以便我可以在文档中修复它。弗拉基米尔的博文肯定很旧,包含一些过时的信息。我们还将在即将到来的 beta 版本中对 API 的某些部分进行更改,因此请为一些变化做好准备......

命名空间仍然是从 UI 代码访问同步相关 API 的规范方式。它公开了诸如 和 之类的组件。您可以通过 导入它。但是,如果要实现自己的引擎,则必须导入实际的基础模块(所有模块均在 ClientAPI 教程中列出)。本教程还介绍了如何注册自定义引擎实现。但是,一旦注册,它不会自动显示在首选项UI中。我建议构建自己的 UI,以翻转附加组件首选项中的首选项。WeaveWeave.ServiceWeave.EnginesComponents.utils.import("resource://services-sync/main.js")services.sync.engine.YOURENGINE

出于好奇,您尝试同步哪种数据?

评论

0赞 Felix Kling 11/17/2010
非常感谢您的回答,我会再试一次。我只是对给出的不同信息感到困惑。我还需要添加我的引擎吗(就像最后写的一样)?我创建了 FloatNotes 插件,它可以让您在网站上创建一些便签。我想同步这些笔记,所以它基本上只是用户输入的文本和一些元数据位置等。也许这不是问的正确地方,但我想知道同步过程是在后台线程中运行还是类似的东西?因为我的数据存储在SQLite数据库中services.sync.registerEngines
0赞 Felix Kling 11/17/2010
对于某些方法(如),我必须返回每条记录,并且无法进行异步调用,因为该方法不接受回调。所以我想知道它是否对性能有任何严重影响?再次非常感谢!getAllIDs()
0赞 Philipp von Weitershausen 11/26/2010
是的,将引擎插入 Weave 对象并将名称添加到 services.sync.registerEngines 绝对是注册引擎的好方法。
1赞 Philipp von Weitershausen 11/26/2010
是的,不幸的是,所有 Sync的 API 都是同步的。这是我们最终想要解决的问题,但它不太可能发生在 Firefox 4 上。我们在内部使用 Sync.js 工具,使某些异步进程看起来是同步的。你只需要导入 resource://services-sync/ext/Sync.js 然后用 Sync(func) 包装一个接受回调的函数。这将返回一个同步外观的函数。
0赞 Felix Kling 12/9/2010
好的,我让它工作了,谢谢你的帮助!(尤其是对于工具)。顺便说一句。我认为在教程中值得一提的是,如何以及何时将记录标记为已删除(弄清楚并不难,但提及它也不错)。另一点是我不知道何时安装发动机等。我注意到,当我在事件处理程序中执行此操作时,有时会迟到......Syncload