问题标签 [icloud-drive]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
236 浏览

objective-c - 将 PersistentStoreCoordinator 从本地迁移到 iCloud 时数据重复

我正在使用核心数据进行 iCloud 同步工作正常。现在我想添加开/关开关(迁移商店)。如果我将商店迁移到 iCloud 到本地工作正常,但如果迁移回 iCloud 数据会重复。即使我尝试在迁移之前删除无处不在的容器也无济于事。我无法进行重复数据删除,因为在重复数据后未调用“StoreDidImportUbiquitousContent”方法。

下面的代码:

上面的代码工作正常。

// 迁移回 iCloud

// fileURL 是本地文件 url

现在数据在迁移之前得到了重复。我试图删除无处不在的容器也没有帮助。

0 投票
1 回答
199 浏览

objective-c - 让 Ensembles Idiomatic OSX App 与 iCloud 同步

我尝试为Ensembles我们已经工作和同步的 iOS 应用程序的 Cocoa 应用程序实现 iCloud 同步。因为我在那个 Cocoa 应用程序中遇到了问题,所以我想尝试使用 Ensembles 示例应用程序。

所以我尝试让 OSX 的惯用应用程序通过 iCloud 同步。但我总是遇到同样的错误,我没有登录 iCloud,因为

总是为我回来nil

我在我的 Macbook 上登录 iCloud 并同步,例如 DayOne 在 iPhone 和 Macbook 之间运行良好。因此,未登录可能不是问题。问题是,为什么FileManager不返回标识符?

我已经为此烦恼了三天,它已经工作了一段时间并且因为“我不知道”而坏了。我~/Library从 TimeMachine 恢复了我的文件夹,然后它又工作了一段时间,但又坏了。然后我创建了一个新的操作系统用户并为 iCloud 使用了另一个 Apple-ID,它工作了一段时间后又坏了。

我真的有点困惑,不确定它是否与签名、沙盒、供应......或其他什么有关。

那么,我做了什么?

我打开了Ensembles 1.4 Idiomatic项目,在Target-General-Tab 上我更改了BundleIdentifier,启用MacAppStore Signing并选择了我们的DevTeam.

Capabilities-Tab 我启用AppSandboxiCloud Capabilities,指定自定义容器并选择新创建的 iCloud 容器,

BuildSettings-Tab 上,我为我们的 BundleID 选择了Mac DeveloperCodeSigningIdentity 和MacTeamProvisioningProfile。(我只会发布截图,但没有足够的声望点。)

此外,禁用沙盒功能也无济于事。

有没有人知道或知道我错过了什么?~/Library必须删除其中的任何“魔术”文件夹吗?登录和退出 iCloud?删除 iCloud 服务器上的容器?还是我必须重新开始App-Id-Certificate--ProvisioningProfile麻烦,才能解决这个问题?

会不会是我的 iCloud 帐户已损坏?

任何帮助表示赞赏,在此先感谢您。

0 投票
0 回答
273 浏览

ios - Why user's iCloud Drive need to turn on for CloudKit based app uses only public container?

To be able to fetch user record ID in app uses only public container, there is more requirements from my experience:

  1. user should be logged in to iCloud
  2. iCloud Drive should be turned on for app
  3. be online

Why second condition is required?

0 投票
1 回答
858 浏览

ios - iOS 应用在设备设置页面禁用 iCloud 驱动器(关闭)并获取 iCloud persistentStore

我正在开发带有 iCloud 同步的 iOS 应用程序。我使用支持 iCloud 同步的核心数据存储数据,然后如果我在设备设置中关闭 iCloud 驱动器,我的应用无法读取 UbiquityContainer 中存储的数据。现在我想在用户 iCloud 驱动器关闭时将 iCloud 持久性存储数据迁移到本地/其他地方。但我无法获得 iCloud 持久性存储。我尝试了以下方法不起作用。

结果返回零。因为我无法获得无处不在的商店的确切 storeURL。

给出 nil 而不是 url。有没有办法在关闭 iCloud 驱动器后获取 iCloud 商店。因为我无法显示存储在数据中。

0 投票
0 回答
1307 浏览

icloud - iCloud Drive 通过 NSMetadataQuery 列出目录和文件

