iOS 12 Xcode 10应用程序:openURL:options:崩溃

5

我最近注意到我的应用在上传到Appstore时出现了一些问题,导致出现警告:

无效的文档配置 - 基于文档的应用程序应该支持文档浏览器(UISupportsDocumentBrowser = YES)或实现原地打开(LSSupportsOpeningDocumentsInPlace = YES/NO)。请访问https://developer.apple.com/document-based-apps/了解更多信息。

我的应用程序响应其plist中设置的自定义扩展名“文档类型”,并且在iOS 12/Xcode 10之前一直工作正常。

当在.plist中将“支持原地打开文档”设置为YES,“支持文档浏览器”设置为NO时,它会崩溃并显示以下消息:

“应用程序具有LSSupportsOpeningDocumentsInPlace键,但在委托上没有实现application:openURL:options:”

我的应用程序支持iOS 8及更高版本,并且响应以下内容:

(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

在我的AppDelegate中。

当我添加新的

- (void)openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenExternalURLOptionsKey, id> *)options completionHandler:(void (^)(BOOL success))completion 

它仍然会崩溃并显示以上错误。


2
你按照崩溃错误信息中所述实现了- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options;吗?那不是你实现的那个。 - Larme
让我来检查一下。 - martin010
是的,我的错..这个可以工作,但是它创建了一个新问题...当从iCloud驱动器中点击文件时,现在会出现257(访问被拒绝)错误..而在之前的iOS (<12.0)中,它可以正常工作。 - martin010
1个回答

16

将此代码添加到您的应用程序委托中:

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options {
    return YES;
}

自iOS 12起,如果您还在info.plist中添加了LSSupportsOpeningDocumentsInPlace,则需要此操作。


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