写点什么

想要出售你的 CS 扩展?

  • 2011-08-12
  • 本文字数:2956 字

    阅读完需:约 10 分钟

目录

要求

预备知识

这篇文章假设你有 CS 套件的基于 Flash 可扩展性的基本知识。

本文讨论第三方开发者如何使用已有的技术来分发和出售 CS 扩展包。

应用商店

App 商店的普遍概念是和移动元件相关,但是最近几个月,它开始扩展到了机遇 web 技术的应用(大部分在浏览器的 context 里面运行)。 在这个部分,我们讨论如何使用两个这样的店铺,Chrome Web 商店和 Intel AppUp,来帮你出售和分发 CS Extension。

Chrome web store

Chrome web 商店 * 是一个在线的 app,扩展包,还有在 Google Chrome 网页浏览器里面使用的主题包的交易场所,为用户提供了一个不一样的,交互更强的体验。

在我们的实验中,我们主要是开发一个 Google Chrome 浏览器的应用,这个应用以一个分部机制的扩展包的角色来运行的。可以 为 Chrome Web Store 开发的应用* 可以被 Hosted* 或者 打包 * 。在所有案例中,应用架构就像一个“普通的网站”,除了一个 CRX manifest 文件。Hosted 的应用都被描述成一个普通的 web 应用,只不过在打包好的待售的“可安装 web 应用”的时候多了一点点元数据。这意味着打包好的应用可以离线工作,并且可以让 Google Extension APIs 使用。

那这与出售 CS 扩展有何关系?打包的应用可以包含额外的文件,并且可以用以下代码指向它们:

复制代码
var zxpLoc = chrome.extension.getURL("HelloWorld.zxp");

通过可以纳入我们的 CS 扩展包作为额外文件,我们可以:

  • 在初始化页面的时候下载 ZXP 扩展包。
  • 在页面上有下载链接。

图 1. 包含了一个 CS Extension 的打包好的 Chrome App 的概览。

为了让大家有个概览,工作流如下:

  1. 导航至 Google Chrome Web Store。
  2. 找到你的 Chrome App。
  3. 付钱然后安装应用。
  4. 导航至你的应用的主页 (HTML 文件包含在 app 文件夹里面;图一中的 index.html 就是了)。
  5. 激活 ZXP 的下载。

图 2 展示了 ZXP 下载完成。 当用户点击左下角的按钮的时候,Adobe Extension Manager 开始运作,安装这个扩展包。

图 2. 从 Google Chrome 浏览器的一个 Packaged App 里下载。

在这个范例中,ZXP 可以免费下载和分享。 为了保护你的扩展包被通过不正当的手段分发,我们正在关注另一种技术, Netscape Plugin API (后面的部分讨论)。

Intel AppUp

AppUp* 是 Intel 的应用分发 商店。它关注分发应用至基于 Intel?? Atom?? 处理器的移动存储设备。 AppUp SDK* 支持很多语言,包括 C/C++,.NET, Java,HTML5 和 Adobe AIR. 在我们的实验中,我们使用 Adobe AIR SDK* 提交一个包含 CS 扩展包的应用。当下载好 AIR 应用的时候,它启动了 Adobe Extension Manager 并安装 CS 扩展包.

你可以使用 C/C++, .NET 和 Java 库来执行同样的工作流。

总结

这个部分介绍了一些扩展他们的用户群到移动设施内容分发领域之外的应用商店。我们展示了你可以怎样使用这些来增加你的 CS 扩展包的可用性,并且避免了一些基础设施的花费。以下范例是未经优化的解决方案,但是给你说明了你该怎么将这些技术整合到你的配置工作流里面去。

Netscape 插件 API

Netscape Plugin API (NPAPI) 是一个插件结构,开始为 Netscape 家族的浏览器开发的。然后它逐步演变成了包含跨平台支持,并且用在大量的浏览器中。 最明显的异常是 Windows 的 IE,它在 5.5 版中不屑于支持,但是现在却用 ActiveX。

此种架构让开发者可以在浏览器中提供本地代码去处理不支持的内容类型。 比较知名的一个范例是用于 PDF 文件查看; 在不用下载文件到本地的情况下, PDF 插件可以让你在浏览器的 context 里面查看文档。

同样的工作流用于查看 Flash 内容。浏览器与插件之间的通讯是使用 JavaScript 建立的, 里面的很多方法是本地代码执行的。

在为 Chrome Web Store* Intel AppUp* 制作应用的时候,你可能注意到了跨浏览器方面的或者代码的重用性的贫乏。我们已经打包了为 AppUp 商店开发 AIR 应用为 Chrome 打包应用,尽管我们在本范例中没有做这个。

我们在 Netscape 插件方面的兴趣并不止于它的跨平台能力,也同样在于它取得安装流程的控制权的能力。如我们在 Chrome web 商店范例中所知,一旦 ZXP 文件下载完成,没有任何限制可以阻止用户分享 ZXP。使用 NPAPI,我们在网页浏览器 context 的下载体验中有更好的控制权。

原型

我们决定开发一个支持 ZXP 内容类型的 Netscape 插件。我们用 Chrome 和 Firefox 来做试验,我们嵌入一个内容类型 x-zxp-helloworld 到一个简单的 HTML 页面:

复制代码
<embed type='application/x-zxp-helloworld' hidden='true' id='plugin0' />

