没有读取 iCloud 云盘文件的权限



当用户点击Apple"文件"应用程序中的文件并选择我的应用程序进行查看时,我正在尝试使我的应用程序能够打开iCloud云盘文件。一切都设置良好,以便打开应用程序,并在用户点击文件时发出通知。但是无法打开该文件,但错误是应用程序没有权限这样做。

我的应用在Info.plist中将"支持就地打开文档"设置为"是"。这意味着URL指向应用程序外部的iCloud目录,这可能是问题的原因。如果我将其设置为 NO,则 URL 是应用程序内文件的副本,一切正常。但应用需要该设置为"是"。

我已经验证了,文件实际上实际存在于手机上。

有人知道如何做到这一点吗?

我的openURL:方法目前如下所示:

- (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);
}

给出的错误是:

错误域=

NSCocoa错误域代码=257"文件"Kili.gpx" 无法打开,因为您没有查看它的权限。 UserInfo={NSFilePath=/private/var/mobile/Library/Mobile Documents/com~apple~CloudDocs/Kili.gpx, NSUnderlyingError=0x283ac83f0 {Error Domain=NSPOSIXErrorDomain Code=1 "操作不允许"}}

我找到了解决方案。您需要用startAccessingSecurityScopedResourcestopAccessingSecurityScopedResource包围 url 的读取:

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

最新更新