问题标签 [icloud-documents]

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 回答
202 浏览

ios - 应用程序有哪些不同的方式将数据存储在 iCloud 中,并且可以从 iCloud 管理存储中看到

应用程序在 iCloud 中存储数据似乎有几种不同的方式(iCloud Drive Documents、Core Data with iCloud Sync、CloudKit Private Databases、Key Value Pairs 等),但我不确定是否仅此而已。这些不同类型的 iCloud 存储中的哪一种出现在 iCloud“管理存储”菜单中(即某些应用根本不显示,而其他应用列出“文档和数据”,而其他列出可以单独删除但不显示的文件) t 出现在 iCloud Drive 中)?我试图弄清楚,但文档对此有点含糊。

0 投票
2 回答
2044 浏览

ios - 我无权写入 iCloud 文件夹

我正在尝试将文件写入 ubiquitous 文件夹,我可以运行查询并且一切正常,我看到了文件,但是如果我尝试设置本地文件,我会收到此错误:

Video.mp4 存在于文件夹中,有什么问题?

这是保存文件的代码:

我用这个:

0 投票
2 回答
2644 浏览

ios - 在 iOS 中访问 iCloud 文档

我正在尝试在 iOS 应用程序中访问已放入 Mac 上的 iCloud 文档文件夹中的文档,但我不知道如何操作。

我在我的应用程序功能中启用了 iCloud Documents,并且我知道我桌面上的 Documents 文件夹中有文件..

我显然在这里遗漏了一些东西..

提前致谢

0 投票
2 回答
595 浏览

ios - 合并 iCloud 冲突的 UIDocument 更改

我现在花了几天时间试图找到或自己弄清楚如何在通知UIDocumentStateChangedNotification触发并且文档的状态设置了UIDocumentStateInConflict时以编程方式合并UIDocument更改。

我能找到的所有示例(Apples、Ray Wenderlich 等)都详细说明了提示用户选择版本方法。我找不到任何演示以编程方式合并的正确方法。这让我很担心,因为它让我认为它太不稳定而无法信任并且通常被避免作为解决方案?到目前为止,我在这方面的经验加强了这一立场。

让我详细说明我尝试中的每个问题区域。

1)为了合并的目的,读取当前文档内容和NSFileVersion冲突版本的正确方法是什么?使用任何带有完成块的东西在同步时真的很麻烦。UIDocumentopenWithCompletionHandler:并不想使用。事实上,作为一项规则,只读UIDocument的推荐方法是什么?为什么打开文档只是为了阅读?我试过使用UIDocumentreadFromURL:这对当前文档很好,但如果我尝试在任何NSFileVersion上使用它的冲突版本它读取当前版本,而不是 URL 上的版本(我使用 MacOS 终端深入挖掘 ../data/.DocumentRevisions-V100/PerUID/... 文件以确认这一点。)。对于冲突版本,它对我有用的唯一方法是直接读取访问这些文件。(例如NSData initWithContentsOfFile:

2)一旦读入文件的变化,并设法合并,如何正确保存合并?这个在我能找到的任何地方都没有记录。我成功的唯一方法是重新使用NSFileVersion的冲突文件之一,覆盖它,然后使用UIDocumentreplaceItemAtURL:使其成为最新的。在使用replaceItemAtURL:之后,我也尝试使用UIDocumentrevertToContentsOfURL:但它只是崩溃而没有给出任何理由。由于没有它合并似乎可以正常工作,因此我并不担心,但我认为我会将其作为细节包含在内。

3) iPhone/iPad 模拟器 (V10.0) 在我重新启动应用程序之前不会通知冲突。这是可以预料的还是我做错了什么?我问是因为在模拟器的Debug菜单下有Trigger iCloud Sync可以同步,但直到下一次应用程序重新启动时才会标记冲突。这只是模拟器的限制吗?

谢谢,

0 投票
1 回答
299 浏览

ios - 没有收到 NSMetaDataQuery 更新通知

我有以下代码:

并且:

因此,上述“曾经工作”,跨两个设备。现在,两个设备都没有得到 queryDidUpdate() 调用。我试过删除应用程序,打开和关闭云权限,登录和退出 iCloud,重新启动设备。两个设备都可以读取它们的“冻结”云,但不会传播任何数据,也不会传递实时阶段通知。几天来,我确实在两台设备之间进行了一些繁重的测试(传输数百 MB 的图片)。而现在,一切都停止了。

每个设备的云令牌完全不同,但都是稳定的。使用 UIDocument 存储到云端。

我错过了什么吗?我需要在 iCloud 中重置什么吗?有没有我可以在某处检查的状态?

我不想更改应用程序包 ID 来摆脱困境……我想找到根本问题。感谢您的任何提示!

0 投票
1 回答
156 浏览

swift4 - 无需用户从 DocumentBrowser 中选择即可呈现 iCloud 文件

