Facebook 推出 App Links 开发者工具意在解决什么问题?

标签: facebook 推出 app | 发表时间:2014-05-03 06:13 | 作者:罗晟
出处:http://www.zhihu.com
App Links 并不是用来取代 URL Scheme 的,所以也谈不上「有何本质不同」。它并不是某一种技术,而是一项协议(或者像他们说的,一种「解决方案」)。

我们想像一下这样一个常见的场景:A 在大众点评上看到了一家餐厅并想通过微信把这家餐厅分享给 B——此时问题出现了——B 会如何处理这个链接是未知的。如果 A 和 B 都是同一平台的用户还好,当时直接传一个类似于 dianping://shop/12345 的 URL 对方在微信中点了就能在 app 里打开了(先不考虑微信是否接受这样的 URL)。可是如果大众点评某天升级了把 URL scheme 改成 dianping_v2://shop/12345 呢?如果 A 和 B 是两个不同平台的用户呢?如果 B 的手机上根本就没有装大众点评呢?

这个事情,大众点评即使想做也是有心无力——链接一旦分享出去控制权就不在自己手里了。好吧,我们还是可以做一个网页版的嘛,弄一个 http://m.dianping.com/shop/4551072 这样的链接,不管对方是什么环境,至少可以在微信的 in-app 浏览器里打开嘛。牺牲部分体验来换取最大的可用性——而且还是有活路的,可以在网页加载好后用 JavaScript 做一点 window.location.href = 'dianping://shop/12345' 这样的小动作嘛——直到有一天微信关掉了 URL Scheme 跳转……

于是这个事情就变得很荒唐。明明对方的手机里有装大众点评的 app,大众点评也支持 URL Scheme,可在微信上点开大众点评的链接就是只能看到 web 版。理论上来说作为平台的微信应该出来挑大梁,不过可能微信忙着征服全世界顾不上这点小事——于是另一个闲得没事干的平台 Facebook(好吧,准确地说是 Facebook 去年买进来的 Parse 团队)跳出来解决了问题。

怎么解决?说难也不难,无外乎就是把自己在几个平台下的跳转规则一并告诉对方。对方是什么平台就按什么平台的规则去处理。如果对方没装我们的 app,那我就告诉他一个安装地址。如果他的平台确实没有我们的 app(并没有想黑 WP 的意思……),那么就给他看一个网页版好了。但是这些规则写在哪呢?用 <meta> 标签放在网页里就好了嘛!于是一个实现了 App Links 的网页大致长成这样:

   <html>
<head>
    <meta property="al:ios:url" content="applinks://docs" />
    <meta property="al:ios:app_store_id" content="12345" />
    <meta property="al:ios:app_name" content="App Links" />
    <meta property="al:android:url" content="applinks://docs" />
    <meta property="al:android:app_name" content="App Links" />
    <meta property="al:android:package" content="org.applinks" />
    <meta property="al:web:url"
          content="http://applinks.org/documentation" />
</head>
<body>
Hello, world!
</body>
</html>

大众点评网的程序员们看到之后如获至宝,嗨嗨皮皮(不要质疑我的成语能力!)地把这些 meta tags 都塞进了 http://m.dianping.com/shop/4551072 。Parse 说我都给你们写好各个平台下的 SDK 了,解析跳转一条龙哦你们赶紧用。腾讯(过了一年后)说,App Links 是什么?

App Links 还制定了一些别的标准,比如可以多次指定同一项值来完成 fallback(用于新老版本 URL Scheme 不兼容的情况),比如实现了跳转时的数据传输标准(用 JSON 描述,放在 al_applink_data 参数中),比如提供了跳转后 app 的 UX 建议(导航栏用一层蓝色的可点按区域覆盖,点按后返回原 app)。App Links 不是唯一解,也不一定是最优解,但它确实是解决当下 app 间跳转混乱局面的一个可行解(而且标准本身具有可扩展性,即使 iOS 8 里加入类似 Android 中的 Intent,App Links 也可以通过增加几个 meta tags 来支持)。回到最初的问题上,它解决的问题,其实就是 Ilya Sukhar (Parse CEO) 在 F8 上说的这句话:「There is no unified way to navigate to links across all the platforms.」在技术层面上,App Links 统一了流程、跨了平台,这就很好了。

而剩下的问题其实才是最大的问题——有人用的标准才是好标准。这个用也分两种角色:类似大众点评这样的第三方开发者,他们只需要发布自己的 App Links 就可以了,这个事情很简单,如上面所说无非就是在现成的网页里加几个 meta tags 的事情。而类似微信这样的平台则需要实现这样的协议,理论上也不难,但也许除了优化用户体验之外好处有限,可能还会面临到如何去兼容老版本啦、跳转出去会不会降低用户黏性啦、怎么满足平台的统计需求啦之类的问题(随口一说,也许没那么多问题。)老外比较单纯,想想这对用户来说是件好事我们就做吧,于是至少 Parse 有他的亲爹 Facebook 给他撑腰。至于国内,需要有第一个吃螃蟹的人。

— 完 —
本文作者: 罗晟

【知乎日报】 你都看到这啦,快来点我嘛 Σ(▼□▼メ)

