iCloud同步存在问题 开发人员无奈撤离

近日,国外著名科技网站The Verge发表了篇关于苹果iCloud服务的文章。文章表示,时任苹果公司首席执行官史蒂夫·乔布斯(Steve Jobs)在正式对外公布iCloud时,曾经承诺表示iCloud将会一直“良好的运作下去”;但现在,iCloud与Core Data数据库存在的同步问题,这几年却一直迟迟得不到良好的解决。

原文内容如下:

在苹果的众多软件产品中,iCloud可能是唯一以“良好运作”为目标的服务。当苹果在发布会上推出iCloud时,就已经非常明确的表示希望iCloud能够支持自动化,彻底的让设置菜单和文件系统消失。当时的苹果公司首席执行官史蒂夫·乔布斯(Steve Jobs)生前做出过承诺,iCloud将会比之前用户体验糟糕的MobileMe更强。MobileMe是苹果当时为了在网络服务市场进行又一次革命的常识性产品,但是最后却不得不以失败收场。

按照苹果公司当时的想法,在iCloud面世之后,用户在电脑一端对任何文件做出任何改动,马上就会通过iCloud在iPhone等其他iOS设备上有所体现。“iCloud能够良好的运作下去,所有的工作都可以自动进行,并且很轻松的就可以把iCloud存储系统与应用程序整合到一起。”乔布斯在2011年的发布会上做出了上述承诺。

但是,两年的时间已经过去了,用户对iCloud原本将第三方应用与云存储服务连接到一起的需求变得越来越强烈,但是,iCloud自身的表现并不能让人满意,甚至让人倍感失望。软件开发与咨询公司Black Pixel首席执行官丹尼尔·帕斯科(Daniel Pasco)表示:“iCloud对于软件开发人员来说,目前的表现还不能让我们感到满意。作为第三方的应用开发公司,在这方面付出了许多精力,但是iCloud与Core Data数据存在问题,作为我们根本无法解决。”;另外一位来自阅读类的应用Pocket的首席开发技术人员史蒂夫·斯特扎(Steve Streza)在自己的推特上也对苹果iCloud进行了抨击:“如果连Black Pixel这种拥有顶级Cocoa开发人员的公司都不能解决iCloud的问题,那么还有谁可以?”

iCloud存在的问题

名为开发者迈克尔·戈贝尔(Michael Gobel)的开发者在自己的博客中表示,现在他已经把iCloud的编码改了许多次,旨在想要找到一种能够解决问题的方法,但是目前就连苹果方面也没有能够解决。现在的问题是,苹果一直就无法改进iCloud与Core Data之间存在的同步问题,但是却还始终对外宣传iCloud是一种非常完美的云同步方法。

一位不愿意透露姓名的著名开发人员为了不得罪苹果,与苹果保持良好的关系,选择了匿名表达自己的看法:“关于iCloud支持Core Data的问题,苹果的承诺是它将把所有改变的东西都记录到一份事务日志中,从而解决所有令人烦恼的同步问题。但结果是没能做到良好的运作。”原本iCloud应该为开发人员带来更多的方便,可现在却反而让他们举步维艰。如果从用户的角度来说,一旦数据在通过iCloud同步时出现问题数据消失,那么用户将会对这款应用产生非常不好的印象,而并不会归罪到苹果头上。

“在我们遇到的众多问题中,大部分需要几个小时的时间就能解决,但是有些问题却要永远的存在账号里。在第三方应用的使用者遇到问题时,AppleCare维护机制并不能对用户起到什么真正有效的帮助作用。”让人感到郁闷的是,许多应用如果想要同步文件,那么都必须要使用多个数据库,并且这些数据库之间要存在依赖性。“。“毫无疑问,iCloud对于简单直接的文件存储来说是一个出色的工具。”个人财务管理应用Money的开发者Jumsoft说道,他所指的是iCloud基于文件的同步功能,这种功能被任务管理应用Clear和日记应用Day One所使用。将Core Data框架从应用中拿掉“将使其变得几乎跟简单的电子表格没什么两样”,Jumsoft说道。

许多问题都来自于一个事实,那就是苹果并未考虑到某些特殊情况;在这些情况下,用户会做一些出人意料的事情,比如说注销一个苹果ID,然后登录另一个苹果ID等。“对于打开应用时注销iCloud,但随后又进行登录并继续使用应用的用户来说,我们应该如何处理呢?”一名开发者在苹果的支持论坛上写道。“就同步数据而言,事实是真要做到同步是很难的,网络可用性并非一直都很可靠或一直都很快。你必须写出很多编码来处理更新和遇到的问题。”斯特扎在一篇博客文章中写道。唯一能解决这种问题的方法是,对支持电邮逐一作出回应,并在某些情况下人工帮助每名用户重置iCloud数据,而这对开发者来说将浪费大量的时间。

iCloud的故障会导致用户文件受损或数据丢失,这令其用户忠诚度也面临风险。“我一直都在收到用户投诉和一星评级。”开发者布莱恩·阿诺德(Brian Arnold)在苹果的支持论坛上写道。“我还没有收到有关这些问题为何会发生的适当回复,也没有收到有关我能做些什么来解决这些问题的回复。”在苹果的支持论坛上,有关Cloud同步的投诉比比皆是。

