简体   繁体   English

从应用程序访问iCloud Drive文件

[英]Accessing iCloud Drive files from app

I want to have iCloud support in my app where I can store and get PDF files. 我想在我的应用程序中获得iCloud支持,我可以在其中存储和获取PDF文件。 My question is "How to access iCloud drive file without using UIDocumentPickerViewController ". 我的问题是“如何在不使用UIDocumentPickerViewController情况下访问iCloud驱动器文件”。 Actually I want to have custom files list in my app. 实际上,我想在我的应用程序中包含自定义文件列表。

I tried this code 我尝试了这段代码

- (void) getAllFilesIniCloud
{
    queryData = [[NSMetadataQuery alloc] init];
    [queryData setSearchScopes:[NSArray arrayWithObject:NSMetadataQueryAccessibleUbiquitousExternalDocumentsScope]];
    NSPredicate *pred = [NSPredicate predicateWithFormat: @"%K like '*.'", NSMetadataItemFSNameKey];
    [queryData setPredicate:pred];
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(queryDidFinishGathering:)
                                                 name:NSMetadataQueryDidFinishGatheringNotification
                                               object:queryData];
    [queryData startQuery];
}

- (void)queryDidFinishGathering:(NSNotification *)notification
{
    NSMetadataQuery *pQuery = [notification object];
    [pQuery disableUpdates];
    [pQuery stopQuery];
    [pFilesArray removeAllObjects];
    for (NSMetadataItem *item in [query results])
    {
        NSURL *url = [item valueForAttribute:NSMetadataItemURLKey];
        NSString * name = url.lastPathComponent;

        if ([[name pathExtension] isEqualToString:@"pdf"] || [[name pathExtension] isEqualToString:@"PDF"])
        {
            NSString *fileName = [url.absoluteString lastPathComponent];

            if (url && ![pFilesArray containsObject:fileName])
            {
                [pFilesArray addObject:fileName];
            }

        }
    }
    [[NSNotificationCenter defaultCenter] removeObserver:self name:NSMetadataQueryDidFinishGatheringNotification object:pQuery];

    queryData = nil;
    [pTableView reloadData];
}

and also tried the scope 并尝试了范围

NSMetadataQueryUbiquitousDataScope
NSMetadataQueryUbiquitousDocumentsScope
NSMetadataQueryAccessibleUbiquitousExternalDocumentsScope

I know this code working fine for app directory in iCloud. 我知道此代码对于iCloud中的应用程序目录运行正常。 But if user store file in iCloud in Mac or through web then my app should also enable to access this file. 但是,如果用户将文件存储在Mac上的iCloud中或通过Web存储,则我的应用程序还应该启用访问此文件的权限。

我遇到了同样的问题,请在iCloud上通过此线程进行澄清https://forums.xamarin.com/discussion/comment/283726#Comment_283726

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM