UIDocumentPickerViewController 因缺少 iCloud 权利而崩溃

UIDocumentPickerViewController crashes due to missing iCloud entitlement

我在我的 iOS 应用程序中使用 UIDocumentPickerViewController 来允许用户打开外部文件。我已将相关的 iCloud 权利添加到我的应用程序包中,大部分时间一切正常。

但是,有时文档选择器会崩溃,抱怨应用程序缺少此 iCloud 权利。我通过实验发现,当发生这种情况时,[NSFileManager defaultManager].ubiquityIdentityToken 的值通常为零,因此我通过检查 ubiquityIdentityToken 作为临时措施来保护我对文档选择器的调用。

任何人都可以阐明这里可能发生的事情,以及我可以做些什么来避免这次崩溃?这似乎完全超出了我的控制范围。

我的应用程序也出现了这种情况——我只想使用文件提供程序功能,并不特别支持 iCloud Drive。

我无法解释为什么它似乎与 iCloud 失去联系,但这不是 "crash" -- [[UIDocumentPickerViewController alloc] init___] 抛出异常,您可以使用try/catch 块。也就是说,我怀疑您的应用程序因 "uncaught exception" 而崩溃——如果您发现它,您可以给出一条错误消息。

这可能是用户盗版造成的。这可能会导致应用程序拥有无效的 iCloud 授权,进而会使 UIDocumentPickerViewController 抛出异常。所以这不是 UIKit 中的错误,它在做正确的事情。

捕获异常可能会避免应用程序崩溃,但我们可能不应该帮助盗版者,对吗?