写点什么

Web Intents:Google 的内部 WebApp 互联机制

2011 年 8 月 07 日

Google Chrome 团队近期发布了 Web Intents ,这是一个 API,它允许 Web 应用集成第三方服务而不需要使用每一个第三方服务自有的 API。Web Intents 等于是 Android intents 的Web 版,它的实现原理是使用了后期运行时绑定机制,这就使得应用程序和服务之间的关系式松耦合。Web Intents 还提供了十分用户友好的机制来控制服务集成以及简化开发过程,这样就将用户置于主导位置。

在Intents 系统中,服务将会显式地注册为使用intents,后者只是一些泛型动作,例如编辑,查看,分享等,以及使用这些动作的数据。在运行过程中,用户需要在注册为同一个动作的多个服务中进行选择。这样被选择的应用以后就会专门负责这个动作。在现实世界中类似的情况便是使用自己的Web 应用来发布照片,开发者与其自己编写一个集成各种各样的照片分享服务(例如 Flickr 或者 Picasa )的 API,还不如引入 Web Intents 系统,让自己的 Web 应用在几行代码便能完全使用浏览器的功能,这样可以将 Flickr 或者 Picasa 注册为分享服务,并且可以在之后询问用户选择默认的分享服务。不过现在没有任何一个浏览器能够完全支持这个特性,于是 Web Intents 项目使用了一个 JavaScript 插件来让 Web Intents 应用能够在 IE 8 和 9、Firefox 3 以及更高版本,Chrome 5 及更高版本和 Safari 浏览器上运行。

想象一下这样一个创业项目,开发者们要做一个在线照片存储站点,但是却资金不足:开发者不会有足够的资源向它们的应用中加入照片编辑能力,但是他们认为如果不加入这个功能的话,站点就毫无竞争力可言。Web Intents 系统仅仅以很小的代价就能够帮助他们做到这些。

var intent = new Intent(Intent.EDIT, ‘image/png’, getImageDataURI());

window.navigator.startActivity(intent, loadEditedImage);

// 这个回调函数将会在服务返回编辑好的照片数据时候调用。

function loadEditedImage(data) {

var image = document.getElementById(‘image’);

setImageData(image, data);

}

