应用间通信——ios 的孤岛困境 | 极客公园

我是创始人李岩:很抱歉!给自己产品做个广告,点击进来看看。  

给用户带来不便

打断正常操作流程

对于用户来说,ios 应用间调用方式最大的弊端在于,每次切换一个程序都要退回主界面或多任务界面手工开启。在需要多个应用相互配合完成工作的时候显得尤为不便。本文开头所举的用 instagram 拍照上传的例子就是一个明显的体现,而类似这样的使用场景在生活中相当常见。

限制用户选择权

ios 应用的调用和注册方式在很大程度上限制了用户的选择权。继续以 instagram 为例:

点击一条 instagram 链接,在 ios 上只有一种打开方法:在 mobile safari 中打开。

同样点击一条 instagram 链接,在 android 上会出现下面这样的选择界面:

两种做法对比之下,ios 处理方式的缺陷就变得非常明显了,如果我是一名 iphone 用户——

  • 今天月末,手机流量不够了,但我真的很想立刻看到这张图,能不能用省流量的 opera mini 浏览器打开?不能。
  • 我在地铁上信号不好,但我真的很想看到这张图,能不能用对网络要求更低的 uc 浏览器打开?不能。
  • 拍这照片的人是我哥们,看完照片直接给他 like 一下再留个评论呗,能不能直接用 instagram 打开?不能。

android 的应用间通信方式很好地满足了用户在各种不同条件下对打开 instagram 链接的不同需求,而 ios 的做法,则在很多场合给用户带来了不便。

给开发者带来负担

无法完整满足用户需求

ios 薄弱的的应用间调用机制导致开发者必须自行确定和实现调用对象。而不管开发者进行怎样的周全考虑,都无法完全覆盖用户对于调用对象的种种千差万别的需求。例如著名的稍后阅读应用 pocket (原名 read it later),勤奋的作者在应用中实现了二十多种分享服务,然而对于中国用户来说其中却缺少了最常用的分享到新浪微博和腾讯微博等服务。作为一个精力有限且并不十分了解中国的开发者,要让其在应用中追加对中国国内服务的支持显得勉为其难。

而在 android 中,由于应用间通信体系的存在,系统会自动根据用户安装应用的实际情况接管并提供相关分享服务的选项,不管用户对应用的选择多么小众,只要安装了对应的应用,这样的需求就能得到满足。pocket 的 android 版本中,ios 版分享菜单里由作者添加的各种国内用户并不需要的服务没有踪影,而中国用户需要的各种微博服务赫然在列。

重复实现多种已有功能

由于 ios 的应用间调用机制给应用的调用行为带来了巨大的限制,开发者必须额外实现多种系统中已经存在的功能才能为用户理顺操作流程,基本满足用户的需求。在 ios 上,我们可以看到 twitter 和微博客户端自行实现浏览器,新闻阅读客户端自行实现分享选项,甚至文件阅读器自行实现 http 服务器这样的怪异现象。这种额外的功能追加给开发者带来了很大的负担。而在 android 系统中,由于系统间通信机制的存在,开发者并不需要进行这样的额外重复劳动。

网易新闻客户端为例,如下图所示,网易新闻客户端的 ios 版本自行实现了邮件发送界面,以便用户在邮件分享一则新闻后可以直接退回应用中继续阅读,而其 android 版本则可以简单地直接调用 gmail 客户端,用户在邮件分享完毕后 gmail 客户端会自然退出,用户也可以自然回到应用中继续阅读。

额外实现系统中的已有功能只是 ios 应用间调用机制给开发者带来的不便之一。为了实现类似于 android 的自由调用和数据传递,instapaper、drafts 等部分著名 ios 应用的开发者甚至开始联合开发一套新的应用间通信机制 x-callback-url,这样的做法固然可以实现比官方的应用间调用方式更多的功能,但是其对开发者带来的额外负担也更为巨大。

随意打赏

提交建议
微信扫一扫,分享给好友吧。