我已经构建了一个名为“rmc”的启用 iCloud 的应用程序。我的应用程序现在可以将文件上传到 iCloud Drive 并通过 NSMetadataQuery 获取元数据。但是 NSMetadataQuery 的结果仅包括我的 APP 容器中的文件。请参阅此链接:https://developer .apple.com/videos/wwdc/2015/?id=234,这是一个文件,据说NSMetadataQuery可以获取其他APP容器中的文件。我想要的是我可以获取iCloud Drive中的所有文件,就像应用程序“文档5”和“云精简版”,他们可以获取所有文件。 在此处输入图像描述

请看这张图。是APP“文档5”的UI。这个APP可以获取iCloud Drive的根目录信息。但是我的应用只能获取“rmc”文件夹中的文件。我也想获取所有iCloud Drive 中的目录和文件。就像“文档 5”一样。我希望有人可以帮助我并理解我的问题,因为我的英语很糟糕。谢谢!!!这是我的代码:

此方法使用 NSMetadataQuery 从 iCloudDrive 获取元数据。我设置了 searchScopes = [NSArray arrayWithObjects:NSMetadataQueryUbiquitousDocumentsScope,NSMetadataQueryAccessibleUbiquitousExternalDocumentsScope,nil];

这是 Apple 关于此值的文档: NSMetadataQueryAccessibleUbiquitousExternalDocumentsScope 搜索应用程序容器外的文档。此搜索可以找到用户之前使用文档选择器视图控制器打开的 iCloud 文档。这使您的应用程序可以再次访问文档,而无需直接的用户交互。结果的 NSMetadataItemURLKey 属性返回安全范围的 NSURL。有关使用安全范围 URL 的更多信息,请参阅 NSURL 类参考中的安全范围 URL。

0 投票
1 回答
300 浏览

macos - NSWorkspace openURL 未使用文件类型的默认应用程序打开存储在 iCloud Drive 中的文件

在我的应用程序中,我使用以下代码告诉 Mac OS X 打开指定 URL 的文件:

[[NSWorkspace sharedWorkspace] openURL:fileURL];

fileURL存储在我的应用程序的 iCloud Drive 容器文件夹中的文件的 URL在哪里。

在 El Capitan 中,似乎当一个文件被放置在应用程序的 iCloud Drive 容器中时,该文件的所有者更改为拥有该 iCloud Drive 容器的应用程序。

在我的情况下,这意味着我自己的应用程序被要求为存储在我的应用程序的 iCloud Drive 容器中的文件打开任何文件类型。如果您获取相同的文件并将其移动到桌面,原始默认应用程序将正确启动。

有没有其他人看到 El Capitan 的这种新行为?

我已经为它提交了一个雷达:rdar://22213595

希望有人找到了解决方法。如果文件存储在 iCloud Drive 中,则对于使用 NSWorkspace 的 openURL 命令的任何应用程序都会出现问题。仅仅因为我从我的应用程序链接到一个文件,并不意味着我的应用程序应该负责打开它。例如,iTunes 应该打开音乐文件,Preview 应该打开 PDF,Excel 应该打开 .xlsx 文件,当然除非用户另有说明。

文件位于某人驱动器上的哪个位置以确定使用哪个应用程序打开它并不重要。

0 投票
1 回答
1407 浏览

ios - 我是否必须下载所有 iCloud 文件才能生成缩略图?

我正在枚举 iCloud 驱动器元素NSMetadataItem并将它们存储在一个数组中。

文件在那里:通过查看 OS X 上的 iCloud 文件夹以及使用UIDocumentPicker.

稍后在代码中,我尝试使用以下方法检索此类元素的缩略图:

我在处理程序中收到此错误:

无法生成缩略图,错误:Error Domain=NSURLErrorDomain Code=-1100 “在此服务器上找不到请求的 URL。” UserInfo={NSLocalizedDescription=在此服务器上未找到请求的 URL。, NSUnderlyingError=0x15f82b2a0 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}

你说的问题出在 URL 上,但是 URL 是直接从“NSMetadataItem”中提取的,并且具有以下形式

file:///private/var/mobile/Library/Mobile%20Documents/iCloud~com~myCompany~myApp/Documents/0%20-%20intro.mov

...在这种情况下,电影被称为0 - intro.mov

我尝试了 3 种其他方法来下载缩略图。没有工作。

突破

我现在发现我必须将 iCloud 驱动器上的所有文件(使用startDownloadingUbiquitousItemAtURL:error:)下载到设备才能生成它们的缩略图,这似乎很疯狂。想象一下远程拥有数 GB 的视频,并且必须下载所有文件以显示其缩略图。

