iOS 15 中的文档浏览器应用程序不断创建 iCloud 驱动器文件夹
Document browser app in iOS 15 keeps creating iCloud drive folder
我从 iOS 11(使用 UIKit/UIDocumentBrowserViewController)开始就安装了一个文档浏览器应用程序。该应用程序(我们称之为“MyApp”)用于在 iCloud Drive(and/or 在设备上,取决于在“设置”中所做的选择)中创建一个“MyApp”文件夹,文档将自动保存在该文件夹中。
将我的设备更新到 iOS 15 并重新编译后,在没有对代码进行任何更改的情况下,该应用程序似乎无法再识别其在 iCloud Drive 中的自己的文件夹。每次 opened/imported 来自应用程序外部的文件(文件、邮件等),应用程序都会在 iCloud Drive 中创建一个 new“MyApp”文件夹 并将文档保存在那里。现有文件夹重命名为“MyApp 2”(如果我尝试导入另一个文档,则重命名为“MyApp 3”、“MyApp 4”等)。
这似乎只发生在 iCloud Drive 中。如果我在“设置”中选择将文档保存在我的设备上,所有文档都会自动导入到“我的应用程序”文件夹中,就像 iOS 14 和更早版本中的情况一样。
我还尝试使用 Xcode 13 UIKit 基于文档的应用程序模板从头开始创建一个测试应用程序,行为似乎完全相同...所以它看起来像是 UIDocumentBrowserViewController 中的错误随 iOS 更新引入。
有人注意到了吗?有solution/workaround吗?是否应该提交错误报告?
感谢您的帮助。
[编辑] 如果有人感兴趣,这是使用 Xcode 模板重现问题的最简单方法:
- 在 Xcode 13.0
中创建一个新项目
- 选择iOS -> 文档应用程序
- 选择界面:故事板并创建项目(为简单起见,我们使用“MyApp”作为产品名称)
- 在启用 iCloud Drive 的设备 运行 iOS 15.0 或 15.0.1 上构建和安装 MyApp
- 在设置 -> MyApp 中保留文档存储(即 iCloud Drive)的默认设置
- 创建一个包含任何内容的文本文件并使用扩展名“exampletext”保存它(即应用程序模板使用的导入类型标识符 - 让我们称文件为“test.exampletext”)
- 将电子邮件发送到可从设备访问的收件箱,附件为 test.exampletext
- 在设备上打开邮件,长按test.exampletext并分享到MyApp
- 如果iCloud Drive中存在文件夹“MyApp”,它将重命名为“MyApp 2”;将创建一个新的“MyApp”文件夹,test.exampletext 将保存在新文件夹中
- 再次分享test.exampletext从邮件到MyApp会创建另一个“MyApp”文件夹并重命名之前的;这样可以创建任意数量的“MyApp n”文件夹,每个文件夹包含一份文档
这已在 15.2 测试版中修复。
我从 iOS 11(使用 UIKit/UIDocumentBrowserViewController)开始就安装了一个文档浏览器应用程序。该应用程序(我们称之为“MyApp”)用于在 iCloud Drive(and/or 在设备上,取决于在“设置”中所做的选择)中创建一个“MyApp”文件夹,文档将自动保存在该文件夹中。
将我的设备更新到 iOS 15 并重新编译后,在没有对代码进行任何更改的情况下,该应用程序似乎无法再识别其在 iCloud Drive 中的自己的文件夹。每次 opened/imported 来自应用程序外部的文件(文件、邮件等),应用程序都会在 iCloud Drive 中创建一个 new“MyApp”文件夹 并将文档保存在那里。现有文件夹重命名为“MyApp 2”(如果我尝试导入另一个文档,则重命名为“MyApp 3”、“MyApp 4”等)。
这似乎只发生在 iCloud Drive 中。如果我在“设置”中选择将文档保存在我的设备上,所有文档都会自动导入到“我的应用程序”文件夹中,就像 iOS 14 和更早版本中的情况一样。
我还尝试使用 Xcode 13 UIKit 基于文档的应用程序模板从头开始创建一个测试应用程序,行为似乎完全相同...所以它看起来像是 UIDocumentBrowserViewController 中的错误随 iOS 更新引入。
有人注意到了吗?有solution/workaround吗?是否应该提交错误报告?
感谢您的帮助。
[编辑] 如果有人感兴趣,这是使用 Xcode 模板重现问题的最简单方法:
- 在 Xcode 13.0 中创建一个新项目
- 选择iOS -> 文档应用程序
- 选择界面:故事板并创建项目(为简单起见,我们使用“MyApp”作为产品名称)
- 在启用 iCloud Drive 的设备 运行 iOS 15.0 或 15.0.1 上构建和安装 MyApp
- 在设置 -> MyApp 中保留文档存储(即 iCloud Drive)的默认设置
- 创建一个包含任何内容的文本文件并使用扩展名“exampletext”保存它(即应用程序模板使用的导入类型标识符 - 让我们称文件为“test.exampletext”)
- 将电子邮件发送到可从设备访问的收件箱,附件为 test.exampletext
- 在设备上打开邮件,长按test.exampletext并分享到MyApp
- 如果iCloud Drive中存在文件夹“MyApp”,它将重命名为“MyApp 2”;将创建一个新的“MyApp”文件夹,test.exampletext 将保存在新文件夹中
- 再次分享test.exampletext从邮件到MyApp会创建另一个“MyApp”文件夹并重命名之前的;这样可以创建任意数量的“MyApp n”文件夹,每个文件夹包含一份文档
这已在 15.2 测试版中修复。