[英]No permission to read iCloud Drive file
當用戶在Apple“文件”應用程序中點擊文件並選擇我的應用程序以查看它時,我正在嘗試讓我的應用程序打開iCloud Drive文件。一切設置都很好,因此該應用程序被打開,並在用戶點擊文件時得到通知。 但是無法打開文件,錯誤是應用程序無權打開文件。
我的應用程序在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);
}
給出的錯誤是:
錯誤域= NSCocoaErrorDomain代碼= 257“無法打開文件“ Kili.gpx”,因為您沒有查看權限。” UserInfo = {NSFilePath = / private / var / mobile / Library / Mobile Documents / com〜apple〜CloudDocs / Kili.gpx,NSUnderlyingError = 0x283ac83f0 {Error Domain = NSPOSIXErrorDomain Code = 1“不允許操作”}}
我找到了解決方案。 您需要使用startAccessingSecurityScopedResource
和stopAccessingSecurityScopedResource
包圍url的讀取:
[url startAccessingSecurityScopedResource];
NSError *error = nil;
NSData *data = [[NSData alloc] initWithContentsOfURL:url options:0 error:&error];
[url stopAccessingSecurityScopedResource];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.