此问题还有 2 个回答,查看全部。
延伸阅读:
测试 iOS App 时需要注意什么?
scrum工具大家有什么推荐?

相关 [facebook 推出 app] 推荐:

Facebook 推出 App Links 开发者工具意在解决什么问题?

- - 知乎每日精选
App Links 并不是用来取代 URL Scheme 的,所以也谈不上「有何本质不同」. 它并不是某一种技术,而是一项协议(或者像他们说的,一种「解决方案」). 我们想像一下这样一个常见的场景:A 在大众点评上看到了一家餐厅并想通过微信把这家餐厅分享给 B——此时问题出现了——B 会如何处理这个链接是未知的.

Facebook 官方正式推出 Facebook for iPad 版

- linsen - ApplePlan
Facebook 正式推出 Facebook for iPad 版. 在 iPad 漂亮的 9.7 吋螢幕上,你可以聊天,瀏覽,翻閱你朋友的照片,以及玩遊戲,並在全螢幕模式觀看高解析度影片. 喜歡隨時隨地在 Facebook 上面,隨時分享照片、打卡、聊天的朋友,. 現在在 iPad ,你也可以享受相同樂趣.

Facebook推出怀旧功能

- Enlizh - 36氪
Facebook最近悄悄推出了怀旧功能,在页面右侧广告栏的上方会出现标题为“2010年的这一天”或“2009年的这一天”的一栏. 该栏中将会展示你在一两年的这天的状态更新,多出现在浏览相册的页面中. 点击“Show More” 可以查看更多之前的状态,就目前来看似乎最早只能回溯到2009年. 这也比较符合实际,毕竟在2007年至2008年左右Facebook还远没有现在这样火爆.

iPad 版的官方 Facebook app 終於來囉!

- SotongDJ - Engadget 中文版
應該很多人都跟小編有相同的困擾吧. 試過很多免費或付費的程式,但在 iPad 上還真的是遍尋不著如 iPhone 官方 Facebook app 同樣好用的程式. 雖然大部份副廠程式的功能都有其強項,但總有些小問題或支援會出狀況(例如 Push 通知功能超常漏訊息...orz),讓人還是得依賴低解析度的官方程式版本輔助使用,或有些人乾脆直接使用網頁版本或用別的方法來得到完整功能支援.

iPad 版的官方 Facebook app 终于来啰!

- austin - Engadget 中国版
应该很多人都跟小编有相同的困扰吧. 试过很多免费或付费的程序,但在 iPad 上还真的是遍寻不着如 iPhone 官方 Facebook app 同样好用的程序. 虽然大部份副厂程序的功能都有其强项,但总有些小问题或支持会出状况(例如 Push 通知功能超常漏讯息...orz),让人还是得依赖低分辨率的官方程式版本辅助使用,或有些人干脆直接使用网页版本或用别的方法来得到完整功能支持.

Facebook Messenger 手機即時通,中文版 APP 正式上架

- Amo - T客邦
今年八月 Facebook Messenger 就已經在美國的 App Store 及 Android Market 上架,相信有一些使用者已經用國外帳號安裝嘗鮮;兩個多月後,中文版終於正式在台灣 App Store 開放下載,Android 版也進行中文化更新. 軟體名稱:Facebook Messenger.

腾讯克隆Facebook Connect推出QQ Login

- openboy - 36氪
近日,科技博客Thenextweb撰文指出腾讯对Facebook Connect进行克隆推出了自己的QQ Login(QQ 登陆). 据悉该服务和Facebook Connect一样,允许用户通过其QQ账号就登入许多其他的第三方网站,从而避免用户需要再次注册账户的繁琐过程,而用户在第3方网站上分享的评论等也可以显示在腾讯自己的社交网络Qzone上.

Facebook, Google, Twitter, Linkedin推出了WebScaleSQL

- - CSDN博客数据库推荐文章
名字看起来很可怕的样子:Web Scale. 实际是基于Oracle的社区版本MySQL 5.6做的,加了一些工具和补丁. 下面这一段是已经开发完成的东西. Features that make operating at Web scale easier, such as a super read-only feature and the ability to specify sub-second client timeouts..

Facebook 推出 PHP 语言规范草案

- - 开源中国社区最新新闻
PHP是最广泛使用的脚本语言之一,被数以千万计的网站使用,但直到现在它才有一个正式的语言规范. Facebook工程师和PHP核心开发者 Sara Golemon在上月初举行的OSCON会议上 宣布了制定正式规格的计划,现在规格的草案已经发布在Github上. Facebook网站主要是基于PHP语言,过去几年Facebook向PHP贡献了许多开源项目,如虚拟机HHVM,翻译器HPHPc.

Nokia Maps 正式推出 HTML5 web app 版

- - UNWIRE.HK 流動科技生活
看來近年寫程式的趨勢,已由以往的 native app,開始轉向採用 web app,因為後者始終不受平台限制,只要編寫一個支援 HTML-5 格式的 web app,就可以在 iPhone、iPad、Android 手機、平板、Windows Phone 手機、甚至在 Blackberry 平台的裝置上使用,對於研發程式的公司來說,確實是最具經濟效益的方法.