产品经理的技术修养之路-iOS的沙盒与影响

Sexy beautiful girl sitting on a floor with apple by artur k on 500px.com

其实不太懂iOS

其实对iOS,我理解并不深刻,几个产品的iOS端迭代都是的从Android端(保护键盘,从我做起,下文都称为「安卓」)的需求直接跟进开发的。除了一些明线的区别,基本没有在iOS端上下太大功夫。

不过随着工作越来越忙,越发现,不折腾会死星人的激情渐渐褪去,所以痛下杀手,入了iPhone,开始以iOS作为日常主力系统来使用,也渐渐开始对iOS熟悉了起来。

本文的主要从产品角度,介绍了iOS沙盒基本原理,App间通信的常见方法,还有若干其他同行们在这样的机制下为了提升用户体验的奇淫巧技,希望同大家一同学习。


iOS的沙盒机制

可能很多人都听过说沙盒,但是不明白具体沙盒是什么东西,所以第一个问题:

什么是沙盒?

沙盒,即sandbox(显然是直译,哈哈哈哈),也可以叫沙盘、或者沙
箱,就是那种可以再上面随便乱涂乱画,然后随便一抹就回到原始状态的东东。

概括来说,沙盒可以理解为一种虚拟环境的技术的一种,通过为每一个需要运行的程序,建议一个独立的环境来隔离可能造成的伤害破坏。

不同应用场景下的具体沙盒技术会有些区别,比如在操作系统中,为了检查木马而设计的沙盒:如果代码需要对关键文件进行操作时,沙盒可以重定向操作的文件,再比如未知程序说要看《海天盛筵.avi》,然后沙盒就拿着《葫芦娃全集.avi》说,这就是你要的,拿去看,从而保护系统的关键文件的安全。

回到iOS,其每一个App的有一个独有的空间,起本质就是一个沙盒:

  • 每个应用程序都有自己的存储空间
  • 应用程序不能翻过自己的围墙去访问别的存储空间的内容
  • 应用程序请求的数据都要通过权限检测,假如不符合条件的话,不会被放行。

iOS这么做的原因很简单,就是为了安全和控制。举几个例子,让大家理解起来更加清晰一些:

  1. 所有图片相关的应用,需要拿你系统相册的时候,都回弹出一个请求访问「照片」授权提示。权限本身很好理解,但是背后,其实「照片」是一个独立App(当然因为是系统应用,还是小区别)。iOS中,系统相机拍摄的所有照片都是直接放入「照片」这个App中,而我们知道每个App都是一个沙盒,因此,如果没有得到授权,其他应用是无法读取「照片」这个App中的照片文件的,甚至第三方拍照App在没有授权的情况下拍的照片也只能存在自己的沙盒空间中,无法放入到系统相册。

简单来说,「照片」可以理解为一个独立的App,「美图秀秀」之类的App也是个独立的App,除非得到授权,「美图秀秀」们是拿不到「照片」里的数据的。

  1. 习惯了PC或者安卓的用户,第一次拿到iOS设备时,最常有的困惑,就是怎么往手机里传音乐还有视频、照片?其实产生问题的原因就是,大家不知道存在沙盒机制,习惯上还是要往一个文件夹里放东西,然后大家都能访问了。在iOS里音视频App的空间也是独立的。

比如,如果你想把电影到到暴风影音,那么就要通过iTunes或者其他方式将视频文件导入到暴风影音的沙盒环境中。

PS:如果在家庭网络的环境下,更好的方式建立类似通过NAS等设备建立流媒体播放系统,upnp、samba、airplay爽歪歪,额,扯远了。

  1. 前段时间的Xcode Ghost事件,黑客通过在Xcode编译器里植入代码,然后App运行自动向黑客服务器上传数据。幸好有沙盒的机制存在,除了一些设备型号,地区等非敏感数据外,用户隐私数据都得以保护。当然,被黑的App自身数据本质上还是有危险的。

我觉得这件事情告诉我们,网络环境的科学与否(你懂得),影响每个人的生活,即使你不上国外网络。要是网络好,直接官网下Xcode可能就没事了,我猜的,请不要给我寄快递。

  1. iOS下为什么没有清理软件,没有第三方通话记录管理软件,都是这个原因,根本没权限,苹果不开放的话,第三方自然没得做。

当然如果越狱的话,那就当我什么也没说。越狱软件的权限是系统级的,对于其他App来说,只能淡淡的说一句,大家快来看上帝。


App间通信

既然没有App都处在一个沙盒当中,那么他们之间又如何通信呢?下面的内容主要是介绍,大家了解下就好,代码的问题,还是交给程序猿们吧,要尊重社会分工呀,科科。

目前来看,常见的两种方式(我脑海中的「常见」,当然还有其他办法,可以问问iOS的开发大哥们,或者读文档,泪目):

  1. 使用UIActivityViewController
    UIActivityViewController 是iOS 6开始提供的系统方法,目标就是解决应用间数据分享的问题。
    说类名大家可能有点懵,那么就放截图,科科:

    是不是很熟悉

  2. 自定义URLScheme
    看名字可能可以猜出来,本质上就是第三方应用绑定的URL Scheme,当浏览器或者其他第三方调用这个URL时,就能够启动绑定的App,同时传递对应的数据。目前来看这是最常用的App间通信方式。

    听上去很炫酷,其实大家也一定经常见到,比如在使用Safari浏览网页时看到,如图:


    是不是很炫酷?