它必须以另一种方式存在。证据是UIDocumentPicker显示了 iCloud 上所有视频的缩略图,而无需下载它们。

有什么线索吗?

0 投票
4 回答
27142 浏览

swift - Swift 将文档文件写入/保存/移动到 iCloud 驱动器

我已经尝试了两天多将文件写入 iCloud 驱动器。我尝试直接在本地编写一个简单的文本文件,然后使用 UIDocumentMenuViewController 等移动它。我的代码没有任何错误并逐步通过调试器,它看起来很成功,但是当我检查文件是否存在或至少 iCloud 目录,那里什么都没有。我在模拟器和我的 iPhone 上都进行了尝试,触发了 iCloud 同步,以及我能想到的一切。

我的主要目标是简单地将一个文本文件写入 iCloud 驱动器,稍后将是“数字”文件

我已经设置了我的 plist 文件和我的权利:

如以下所述,我还增加了捆绑版本:Save iOS 8 Documents to iCloud Drive

我已经尝试了几十个教程,但没有运气。我的最新代码基于此示例:https ://medium.com/ios-os-x-development/icloud-drive-documents-1a46b5706fe1

这是我的代码:

感谢您为此花时间。

干杯,保罗

在上面的代码之后,我在我的 iphone 上运行了一些代码:

它打印出我的文本文件的路径:file:///private/var/mobile/Library/Mobile%20Documents/iCloud~com~paul~c~myApp/MyTextFile.txt

我的文件在那里,我只是在 iCloud 驱动器上看不到它。

0 投票
1 回答
2584 浏览

ios - 如何在 OS X 应用程序提供的 iOS8 上公开和检索 iCloud Drive 中的文件

我可以使用具有相同 Apple ID 的通用通用标识符(例如:iCloud.com.mycompany.CommonFiles)以编程方式将文件从 OS X 应用程序 (10.10) 和 iOS 应用程序 (8.4) 存储到 iCloud Drive。

在 OS X 应用程序中,我可以识别或检索 iCloud Drive 中的所有文件,无论它们来自何处(本地或远程),使用“通用”普遍 ID 和 NSFileManager contentsOfDirectoryAtURL: 等。

然而,在 iOS 8 中,虽然 iOS 应用程序似乎将文件放在 iCloud Drive 中的正确位置(这样它们在 OS X Finder 中可见,并且在 OS X 中可检索),但它只能识别和检索它生成的文件- 在任何其他设备上创建的 iCloud Drive 中的文件对 iOS 应用程序是不可见的。

我必须在 iOS 应用程序中做什么才能查看和使用(以编程方式,而不是通过 UIDocumentPicker)源自同一通用普遍标识符下的 Documents 目录的所有普遍内容?

(这曾经在旧的“文档和数据”中工作 - 在 iCloud Drive 之前 - 技术中“通用”普遍性标识符以我们的公司团队 ID 为前缀 - 现在已替换为“iCloud”。一旦用户选择加入 iCloud Drive,但是,这种在 OS X 和 iOS 上的应用程序之间共享文件的方法已经丢失。)

0 投票
1 回答
794 浏览

ios - iCloud Drive / UIDocumentPicker 混淆

我正在尝试通过提供 2 个功能将 iCloud Drive 功能添加到我的 iPhone 应用程序中:

  • 将存储在 iCloud Drive 上的文档导入我的本地应用程序
  • 将文档从本地存储导出到 iCloud Drive

第一部分完成了,这很容易。我用UIDocumentPickerwithUIDocumentPickerModeImport来获取一个文件 url,我刚刚阅读它以在我的应用程序中使用该文档。

然而,第二部分让我感到困惑。如果我理解正确,我所要做UIDocumentPicker的就是使用应用程序本地商店中某些文档的文件 url实例化 a ,然后UIDocumentPicker将完成所有其余工作(= 保存到 iCloud Drive,以防用户在那里选择一个位置) .

这个对吗?因为这是我已经实现的。虽然文件显示在选择器选择的文件夹中,但它们既不会同步到我的 Mac 也不会同步到 www.icloud.com。因此,无论这意味着什么,它们似乎都以某种方式存储在“我手机上的文档选择器”中。

难道我做错了什么?我复制到 Mac 上的 iCloud Drive 文件夹中的文件完美地显示在 iPhone 的导入选择器中。