如何在iOS Safari中打开文件包?

时间:2014-01-21 09:40:33

标签: ios safari

我想在Safari中打开App bundle中的文件,就像从Safari中的服务器打开一个文件一样。

例如:像这样在Safari中打开pdf文件:

NSURL *urlNeedToOpen = [NSURL URLWithString:@"http://www.education.gov.yk.ca/pdf/pdf-test.pdf"];
[[UIApplication sharedApplication] openURL:urlNeedToOpen];

我将pdf-test.pdf文件下载并复制到我的包中并尝试打开:

NSURL *urlNeedToOpen = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"pdf-test" ofType:@"pdf"]];

[[UIApplication sharedApplication] openURL:urlNeedToOpen];

但没有任何反应,我可以通过UIDocumentInteractionController预览这个pdf文件,如下所示:

UIDocumentInteractionController *docController = [UIDocumentInteractionController interactionControllerWithURL:urlNeedToOpen];
docController.delegate = self;
[docController presentPreviewAnimated:YES];

但那不是我想要的,我想通过Safari直接打开文件包。我可以吗?

1 个答案:

答案 0 :(得分:2)

基本上,你不能在应用程序的另一个应用程序的捆绑资源中打开本地文件URL - 甚至是Safari。原因是资源位于应用程序的沙箱中 - 它会侵犯iOS的安全框架,以便访问它。这是设计工作(除了canOpenURL:应该更明显,没有其他应用程序可以打开它。你可能想考虑在https://developer.apple.com/bug-reporting/)提交错误。

如果您必须在应用程序包中分发资源,您可能需要考虑在托管文本视图或webview的View Controller中打开本地资源。

相关问题