当用户访问了她最喜欢的 memegen 服务,这个站点将会使用这样的声明请求注册对”image/*”类型文件的编辑意图:

<intent

action=” http://webintents.org/edit”

type=”image/*”

/>

当用户初始化编辑动作的时候,这个服务将会调用已注册的图片编辑器。一旦用户选择了 Meme Generator,引用的站点将会在新的运行时环境中打开,并且能够加载图片数据:

var intent = window.intent;

memeImg.src = intent.data;

memegenForm.onsubmit = function() {

// 转换图片

addMemeTaglines(memeImg, memeTopText, memeBottomText);

// 将生成完毕的图片返回给客户端

intent.postResult(getImageData(memeImg));

};

一旦 postResult() 被调用,Meme Generator 运行时环境将会关闭,输出的数据会使用传递给 startActicity() 的回调函数返回给客户端。

发现:发现意图是设计为让开发者能够寻找外部服务中的 API 或者服务。

分享:分享意图是设计为让应用能够提供一个简单的机制能够分享当前页面的数据。用户可以注册任何分享的动作,包括且不限于社交网络和 Email 服务。“分享”协议可以作为一个轻量级的分享工具。

编辑:编辑意图是为了让应用能够提供一个简单的机制编辑当前页面的数据。用户可以注册任何编辑的动作,包括且不限于图片操作工具和文本编辑器。“编辑”协议可以作为一个轻量级的编辑工具。

查看:查看意图是为了让应用能够提供一个简单的机制查看应用程序中的数据。用户可以注册任何查看的动作,包括且不限于特殊的图片工具或者音频播放器。“查看”协议可以作为一个轻量级的查看工具。

挑选:挑选意图是为了让服务能够允许用户从中选出文件以供客户端应用使用。用户可以注册任何挑选的动作,包括且不限于图片画廊例如 Picasa 或者 Flickr。客户端应用可以是任何一个 Email 客户端,例如 Gmail 或者 Email。“挑选”协议可以作为一个轻量级的云文件挑选工具。

Google 正在和 Mozilla 协作以统一解决方案。Mozilla 也对这个问题非常感兴趣,并且在上个月早些时候通过它们的 Open Web App Addon 0.3 引入了 Web Activities 。Open Web App 生态系统包括应用程序机器的可读表单,用户的应用存储库,加载的应用程序的表盘以及支持的交互行为。这里面的表单很类似于 Web Intents 系统里面的意图。

2011 年 8 月 07 日 16:022021
用户头像

发布了 90 篇内容, 共 28.3 次阅读, 收获喜欢 1 次。

关注

评论

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

Substrate 合约书之合约模型

Patract

智能合约 rust polkadot Patract Wasm

Nacos 2.0 性能提升十倍,贡献者 80% 以上来自阿里之外

阿里巴巴云原生

微服务 开发者 云原生 dubbo 中间件

《彩食鲜 CTO 乔新亮:从程序员到 CTO》(采访提纲)

硬核编程

量化交易机器人开发,量化策略平台开发app

WX13823153201

量化交易机器人开发

交易所合约跟单软件搭建,火币合约跟单平台开发

13823153121

膜拜!阿里内部都在强推的K8S(kubernetes)学习指南,不能再详细了

程序员改bug

架构 k8s 后端 java程序员

Spark数据倾斜解决方案

大数据技术指南

spark 4月日更

iceberg查询加速原理

聚变

与Gartner专家在线讨论中国SASE市场

Geek_bacee5

Gartner sase

CTF--基于X-Forwarded-For的IP地址伪造

Machine Gun

网络安全 信息安全 渗透测试 WEB安全

融云 CTO 杨攀:技术人员如何创业?

Yano

浅析“分布式锁”的实现方式丨C++后端开发丨底层原理

Linux服务器开发

redis zookeeper 分布式锁 Linux服务器开发 C++后端开发

阿里P8大牛亲自教你!带你快速通过面试,Android岗

欢喜学安卓

android 程序员 面试 移动开发

如何用 Electron + WebRTC 开发一个跨平台的视频会议应用

阿里云视频云

阿里云 音视频 WebRTC 音视频会议 Electron

完美面试宝典?终于有阿里大牛将1000道大厂Java面试真题收录成册,全网开源了!

程序员小毕

Java 程序员 架构 面试 分布式

Patract与Plasm达成深度合作,普及Wasm合约开发工具套件

Patract

智能合约 rust polkadot Patract Wasm

波卡与 Wasm 合约双剑合璧

Patract

智能合约 polkadot Patract EVM

CURD同事狂刷阿里面试指南(泰山版),最终直接斩获十七个offer

神奇小汤圆

Java 编程 程序员 架构 面试

程序员快乐的一天!

CloudQuery社区

程序员 运维 开发 dba 数据库管理工具

波卡议会就如何应对竞争性的分叉中继链展开激烈讨论

Patract

智能合约 Substrate polkadot Patract Wasm

推荐25种自媒体运营必备工具 (建议收藏)

科技猫

工具 网站 分享 运营 自媒体

腾讯大神为什么会对这份“redis深度笔记”如此爱不释手?

Java架构师迁哥

Java开发9年经验,三轮技术面+HR面试成功砍下阿里巴巴Offer!

Java架构追梦

Java 阿里巴巴 架构 面试经历 面试题总结

不服不行!Github即将爆火的「高并发秒杀顶级教程」,先睹为快

程序员改bug

Java 编程 程序员 架构 高并发

TechShare#1回顾|快速上手ink!智能合约

Patract

智能合约 polkadot Patract Wasm ink!

勇夺桂冠!百度智能云获山东电力输电人工智能技术竞赛第一名

百度大脑

百度智能云

阿里P8亲自讲解!带你一步一步深入Handler源码,满满干货指导

欢喜学安卓

android 程序员 面试 移动开发

有道写作浏览器扩展实践

有道技术团队

前端 浏览器 有道云笔记

进公司不会用 Git 拉项目!第二天被开除?

Java架构师迁哥

微服务转型系列2:微服务转型的三大误区,避坑指南

BoCloud博云

微服务 微服务转型

图查询语言的历史回顾短文

Nebula Graph

数据库 数据库设计 图数据库

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

Web Intents:Google的内部WebApp互联机制-InfoQ