“iCloud与Core Data的同步是开发者最糟糕的噩梦。”一名开发者向The Verge说道。“那种感觉会让人感到沮丧、疯狂,而且还要花费成百上千个小时来提供支持。”而最糟糕的事情之一则是,客户在看到苹果的营销宣传以后会要求获得iCloud支持,但开发者却无法交付这种支持。“需要明白的一件关键的事情在于,用户对于iCloud运作的概念在很大程度上基于并不使用Core Data进行同步的应用。”AgileTortoise开发者格雷格·皮尔斯(Greg Pierce)说道。

当苹果使用iCloud时,最经常发生的情况是,这家公司甚至都不用Core Data来同步信息。举例来说,像Keynote这样的幻灯片演示应用会使用基于文件的同步方法,这种方法要简单得多。Keynote肯定能有效运作,但苹果会密切关注基于文件的同步功能。而当苹果确实需要依赖Core Data时,这家公司的软件比第三方开发者幸运不到哪儿去。苹果的Trailers应用就使用Core Data来进行同步,这个应用经常都会与用户收藏失去联系。“苹果最好的技术是他们自己使用的技术。”一名开发者这样对我说道。

苹果的态度

当开发者面临着无法实现iCould同步的困境时,苹果并未施以援手,而是选择把支持请求转向下一次iOS或Mac更新。

这个问题在一年多以前的2012年苹果全球开发者大会上就已经出现,当时许多开发者都在苹果的支持服务台前排队,希望能获得有关iCould为何如此难以实现同步的答案。苹果有关将iCloud整合到应用中的文件一直都很少,开发者希望能从苹果那里得到答案。“你可能会被误导,以为将iCloud整合到Core Data中就像闲庭信步那样轻松。”开发者德鲁·麦考马克(Drew McCormack)在苹果全球开发者大会召开的一个月以前这样写道。“不幸的是,在这个节骨眼上,没什么能比这种想法更加远离事实了。”

“等iOS 6发布吧。”这就是苹果在全球开发者大会向开发者给出的答案。这家公司还发布了示例代码,让开发者用来实现iCloud与Core Data的同步,但哪怕从最好程度上来说,这些代码都是不完整的。“从iOS 5升级到iOS 6以后,情况确实有所好转,但还是不够。”一名开发者对我说道。一名与苹果关系密切的消息人士向我透露,问题的部分原因在于,截至去年为止,苹果仅有4名员工负责领导这家公司有关Core Data的工作。到现在为止,苹果仍旧没有表达出任何想要修复Core Data同步问题的意愿。

大部分第三方开发公司都非常烦恼,并且都已经学到了教训,彻底放弃了实现iCloud与Core Data同步的念头。“到最后,当我们想要为(我们的应用)进行iCloud与Core Data的同步时,才发现根本不行,不管怎么做也没用。”一名iPhone和Mac应用开发者说道,他开发的应用跻身最畅销的应用之列。“iCloud与Core Data同步的有些问题从理论上来说根本是无法解决的,而其他一些问题则是执行过程中的明显bug。”他说道。想要做到同步也是有其他选择存在的,但这些选择都无法做到不辜负iCloud在近两年以前所设定的目标:创造一种无缝的、“能良好运作的”同步解决方案,无需用户登录或设定任何东西。

那么,云存储应用Dropbox又如何呢?看起来这好像是人气度最高的一种解决方案,但事实不然。首先,整合Dropbox意味着要求用户注册和授权另一个应用。“无论是从个人角度出发,还是从Elements的角度出发,我都很喜欢Dropbox。但我还是想要支持iCloud,因为它能为用户减少一个准入壁垒,让他们不必注册Dropbox账号就能同步文件。”Elements应用开发者贾斯汀·威廉姆斯(Justin Williams)说道。

其次,Dropbox使用的是基于文件的同步方式。如果你曾试过用Dropbox来同步一个iPhoto图库,那么就会知道Dropbox也会在数据库上卡壳。正如Jumsoft及其他几名开发者所证实的那样,文件同步并非他们所追寻的东西;他们的梦想是,在两种或更多的设备上拥有能完美同步的数据库。事实上,在iOS生态系统中还没人能做好这项工作,因此iCloud在发布之初给人们带来过很大的希望。

那么,继续花费时间在iCloud上的最后一个理由是什么呢?苹果喜欢重点宣传那些能有效执行其解决方案的应用作,如应用内购买、游戏中心(Game Center)和iCloud同步等。“如果你不把iCloud整合到自己的应用中去,那么苹果就永远都不会重视。”戈贝尔写道。对开发者来说,是否能得到苹果的重视,就意味着他们所开发的应用是能取得成功还是注定失败。

结果如何还需等待

现在,2013年的苹果全球开发者大会也被提上了日程,对于iCloud来说虽然已经修复了不少问题,但是目前还存在许多亟待解决的bug。也许苹果会推出一个彻底优化更新之后的另一种服务,来取代目前已经让大部分开发人员失去信心的iCloud。或者苹果如果能明确表态会修复Core Data同步问题,那么也许iCloud还有救。

但是苹果向来在这个问题上与开发人员是没有任何沟通的,也许智能在全球开发者大会上才会偶然得到一些不痛不痒的消息。目前苹果公司已经承认iCloud的问题存在,但是究竟何时会给出解决的方法,还没有一个明确的时间表。

“哪怕苹果现在告诉我们,如果在未来的iOS 7中会解决问题,即使再等上一两年,我们也非常高兴,但是现在毫无消息,这真的很让人无奈。”一位普通的开发人员抱怨道。“如果苹果在iOS 7中依然无法解决问题,那么我们只能考虑Android、Windows Phone或者BlackBerry 10了。”一位已经失去信心的开发人员做出了自己的决定。

目前,苹果方面拒绝对The Verge的篇文章发表评论。