不过由于最初设计上的问题,URL Scheme的绑定并没有经过校验,系统App的优先级高于第三方,但是第三方的多个App注册同一个URL Scheme的话,可能会有些问题,感兴趣的同学可以参考原文:
《iOS URL Scheme 劫持-在未越狱的 iPhone 6上盗取支付宝和微信支付的帐号密码》

PS :

  • 安卓端的App间通信的核心是Intent,安卓的三个基本组件Activity,Service和Broadcast Receiver都是通过Intent机制激活的,不同类型的组件有不同的传递Intent方式。
  • iOS的应用间通信的设计本身貌似不是很强大,和安卓的各种唤醒,各种应用联动比还是有些差距。这主要是设计理念的不同,从效果来看,iOS反倒是给了用户清净,不用像安卓用户那样整天纠结App莫名其妙启动,造成耗电、跑流量的问题。

突破沙盒的奇淫巧技

沙盒机制虽然好,保证了iOS端用户体验的安全性,已经第三方App运行的可控性。但是越安全,越可控,在功能设计上受到的限制也就越多。在这样的背景下,iOS端的产品经理和开发大哥们,有时也必须想一些办法「突破」iOS的沙盒限制

比如,iOS上最受人诟病的中文输入法,在Apple开放接口之前,是普通用户越狱的最大原因之一。

举一个经典案例——骚扰拦截 on iOS

再比如,目前国内手机最大痛点之一,骚扰电话的拦截,iOS在功能上和安卓完全是两个数量级的。现在基本国内大厂的手机都自带了骚扰拦截模块,通过云端的骚扰电话标记库,对骚扰电话、垃圾甚至诈骗短信进行过滤。像比如呼死你这种恶劣骚扰,iOS除了打开勿扰模式甚至飞行模式,基本没辙,而勿扰模式相当于一种白名单模式,还无法有电话识别标记的能力,在实际功能上与安卓的体验差别太大,更别说有如360手机卫士等长期耕耘这块功能的第三方安卓App的支持。

由于沙盒机制,在来电的时候,iOS下除了拨号以外,其他App根本不知道当前状态,也就无从下手解决。而安卓的地方应用可以绑定事件,当来电时,可以获取通过Broadcast 得到相应的信息,从而开始对号码进行识别并显示。(当然,自动挂断之类的功能第三方需要root,或者系统级权限的应用才行)

针对iOS骚扰电话的问题,国内最早的奇淫巧技,是搜狗的号码通发布的,其实就是把原本在云端的骚扰电话库,经过筛选和定制,以联系人的方式存到手机通讯录中,联系人姓名就叫「骚扰电话」之类来,这样,一旦骚扰电话拨入,就会显示标记的内容。

这个方法尽管很奇葩,但的确是目前唯一有效的方法了,后续360、触宝等团队都对这个方案进行了优化,并发布到自己的产品中。

360手机卫士iOS版-骚扰拦截说明页

实际是用上来说,差强人意吧,只能说是一种临时方案。

这个方案有两个问题

  1. 会让通讯录变得无比大,我的2011 MBA,打开通讯录的时候就因为某应用导入太多号码而死机。唉,手机没挂,电脑挂了,有哪位官人捐助我买台新电脑咩?请私信~~2333。

  2. 另外在优化之前,很多社交软件都会读取通讯录作为好友数据的推荐基础数据,结果这样做,直接把骚扰电话都当联系人处理,突然间,你有了一堆卖保险的好友,哎,崩溃(这个问题貌似现在已经解决了)。

其实还有很多其他产品在突破iOS沙盒上有过不错的案例,这篇文章页有若干介绍:
产品经理们是如何越过 iOS 沙盒机制的?

PS:

由于淘宝和微信的爱恨情仇(具体我就不说了,我也不知道内幕),即使iOS本身不是障碍,由于人为原因依然相互屏蔽。于是淘宝想了其他方案:

  1. 生成纯文本分享内容,利用微信传播。
  1. 用户根据提示复制文本打开淘宝。
  2. 淘宝读取iOS剪切板。
  3. 淘宝解析内容并执行相应的页面逻辑。
    哎,冤冤相报何时了,早日和解吧

到了该总结的时候了

其实作为产品经理,我个人觉得不需要知道太多技术细节,但是对于一些技术内容的掌握,既可以帮助提高沟通效率,也可以对需求的落地流程有更多的认识。

然后嘛,对于iOS,特别是交互设计这块,我也是新人,很多时候太忙,接就借鉴( 额,原型设计不能算抄的吧,我还是闭嘴吧 )其他产品的设计,一直没有时间好好看看,学习学习,希望未来能有进步。

团队设计师大哥:「这种事情靠天赋,急不来~~2333」

附:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容