参与“增强你的 Firefox”附加组件竞赛

人们喜爱他们的附加组件——85% 的 Firefox 用户安装了附加组件,自 2004 年彻底改变浏览体验以来,附加组件的下载量已超过 30 亿次。几乎所有你能想到的东西都有相应的附加组件:娱乐生产力个性化,甚至还有 泡茶 的。**2013 年 6 月 13 日至 7 月 18 日**,我们向您发起挑战,通过创建或更新附加组件来取悦这些粉丝,增强他们的 Firefox 体验。

我们还在移动端向您发起挑战——超过 1000 万人使用 Firefox for Android,这是您将附加组件的趣味性和个性化带给这个快速增长且充满热情的粉丝群体的机会。

一个由 评委 组成的评审团将从每个奖项 类别 中选出最佳附加组件,社区将选出哪个类别的获胜者是总体最佳附加组件。类别获胜者将获得 Android 平板电脑,总冠军将获得 11 英寸 Macbook Air。所有通过审批(完全审查)进入 AMO 的参赛作品都将获得“增强你的 Firefox” T 恤!获奖附加组件还将在 AMO 和其他 Mozilla 平台上获得大量曝光。

类别

最佳移动附加组件

创建能够将 Firefox for Android 提升到新水平的附加组件,让超过 1000 万用户受益,例如改进可读性、增强跨设备的网页体验,并完善浏览功能——发挥你的创意

最佳移动附加组件移植

如果您为桌面创建了一个附加组件,并且认为它非常适合移动用户,那么可以将其 移植 到 Firefox for Android!

最佳游戏附加组件

创建出色的游戏附加组件,例如 CheevosDestroy the Web,需要创意和想象力——你准备好迎接挑战了吗?

最佳完整主题

完整主题 可以彻底改变 Firefox 的外观——从按钮、窗口框架、标签页到菜单,都可以进行自定义——一切皆有可能。创建既美观又能改变 Firefox 外观的完整主题。

最佳更新附加组件

如果您创建了一个附加组件,并希望通过添加新功能、使其支持无需重启或移植到 SDK 来对其进行改进,那么这就是适合您的类别。

移动优先!

本次竞赛中,我们非常期待的一个重要类别是移动端。Firefox for Android 在用户获取和 Play 商店的评价方面表现出色,Android 和 Jetpack 团队一直在努力使为移动 Firefox 开发附加组件变得尽可能简单。话虽如此,移动附加组件的开发方式有所不同,因此我们认为有必要强调一些要点。

NativeWindow & BrowserApp

NativeWindow 和 BrowserApp 是特权 JavaScript API,允许开发者向 Firefox for Android 上使用的原生 Java UI(而不是 XUL)添加自定义功能。BrowserApp 使附加组件开发者能够与移动浏览器标签页交互。NativeWindow 允许开发者向主菜单和上下文菜单添加菜单项,并触发原生通知。

Mark Finkle 创建了一个 方便的 GitHub 代码库,其中包含了您入门所需的所有样板代码。使用此无需重启的附加组件框架作为工作基础,NativeWindow 和 BrowserApp 作为 window 对象的属性很容易访问。

// show a toast immediately
aWindow.NativeWindow.toast.show("Showing you a toast", "short");

// add a menu item that shows a toast when clicked
let menuId = aWindow.NativeWindow.menu.add(“Hello!”, icon, function() {
    aWindow.NativeWindow.toast.show("I ran the callback!", "short");
});

Jetpack – 移动就绪

如果您更熟悉附加组件 SDK,我很高兴地告诉您,Jetpack 团队已经做了大量工作来支持移动开发。大多数(但不是全部)Jetpack API 在移动设备上都能正常工作,并且 cfx 命令行工具得到了增强,能够轻松地将您的附加组件推送到设备上进行测试。

从基于 Jetpack 的附加组件中使用 NativeWindow 相对简单。

