【问题标题】:How to integrate Firefox Sync?如何集成 Firefox 同步?
【发布时间】:2010-11-14 12:39:28
【问题描述】:

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

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

我主要关注this official "tutorial",也关注this blog post,不过信息好像有点过时了。
例如,该对象不再称为Weave,而是Engines,并且weave.engines. 首选项变为services.sync.engines.。我用所有提到的选项玩了一点,但它似乎不起作用(我的插件没有显示在您可以选择同步内容的列表中)。

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

【问题讨论】:

    标签: firefox synchronization firefox-addon


    【解决方案1】:

    您提到的ClientAPI 教程绝对是必经之路。我最近更新了它,所以如果有什么问题,请告诉我们,以便我可以在文档中修复它。弗拉基米尔的博文肯定很老,并且包含一些过时的信息。我们还将在即将发布的 beta 版本中对 API 的某些部分进行更改,因此请为一些变化做好准备...

    Weave 命名空间仍然是从 UI 代码访问 Sync 相关 API 的规范方式。它公开了Weave.ServiceWeave.Engines 等组件。您可以通过Components.utils.import("resource://services-sync/main.js") 导入它。但是,如果您想实现自己的引擎,则必须导入实际的底层模块(全部在 ClientAPI 教程中列出)。本教程还介绍了如何注册您的自定义引擎实现。但是,一旦注册,它就不会自动显示在首选项 UI 中。我建议构建您自己的 UI,在您的插件首选项中翻转 services.sync.engine.YOURENGINE 首选项。

    出于好奇,您要同步什么样的数据?

    【讨论】:

    • 非常感谢您的回答,我会再试一次。我只是对给出的不同信息感到困惑。我还需要将我的引擎添加到services.sync.registerEngines(就像最后写的那样)吗?我创建了 FloatNotes 插件,它可以让你在网站上创建一些便签。我想同步这些笔记,所以它基本上只是用户输入的文本和一些元数据位置等。也许这不是问的正确地方,但我想知道同步过程是否在后台线程中运行或类似的东西?因为我的数据存储在 SQLite 数据库中
    • 对于某些方法(例如getAllIDs()),我必须返回每条记录,并且我无法进行异步调用,因为该方法不接受回调。所以我想知道它是否会对性能产生严重影响?再次感谢您!
    • 是的,将引擎粘贴到 Weave 对象中并将名称添加到 services.sync.registerEngines 绝对是注册引擎的好方法。
    • 是的,不幸的是所有 Sync 的 API 都是同步的。这是我们希望最终解决的问题,但在 Firefox 4 中不太可能发生。我们在内部使用 Sync.js 工具使一些异步进程看起来是同步的。您只需导入 resource://services-sync/ext/Sync.js,然后包装一个使用 Sync(func) 进行回调的函数。这会返回一个同步的函数。
    • 好的,我搞定了,谢谢你的帮助! (尤其是Sync 工具)。顺便提一句。我认为在教程中值得一提的是如何以及何时将记录标记为已删除(弄清楚并不太难,但提及它也不错)。另一点是我不知道 何时 附加引擎等。我注意到当我在 load 事件处理程序中执行此操作时,有时为时已晚...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 2017-01-25
    • 2014-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多