提问者:小点点

没有读取iCloud驱动器文件的权限


我正在尝试让我的应用程序打开iCloud驱动器文件,当用户点击苹果“文件”应用程序中的文件,然后选择我的应用程序查看它时。一切都设置得很好,这样应用程序就会被打开,当用户点击文件时就会被通知。但无法打开该文件,错误是应用程序没有这样做的权限。

我的应用程序的中的“支持在适当位置打开文档”设置为“是”。这意味着URL指向应用程序外部的iCloud目录,这很可能是问题的原因。如果我将其设置为“否”,那么URL就是应用程序内文件的副本,一切正常工作。但应用程序需要该设置为“是”。

我已经验证过了,这个文件确实存在于手机上。

有人知道怎么做吗?

我的方法当前类似于:

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
    NSLog(@"path=%@", url);
    NSError *error = nil;
    NSData *data = [[NSData alloc] initWithContentsOfURL:url options:0 error:&error];
    NSLog(@"error=%@", error);
}

给出的错误为:

错误domain=nscocoaerrordomain code=257“无法打开文件kili.gpx,因为您没有查看该文件的权限。”UserInfo=nsFilePath=/private/var/mobile/library/mobile documents/ComAppleCloudDocs/kili.gpx,NsUnderlyingError=0x283AC83F0 Error Domain=nsPosixErrordomain Code=1“不允许操作}


共1个答案

匿名用户

我找到了解决办法。您需要使用:

[url startAccessingSecurityScopedResource];
NSError *error = nil;
NSData *data = [[NSData alloc] initWithContentsOfURL:url options:0 error:&error];
[url stopAccessingSecurityScopedResource];