// get the most recent window
const utils = require('api-utils/window/utils');
const recent = utils.getMostRecentBrowserWindow();

// show a toast notification
recent.NativeWindow.toast.show(opts.message, duration);

// listen for tabs events
let tabs = require('tabs');
tabs.on('ready', function(tab) {
    console.log(recent.BrowserApp.selectedTab.id, tabs.activeTab.id);
});

注意事项

手机对像 Firefox 移动版这样的 Web 浏览器提出了独特的挑战,因此与桌面版 Firefox 相比,您对扩展程序所能做的操作存在一些非常真实的限制。

  • 附加组件构建器不支持在手机上打包或运行扩展程序。
  • Firefox for Android 不支持 XUL 覆盖层。
  • 并非所有附加组件 SDK 模块都与 Firefox for Android 兼容,请参阅此 兼容性指南 以获取更多信息。

有关使用 NativeWindow API 和 Jetpack 开发移动扩展程序的更多详细信息,请参阅 Mozilla 附加组件博客中的 Jetpack、Fennec 和 NativeWindow 博客文章

开始行动!

祝您玩得开心,祝您好运!

关于 Amy Tsay

Mozilla Firefox 附加组件负责人。

Amy Tsay 的更多文章……

关于 Robert Nyman [荣誉编辑]

技术布道师兼 Mozilla Hacks 编辑。发表关于 HTML5、JavaScript 和开放 Web 的演讲和博客文章。Robert 是 HTML5 和开放 Web 的坚定支持者,自 1999 年以来一直从事 Web 前端开发工作——在瑞典和纽约市。他还定期在 http://robertnyman.com 上发表博客文章,并且热爱旅行和结识新朋友。

Robert Nyman [荣誉编辑] 的更多文章……


8 条评论

  1. Daniel

    有人能告诉我 FireFoxOS 是否支持附加组件吗?

    2013 年 6 月 15 日 09:41

    1. Robert Nyman [编辑]

      不支持,它支持开放式 Web 应用。更多信息请参见 开放式 Web 应用入门——原因和方法

      2013 年 6 月 17 日 01:47

  2. Pikadude No. 1

    问题

    1. 我可以将单个附加组件提交到多个类别吗?
    2. 如果我提交到“最佳更新附加组件”类别,我在竞赛期间进行的所有更新是否都算数?
    3. 如果我已提交附加组件,并且更新使其符合“最佳移动附加组件移植”类别的条件,那么最佳处理方法是什么?

    2013 年 6 月 15 日 21:21

  3. Amy Tsay

    您好,Pikadude,
    1. 是的,您可以将单个附加组件提交到多个类别。
    2. 竞赛结束时的最新版本才是有效版本。
    3. 您可以将该附加组件同时提交到这两个类别。
    希望对您有所帮助!
    Amy

    2013 年 6 月 17 日 09:53

    1. Pikadude No. 1

      1. 太棒了!
      2. 好的,但这鼓励开发者在竞赛结束前进行一次大版本发布,而不是频繁发布。
      3. 我的意思是,我应该如何处理报名表?我猜无法编辑我的第一次报名表提交,所以我在第二次提交时是否应该重复所有内容,或者希望 Mozilla 会查看两者?

      2013 年 6 月 17 日 14:56

  4. pd

    我寻求帮助,所以转向了 IRC,但不幸的是,#addons 和 #extdev 中唯一活跃的是滚滚的 tumbleweeds。我怀疑这是由于我的时区(GMT +10)造成的。是否有关于 IRC 频道最可能有人在线并提供帮助的每日时间段的统计数据或轶事证据?如果有,我可以尝试围绕这些时间调整我的开发工作。

    2013 年 6 月 26 日 06:07

    1. Robert Nyman [编辑]

      还有一个 扩展程序邮件列表

      2013 年 6 月 26 日 09:27

      1. pd

        谢谢 Robert。

        2013 年 6 月 26 日 11:12

本文评论已关闭。