使用 JavaScript, 我们使用 Netscape 插件通讯以传送文件内容。 一旦文件加载完成,我们通过本地插件启动 Adobe Extension Manager 安装 CS 扩展包。

总结

使用这个工作流,我们可以改善安全性,因为在启动 Adobe Extension Manager 和清理任务(包括 ZXP 包文件的移除)方面,我们有了更好的控制权。

例如,我们可以使用一个加密包,或者一旦 CS 扩展包安装完成简单的移除下载内容。两种手法都可以组织不合法的分发。

这些都是执行 Netscape 插件的比较明显的优点。我们的范例显示,关联性的简化,你可以怎样相对简单的分发你的扩展包到一个已有的提供支付选择的途径。

Web 服务

对于另一个使用 CS 扩展包赚钱的不同途径,我们关注了一些可用的 Payment Web Services ( 网络支付服务) 例如 Paypal* Google Checkout* 。这个改变了我们使用扩展包赚钱的观点。我们要求用户在第一次下载 CS 应用里面的扩展包的时候要求用户支付,代替使用 Web Store 期望下载后支付。

这个方法意味着我们可以整合一系列的网络支付服务,且不受限于一个供应商。所有的支付逻辑都包含在扩展包内。同样,我们也可以使用 ActionScript 代替需求额外的本地扩展,JavaScript,和 HTML。另外,他允许我们提供不同的选项,例如试用 subscriptions 和免费 / premium 版。

实际上的订购工作流体验取决于你实际上连接到的系统。我们的原型实现在扩展包内使用了 HTML 对象 类嵌入浏览器工作流。

复制代码
<mx:HTML height="100%" width="100%" id="htmlField" />

一旦扩展包初始化完成,htmlField 就派发正确的 HTML 去和网络支付服务交互。当然,你也可以在你的应用里面允许使用扩展包之前,打开一个页面浏览器来订购。

总结

这个可选方法出售扩展包并不要求一个很贵的分发工作流,或者一个 Web Store 的提交。尽管如此,除非你有你自己的支付服务,你必须调整供应商的支付工作流;这个也许意味着打开一个浏览器,或者在你的应用内容里面展示供应商的 UI。

延伸阅读

本文是 Adobe 关于使用 CS 扩展包赚钱这个主题的调查。我们验证了一些已有的第三方可用的帮你用 CS 扩展包赚钱的技术,同时也提供了一些指导给你指引。也许你想要使用一个或者这些范例中的多个,或者开发一个不同的途径。

我们了解使用 CS 扩展包赚钱的开发者和用户基础的重要。我们将持续研究这个空间,和你分享我们的发现和想法。 敬请关注 CS Extension Builder 随时更新。

本文中讨论过的相关技术的更多信息请关注:

本文未讨论的其他技术如下:


本文基于 Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License* 协议发布。

查看原文:想要出售你的 CS 扩展?

2011-08-12 00:23996

评论

发布
暂无评论
发现更多内容

再谈引入YAPI接口平台的好处

Man

DevOps YAPI API接口管理

这么理解业务架构就对了!

周金根

BIZBOK 业务架构

如何提升系统可用性

码猿外

可用性 持续交付 工程能力 团队文化

学会反射后,我被录取了(干货)

苹果看辽宁体育

Java 后端 反射

Flink中的数据传输-5

小知识点

scala 大数据 flink

架构师训练营高可用作业

qihuajun

MySQL系列(二):MySQL是怎么处理并发操作的?

z小赵

MySQL 数据库 事务

JavaScript基础语法

Java

Golang领域模型-六边形架构

奔奔奔跑

微服务 领域驱动设计 架构设计 Go 语言

Spring的Controller是单例还是多例?怎么保证并发的安全

简爱W

牛逼操作,ThreadLocal还能当缓存用

简爱W

Java

我,一个当代普通大学生的自述

有梦的咸鱼

个人成长 大学生日常 个人感悟 讨论写作

【数据结构与算法】力扣实战之移动零、盛最多的水、爬楼梯

三钻

算法 大前端 LeetCode 数据结构与算法

都2020了,你的APP还不能运行小程序?

FinClip

小程序生态 私有小程序技术

架构师训练营高可用学习总结

qihuajun

刘华:弹性便是一切

刘华Kenneth

架构 DevOps 敏捷 弹性

深入浅出Vert.x架构

dinstone

我在项目中不可或缺么?

escray

学习 面试

我的缺点就是做事太认真

escray

学习 面试

乘风破浪,Spring Boot入门

Simon郎

Spring Boot

国产数据库的经济民族

郭华

数据库 商业

一款高仿 Eyepetizer | 开眼短视频的 MVVM 开源项目

vipyinzhiwei

android kotlin 短视频 eyepetizer 开眼

Java 约束注解

HeGuang

面试28k职位,老乡面试官从HashCode到HashMap给我讲了一下午!「回家赶忙整理出1.6万字的面试材料」

小傅哥

数据结构 面试 hashmap 红黑树

我能讲明白哪些技术?

escray

学习 面试 沟通

LeetCode题解:25. K 个一组翻转链表,迭代,JavaScript,详细注释

Lee Chen

大前端 LeetCode

oeasy 教您玩转linux010101查看内核uname

o

透过兴趣爱好看本质

escray

学习 面试

第11周作业

小胖子

oeasy教您玩转linux010102查看发行版

o

阿里内部流传的Mybatis笔记终于流传出来了,赶紧收藏

简爱W

想要出售你的 CS 扩展?_Java_Lea Savage_InfoQ精选文章