App Store Connect 警告 - 无效的文档配置。

69

我已经将一个单视图Swift iOS应用程序提交到App Store Connect。该应用程序不是基于文档的。

应用程序上传成功,但是我从苹果的一封电子邮件中收到了以下警告。我仍然可以通过Test Flight测试应用程序,但我想消除这个警告。

"无效的文档配置-基于文档的应用程序应支持文档浏览器(UISupportsDocumentBrowser = YES)或实现就地打开(LSSupportsOpeningDocumentsInPlace = YES/NO)。"


1
@rmaddy 我不是针对iOS 12。这会有什么区别吗?在“信息”下的“文档类型”部分中,它显示没有文档类型。 - Jared Barden
嗯,我可能错了。前几天我在Xcode 10中第一次构建使用Xcode 9制作的应用程序时看到了类似的警告,所以我认为会出现这种情况。但是现在我没有看到那个消息了。 - rmaddy
2
我今天也遇到了这个问题。在构建处理步骤中出现了一些问题。我们根本没有实现UIDocuments。 - subodh1989
@subodh1989 确定。 - Jared Barden
1
昨晚我也第一次收到了这个警告。 - Aaron Halvorsen
显示剩余6条评论
7个回答

33

我遇到了同样的问题,虽然我在上一个版本的应用程序中几乎没有更改任何内容,但我不知道为什么会出现这个问题。

无论如何,我的应用程序不支持文档浏览器,因此错误消息的前半部分不适用。这让我只需要处理第二部分。 我查阅了 LSSupportsOpeningDocumentsInPlace 的文档,但仍然不清楚它是如何工作的,所以我决定尝试两种选项。 我的应用程序支持自己的文档类型,当用户打开一个适当的文件时,iOS 显示一个包含“复制到Leio”(我的应用程序)选项的操作表。将 LSSupportsOpeningDocumentsInPlace 设置为YES 后,iOS 将不再显示该操作表;它只会打开我的应用程序并且什么也不做。因此我将其设置为NO; 现在应用程序和以前一样工作,并且我不再收到那个错误消息。如果您不处理任何文档类型,我认为您可以以任何方式设置该选项。


编辑: 关于该选项还有一些更多信息 在这里

所以这里就是答案。如果你的应用程序要编辑文档,它会编辑原始文档还是复制一份并进行处理呢?请相应地设置选项。如果你真的没有这样做的话,我猜将选项设置为NO可能是最安全的选择,而当我完全没有设置该选项时,我的应用程序就是这样运作的。


当我没有提到LSSupportsOpeningDocumentsInPlace或UISupportsDocumentBrowser,但在文档类型中提到(如png、pdf等),另一个应用程序中的共享操作表显示“复制到MyApp”,而当我将LSSupportsOpeningDocumentsInPlace设置为YES时,操作表显示“在MyApp中打开”当MyApp被打开>在打开URL方法中,URL指向文档而不是文档的副本,无法访问相同的文档。 - Rajesh Rs
@RajeshRs 这很奇怪...对我来说绝对不是这样的。‍♂️ - dbmrq
@RajeshRs 哦,你说得对,实际上我写反了,我的意思是将选项设置为NO会导致“复制到MyApp”! - dbmrq
LSSupportsOpeningDocumentsInPlace=YES,当在我的应用中打开电子邮件附件时,我的应用程序卡在启动画面。LSSupportsOpeningDocumentsInPlace=NO,一切又恢复正常了!谢谢! - Ed of the Mountain
1
这个答案基本上是正确的。需要注意的重要事项:
  • 如果您正在处理文档,则需要将LSSupportsOpeningDocumentsInPlace设置为YES,但您必须实际支持它:您不能将文件视为副本(即在完成后不删除它!)
  • 如果LSSupportsOpeningDocumentsInPlace为YES,则会获取安全范围内的文档URL。观看有关构建基于文档的应用程序的WWDC会话。
  • 如果您不处理文档,请删除空的CFBundleDocumentTypes键。
- jfortmann

14

由于您的应用程序不是基于文档的,只需在您的属性列表中设置UISupportsDocumentBrowser和/或LSSupportsOpeningDocumentsInPlace参考文档)为NO。这应该解决警告。

我曾经遇到过与应用商店连接警告相同的问题。将这两个键更改为NO并重新提交后,警告消失了。


2
感谢您的回复。我的应用程序支持文档复制,因此我可以通过在Info.plist中添加以下两个内容来修复警告:UISupportsDocumentBrowser LSSupportsOpeningDocumentsInPlace - Abhilasha

13

典型要求

如果您的应用程序不是基于文档的(如果您收到此新警告,则通常情况下会是这种情况),并且如果您已经在文档目录中打开文件,那么您所需要的只是:

LSSupportsOpeningDocumentsInPlace = YES

支持就地打开文档


如果您不是就地打开文档(即创建副本),或者当然,如果您希望支持文档浏览器,如@rivera的评论所示,则此答案不适用。


1
我认为这个答案完全不正确。请参考LSSupportsOpeningDocumentsInPlace。当应用程序从其他应用程序打开文件时,应该将此设置(YES或NO)添加到应用程序中。将其设置为YES需要对文件进行特殊处理(请参见链接)。 - rmaddy
@rmaddy:在您看来,当应用程序不支持文档浏览器时,正确的修复方法是什么?当然,UISupportsDocumentBrowser = YES 不可能是正确的路线,或者说它是吗? - SwiftArchitect
在我的应用程序中,虽然不支持文档浏览器,但支持从其他应用程序(如电子邮件附件等)打开文件。我只需添加LSSupportsOpeningDocumentsInPlace并将其值设置为NO。我对你的回答措辞有问题,因为你暗示LSSupportsOpeningDocumentsInPlace与应用程序使用自己的文档文件夹有关,这是不正确的。它与你的应用程序被启动以打开/复制来自另一个应用程序的文件有关。 - rmaddy

8
如果您的应用程序中使用UIDocumentInteractionController,请设置
UISupportsDocumentBrowser = YES

如果在您的项目的Info.plist中没有设置,请设置;否则,请设置。

UISupportsDocumentBrowser = NO

谢谢 :) 庞 - Mohammad Parvez
我有同样的问题,并且通过设置 "UISupportsDocumentBrowser = YES" 解决了。 - dobiho

3

看起来如果在您的应用程序的Info.plist中有CFBundleDocumentTypes,即使数组为空,当您提交应用程序时也会触发此警告。如果您的应用程序不支持任何文档类型,请删除该键,您就不会收到警告。


1

以下是在Xcode 13中找到设置的位置:

Finding key in plist

Setting key in plist


0

最近我在上传应用到 TestFlight 时也遇到了同样的问题,以下解决方案对我有效:

在你的应用的 Info.plist 文件中,将 UISupportsDocumentBrowser 键设置为 YES,声明你的应用支持文档浏览器。

更多信息,请参考设置文档浏览器应用


5
我不想要一个基于文档的应用,除非我误解了你的回答。 - Jared Barden
我知道我也没有使用基于文档的应用程序,但是我的应用程序中显示了一些文档,今天突然开始上传TestFlight时出现了这个错误。 - Bappaditya
2
我真的不想设置这个标志:"在您应用的 Info.plist 文件中,UISupportsDocumentBrowser 键设置为 YES,声明应用支持文档浏览器。具体而言,此键允许其他应用程序打开和编辑存储在应用的“文档”目录中的文件。它还允许用户在设置中设置应用程序的默认保存位置。" - Rivera
@Rivera,你可以从Info.plist中删除CFBundleDocumentTypes以消除此错误。 - alfwatt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接