V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
codeplay
V2EX  ›  macOS

终于搞明白了 iCloud Drive 和之前 App 里面的 iCloud 是什么关系了

  •  
  •   codeplay · 2014-10-18 15:17:24 +08:00 · 127903 次点击
    这是一个创建于 3688 天前的主题,其中的信息可能已经有所发展或是发生改变。
    终于搞明白了iCloud Drive和之前iCloud是什么关系了

    首先来看几个问题:
    1、为什么保存在MindNode Pro的iCloud里面的文档看不到,但是保存在Pages的iCloud空间里的文档就可以?

    2、我之前保存在 Day One 里的数据在iCloud Drive怎么看不到?

    3、之前担心iCloud Drive有了之后,iCloud Drive里会放着一大堆iPhone游戏的存档数据,但是好像没有……

    折腾了一上午,搞明白了
    Yosemite之前的App支持的iCloud,App控制了自己iCloud的访问权限:每个App只允许自己访问自己的iCloud空间中的数据(这个理解为 Private iCloud)。在Finder中的位置为/Users/MyUserName/Library/Mobile Documents,每个App都有自己独立的目录。正常只能通过对应App去访问。也可通过一个第三方软件:PlainCloud去访问。

    在Yosemite中,如果一个App支持 iCloud Drive,那他会把自己的App文件空间暴露给iCloud Drive,让系统和其他第三方应用看到,可以调用。可以理解为Public iCloud。

    最后呢,整个iCloud空间,可以立即为Complete iCloud。

    如果手工创建的文件,放到iCloud Drive 里的,则是放在了/Users/MyUserName/Library/Mobile Documents/iCloud Drive里。

    如果通过Finder去访问的话,看到的iCloud Drive其实是支援iCloud Drive的App的文件空间和手动移动到iCloud Drive里的文件的集合。

    即,如果一个App只支持之前的iCloud,而不支持iCloud Drive呢,它的文件的空间对于iCloud Drive是不可见的。

    所以对于问题1,原因就是MindNodePro并不支持iCloud Drive,所以在iCloud Drive里并没有MindNodePro的文件夹。同样的,问题2、3也是因为Day One和iOS上的游戏存档都是保存在App私有的iCloud里面,所以看不到。

    我想搞的这么复杂可能就是想让开发者决定如何使用iCloud:如果数据只是自己App本身用,就不用把App的iCloud做成Public的(即在iCloud Drive中可见的)。如果需要,那就支持iCloud Drive,让第三方看到。

    这个与Dropbox还是有比较大的不同的,Dropbox里面没有不可见的App私有空间这样的概念,如果你用Dropbox来同步1Password的配置数据,那么在Finder中的Dropbox目录里,这个配置数据是可见的。

    Finder对于iCloud进行了封装,确实很优雅(你不用看到无用的iOS游戏存档或其他乱七八糟的东西),但也确实让用户很困惑。
    20 条回复    2016-10-22 11:31:50 +08:00
    codeplay
        1
    codeplay  
    OP
       2014-10-18 15:21:28 +08:00
    感觉说的有点啰嗦

    简而言之:一个App 支持iCloud !=支持iCloud Drive
    codeplay
        2
    codeplay  
    OP
       2014-10-18 15:32:37 +08:00
    支持iCloud的App很多

    但支持iCloud Drive的好像只有Apple自家的几个App……

    所以……
    leondel
        3
    leondel  
       2014-10-18 15:54:38 +08:00
    画个饼状图之类的 Infographic 似乎比较容易理解...
    SkyLanD
        4
    SkyLanD  
       2014-10-18 15:58:09 +08:00   ❤️ 1
    已经晕倒在键盘前!
    est
        5
    est  
       2014-10-18 16:03:59 +08:00
    才搞懂airdrop。。。iCloud又搞混了。。。
    coymail
        6
    coymail  
       2014-10-18 18:29:01 +08:00 via iPhone
    我说怎么好多软件没效果,长知识了
    sfdye
        7
    sfdye  
       2014-10-18 18:44:33 +08:00
    难怪的,那苹果自家的Garageband,我之前的project在iCloud里面,怎么样能在iCloud Drive里面看呢?
    Tink
        8
    Tink  
       2014-10-18 20:11:45 +08:00 via iPhone
    明白了,感谢楼主
    iYu
        9
    iYu  
       2014-10-18 21:08:03 +08:00   ❤️ 1
    我来以我的测试以及使用感受来说一下 iCloud 和 iCloud Drive

    1. 支持 iCloud 的应用,理论上 100% 可以使用 iCloud Drive。
    2. iCloud 到 iCloud Drive 的升级对于普通用户来说应当就是一次在服务端的数据迁移。(从 iCloud 服务器迁移到 iCloud Drive 服务器)
    3. 升级 iCloud Drive 是 Apple ID 的事情,不可逆。相当于升级之前是读取 iCloud 服务器的数据,升级之后是读取 iCloud Drive 服务器的数据。
    4. 建议升级 iCloud Drive
    5. lz 注意到了存储位置。离真相很近了。用新的 Xcode 建立用户获取 iCloud 的 Container ID 时候。会跟之前不一样。这也就是有可能同一个应用会获取不到原来的数据的问题。不过这个问题是开发者去解决,普通用户不用关心。
    6. 最后,如果已经升级 iOS 8. 但是没有升级 iCloud Drive 的时候 App 可能会找不到 iCloud 数据。这个问题很麻烦,跟开发者相关。所以还是建议升级 Apple ID 到 iCloud Drive。

    以上,一个一生 iCloud 黑的人对这次 iCloud 和 iCloud Drive 的认知。
    codeplay
        10
    codeplay  
    OP
       2014-10-18 22:54:34 +08:00 via iPhone
    @iYu
    我说的支持iCloud Drive 指的是把App私有的iCloud空间暴露在公共的iCloud Drive里。不是说不支持保存在iCloud Drive里。实际上如果把MindNodePro(OS X端)文档在保存时选择在iCloud Drive里,在App自己的iCloud Drive也是可以看到的。
    怎么说呢?有点像程序设计里面的私有、公有的关系。私有的可以访问公有的,但公有的没法访问私有的。
    感觉这样的概念还是太复杂了,感觉苹果总是限定了用户使用的场景,在它划定的场景内,通过进行封装,体验是很好的。例如一些游戏存档,保存在iCloud中,但你一般不会编辑它,他们一大片一大片的躺在iCloud Drive里确实很违和。一切似乎很简单、很优雅。
    但如果之前的App支持iCloud,但在iCloud Drive里不显示,之前保存在App里iCloud的数据就很难通过iCloud Drive访问了。甚至不如那些完全不支持iCloud的App完全把iCloud Drive当网盘用来的直观(不考虑iOS端使用的话)。
    一旦跳出Apple为你划定的场景,Apple精心设计的封装反而增加了用户的困惑。
    iYu
        11
    iYu  
       2014-10-18 23:33:00 +08:00   ❤️ 2
    @codeplay

    在仔细看了后面这段以后。貌似看懂了一些你的意思。我来说说我的看法。

    1. 你所有的讨论都是基于 iCloud Drive 的。跟之前的我说的 iCloud 和 iCloud Drive 不是在说同一个事情。
    2. 你看到的现象确实是这样。你使用了公有和私用这样的概念来解释。下面是我的对此的解释:
    在 Apple 生态里面。商店里面的程序都是沙盒的。相互之间都是独立的。不过有一个地方是可以看到沙盒内部,在开发文档里面也是同样描述那就是 Documents 的路径。举例一个 iOS App 如果你在Documents 下面有文件,那你在 iTunes App 的那页下面是可以看到这些文件。同样的概念延续到了 iCloud 上。当 App 的文件存于他自己 iCloud 路径下的 Documents 文件夹下面的时候。你就可以在 Finder 中看到相当于你说的公有。而另外的路径是不会显示到 Finder 下面的时候,这些是不可见的。 所以能不能给你看见,取决于开发商对自己 App 的设计和实现。
    3. 你所使用的 MindNode Pro 他的数据是文件类型。所以他自己可能选择存在自己的 Documents 下,你是能看见的。如你所说,一些也是使用文件存储数据类型的 App 也可以选择把文件存到 iCloud Drive 的路径下。这样其实 iCloud Drive 就是一个 Dropbox 而已。这些 App 只是做了一个存储。Apple 这样做其实就是变相的实现了网盘而已。跟之前 iCloud 同步数据有点点区别的。

    以上,有些地方可能看起来解释的不是很清楚。(因为好久没有写东西了,表达有问题!)
    iYu
        12
    iYu  
       2014-10-18 23:43:28 +08:00
    @codeplay 你的观察全部都没有问题。只是我从我的角度来说明一些概念的看法。
    codeplay
        13
    codeplay  
    OP
       2014-10-18 23:56:08 +08:00
    @iYu
    您的解释比我更详尽、深入,学习了。
    iYu
        14
    iYu  
       2014-10-19 00:03:45 +08:00
    @codeplay 唉。一生都是 iCloud 黑
    codeplay
        15
    codeplay  
    OP
       2014-10-19 00:14:38 +08:00
    @iYu
    黑就得像你这样了解清楚了,才是真的黑,黑的漂亮,黑出翔。
    canautumn
        16
    canautumn  
       2014-10-19 01:12:45 +08:00
    自从有一次day one使用icloud同步把我折腾死之后,已放弃icloud。能dropbox的都dropbox。
    zwl2828
        17
    zwl2828  
       2014-10-26 16:08:16 +08:00
    @codeplay
    @iYu

    在 “用户 ▸ 资源库 ▸ Caches” 下还有一个 “CloudKit” 文件夹,不知何用?
    iYu
        18
    iYu  
       2014-10-27 14:26:54 +08:00
    @zwl2828 看了一眼就是CloudKit的缓存啊。 CloudKit 和 之前的 iCloud 怎么说呢。 可以完全看作是两个东西 CloudKit 更像 Parse类的服务。
    merrillyeung
        19
    merrillyeung  
       2015-05-31 16:17:21 +08:00
    反正我很不情愿看到我的iCloud Drive里有那么多app的单独文件夹
    我是希望我的iCloud Drive跟Dropbox一样,上面只有我想要放的文件夹
    但是我又不敢乱删......
    zikko8888
        20
    zikko8888  
       2016-10-22 11:31:50 +08:00
    那想请问下怎么让 app 支持 iCloud Drive 呢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   929 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 21:26 · PVG 05:26 · LAX 13:26 · JFK 16:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.