向本地ios文件应用显示我应用中的特定文件夹

时间:2019-01-18 02:59:35

标签: ios swift

我有一个名为MyApp的应用,它主要是wkwebview。它已经集成到“文件”应用程序中,因此我可以import/export中的wkwebview个文件将文件下载到本地计算机或将文件上传到服务器。

最后,我尝试在我的应用程序中构建一个UIbutton,以使我的用户可以在我存储所有内容的文件夹中跳转到“文件”应用程序。与其在我的应用程序中构建一个完整的FileProviderUI,不如希望按钮使用户进入“文件”应用程序,并导航到该文件夹​​。

当我给出UIDocumentInteractionController作为目录的路径并进行共享打开以显示它时,什么都没有发生。没有错误,一点都没有。我只希望用户能够跳进“文件”应用程序内名为MyApp的文件夹。

我认为这将非常简单。添加FileProvider扩展名或FilePRoviderUI扩展名似乎只是多余的操作,只是将用户跳到该文件夹​​中并让他与Files应用程序交互以执行他喜欢的任何事情-打开/删除/修改文档。

即使我告诉他们文件已保存在Files App中,我也要假设用户不够聪明才能知道,以便他们在脱机时可以直接进行交互!

        let documentsUrl =  FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!    
        // Just jump to the folder forcing Files app to open this                    
        let viewer = UIDocumentInteractionController(documentsUrl)

        viewer.delegate = self
        viewer.presentPreview(animated: true)

什么都没有呈现给用户,什么也没有发生。点击按钮只是悄无声息。

2 个答案:

答案 0 :(得分:0)

我想我明白了。有一种特定的URL格式会自动打开“文件”应用,它是shareddocuments://-这是一个简单的功能,似乎可以轻松实现这种安静。

    func openSharedFilesApp() {
    let documentsUrl =  FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
    let sharedurl = documentsUrl.absoluteString.replacingOccurrences(of: "file://", with: "shareddocuments://")
    let furl:URL = URL(string: sharedurl)!
    UIApplication.shared.open(furl, options: convertToUIApplicationOpenExternalURLOptionsKeyDictionary([:]), completionHandler: nil)
}

答案 1 :(得分:0)

谢谢,维杰。在Objective-C中。

- (void) openSharedFilesApp
{
    NSArray<NSString *>* directories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);     // yes = expand tilde
    NSURL* url = [NSURL fileURLWithPath:directories.firstObject];
    NSString* sharedDocumentPath = [url.absoluteString stringByReplacingOccurrencesOfString:@"file://" withString:@"shareddocuments://"];
    NSURL* sharedDocumentURL = [NSURL URLWithString:sharedDocumentPath];
    [UIApplication.sharedApplication openURL:sharedDocumentURL options:@{UIApplicationOpenURLOptionUniversalLinksOnly: @(NO)} completionHandler:^(BOOL success) {
    }];
}