人们喜爱他们的附加组件——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!
最佳游戏附加组件
创建出色的游戏附加组件,例如 Cheevos 或 Destroy 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 博客文章。
开始行动!
- 请在 AMO 博客上查看完整的 竞赛详情
- 在 开发者社区 和 开发者中心 中查看教程、文章,并与附加组件开发者建立联系。
- 查看有关 为 Firefox on Android 开发扩展程序 的文章。
祝您玩得开心,祝您好运!
关于 Amy Tsay
Mozilla Firefox 附加组件负责人。
关于 Robert Nyman [荣誉编辑]
技术布道师兼 Mozilla Hacks 编辑。发表关于 HTML5、JavaScript 和开放 Web 的演讲和博客文章。Robert 是 HTML5 和开放 Web 的坚定支持者,自 1999 年以来一直从事 Web 前端开发工作——在瑞典和纽约市。他还定期在 http://robertnyman.com 上发表博客文章,并且热爱旅行和结识新朋友。
8 条评论