当我的应用程序首次启动时,我需要加载一个 iCloud 文件。我希望应用程序显示从应用程序关闭时最后打开的文件,因此如果最后打开的文件是 iCloud 文件,这就是我遇到问题的地方。

首先让我声明,如果最后打开的文件在我的文档目录中而不是在 iCloud 中,那么我可以毫无问题地打开它。我不能只存储完整的 url 路径,因为我的应用程序的沙箱目录可以在重新打开应用程序时更改,所以我将最后打开的文件相对于最后打开的文件的文档目录的路径附加到我的 documentDirectory 路径在运行时通过这样做:

然后这个

(如果这是一种不好的做法,请告诉我!)

现在回到主要问题。对于 iCloud 文件,保存 url 是一个问题,但问题不是沙盒目录已更改,而是因为此处提到的内容,我无权访问该 url:如何访问 iCloud Drive 中的文件从我的 iOS 应用程序中?它说

当用户选择应用程序沙箱之外的目的地时,文档选择器会调用委托的 documentPicker:didPickDocumentAtURL: 方法。系统将您的文档副本保存到指定的目的地。文档选择器提供副本的 URL 以指示成功;但是,您的应用无权访问此 URL 引用的文件。

所以我的问题是,如果它是 iCloud 文件,我如何加载最后打开的文件?documentBrowser 可以访问它,但这是因为用户选择了屏幕上的文件,并且出于保护原因我无法在代码中模拟它吗?预先感谢您的任何帮助!

0 投票
2 回答
548 浏览

ios - 对于我的 iOS 笔记应用程序来说,这是最好的 iCloud 方法,其中包含文本、照片、音频和绘图笔记。我应该选择文档存储还是 CloudKit?

我正在开发一个 iOS 笔记应用程序,用户可以在其中添加图像、文本、音频和绘图笔记。我想在多个设备之间实现 iCloud 同步。在 3 个选项(键值、文档存储、CloudKit)中,我应该选择哪一个?我也想实现用户之间的笔记共享(协作)。我目前正在使用核心数据作为我的数据库。

0 投票
0 回答
215 浏览

ios - UIDocumentPickerViewController 在 iOS 10 中失败

我实现了一个可在 iOS 11+ 上运行但在 iOS 10 上失败的文档选择器。

这是它崩溃的代码

“由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'应用程序初始化文档选择器缺少 iCloud 权利。com.apple.developer.icloud-container-identifiers 设置”

我已经经历过这个,它因同样的错误而崩溃。我已经完成了其中的所有要求,但此时仍然崩溃,但仅在 iOS 10 上,而不是在任何更高版本上。

是否有一些 plist 键,没有明确提到我需要设置以摆脱它?

0 投票
1 回答
1011 浏览

ios - 应用程序的 iCloud 文档目录未出现在文件应用程序的 iCloud 目录中

我的 iPhone 应用程序的 Document 文件夹与 Files 应用程序上的 iCloud 位置存在问题。我的应用程序的文档文件夹出现在文件应用程序的设备端,但它没有出现在文件应用程序的 iCloud 位置。iCloud 仪表板清楚地显示了使用我的应用程序创建为默认容器的 iCloud 容器,但它没有出现在 iPhone 的文件应用程序上。如何让我的 iPhone 应用程序的文档文件夹出现在文件应用程序的 iCloud 位置?

我已经iCloud在 XCode for iPhone 应用程序项目中安装了默认容器。我将UIFileSharingEnabledas YES 和LSSupportOpeningDocumentsInPlaceas YES 添加到我的 plist 文件中。所以我可以在 iPhone 的文件应用程序的设备端看到我的应用程序的文档文件夹,但在 iCloud 驱动器端看不到该文件夹​​。

我已将 iCloud 项目添加到苹果开发者帐户上此应用程序的配置中,因此我可以编辑其功能并启用所有 iCloud 复选框。

UbiquityContainer所以我可以在 XCode 上获取 url 。

但是当我尝试使用iCloudDocumentSync库的iCloud.shared()?.checkAvailability()功能时,它说 iCloud url 为零,因此无法获得 iCloud 可用性。

我希望您能帮助我配置我的 App Project 的 Cloud Settings,以便我的 App Documents Directory 出现在 iCloud Drive 上,并且我可以正确使用 CloudKit。谢谢你。

0 投票
0 回答
275 浏览

react-native - 有没有办法/库将文件存储在 React Native 中应用程序的 iCloud 容器中?

寻找一种将文件(领域数据库)存储到 iCloud 以进行备份的方法。用户可以创建和恢复这些备份。

我尝试过使用 RNFS (react-native-fs)。但是在寻找读取 iCloud Contianer 位置的方法时被卡住了。我认为 RNFS 无法自行获取 URLForUbiquityContainerIdentifier。

最终,我想让用户将完整的领域数据库备份到 iCLoud(如果可能的话,Google Drive),并在设备更改时恢复备份。

我知道 Realm 有同步功能,但现在我想为用户提供一个免费的解决方案来备份他们的数据。