2015-05-21 20 views
10

Thư mục Drive iCloud không hiển thị thư mục của ứng dụng của tôi.Tại sao ứng dụng của tôi không được hiển thị trong Thư mục Drive iCloud

Đây là cách tôi gửi một tập tin vào iCloud Drive:

- (IBAction)btnStoreTapped:(id)sender { 
    // Let's get the root directory for storing the file on iCloud Drive 
    [self rootDirectoryForICloud:^(NSURL *ubiquityURL) { 
     NSLog(@"1. ubiquityURL = %@", ubiquityURL); 
     if (ubiquityURL) { 

      // We also need the 'local' URL to the file we want to store 
      //NSURL *localURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Photo" ofType:@"pdf"]]; 


      NSURL *localURL = [self localPathForResource:@"document" ofType:@"doc"]; 
      NSLog(@"2. localURL = %@", localURL); 

      // Now, append the local filename to the ubiquityURL 
      ubiquityURL = [ubiquityURL URLByAppendingPathComponent:localURL.lastPathComponent]; 
      NSLog(@"3. ubiquityURL = %@", ubiquityURL); 

      // And finish up the 'store' action 
      NSError *error; 
      if (![[NSFileManager defaultManager] setUbiquitous:YES itemAtURL:localURL destinationURL:ubiquityURL error:&error]) { 
       NSLog(@"Error occurred: %@", error); 
      }else{ 
       NSLog(@"Succeed"); 
      } 
     } 
     else { 
      NSLog(@"Could not retrieve a ubiquityURL"); 
     } 
    }]; 
} 

- (void)rootDirectoryForICloud:(void (^)(NSURL *))completionHandler { 

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
     NSURL *rootDirectory = [[[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil]URLByAppendingPathComponent:@"Documents"]; 

     if (rootDirectory) { 
      if (![[NSFileManager defaultManager] fileExistsAtPath:rootDirectory.path isDirectory:nil]) { 
       NSLog(@"Create directory"); 
       [[NSFileManager defaultManager] createDirectoryAtURL:rootDirectory withIntermediateDirectories:YES attributes:nil error:nil]; 
      } 
     } 

     dispatch_async(dispatch_get_main_queue(), ^{ 
      completionHandler(rootDirectory); 
     }); 
    }); 
} 

- (NSURL *)localPathForResource:(NSString *)resource ofType:(NSString *)type { 
    NSString *documentsDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]; 
    NSString *resourcePath = [[documentsDirectory stringByAppendingPathComponent:resource] stringByAppendingPathExtension:type]; 
    return [NSURL fileURLWithPath:resourcePath]; 
} 

Trên thực tế tôi đã làm everyting giải thích in this post

Mọi thứ trông giống như tốt. Tôi có thể tải lên tệp thành công và tôi có thể hiển thị chúng trong máy tính của mình qua thiết bị đầu cuối.

enter image description here

enter image description here

Và tôi có thể xem các tập tin tôi chỉ được tải lên từ iphone của tôi.

Nhưng không có gì được hiển thị trong thư mục iCloud Drive trong mac hoặc icloud.com của tôi. Tại sao họ không hiển thị thư mục của ứng dụng của tôi, ngay cả mọi thứ có vẻ ổn và không có lỗi?

Trả lời

1

Nhưng không có gì được hiển thị trong thư mục iCloud Drive trong mac hoặc icloud.com của tôi. Tại sao họ không hiển thị thư mục của ứng dụng của tôi, ngay cả mọi thứ có vẻ như tốt và không có lỗi?

Đây có phải là ứng dụng mới hoặc vùng chứa iCloud mới được tạo không? Sau đó, lý do là: NSUbiquitousContainerIsDocumentScopePublic = true chỉ có hiệu lực sau khi ứng dụng (và vùng chứa iCloud có quyền) đã được xem xét và phê duyệt.

Tôi không thể nhớ nơi tôi đọc "phần thông tin còn thiếu" (ít nhất tôi không nhận được thông tin từ tài liệu của Apple).

Ví dụ khác từ trải nghiệm của tôi, điều này dường như chứng minh điều này: Trong ứng dụng hiện có (với kiểu cũ "TeamIdentifierPrefix" iCloud container) tôi có thể hiển thị vùng chứa đó trên ổ iCloud. Nhưng một container mới sẽ không được hiển thị trong iCloud Drive "cho công chúng" (thậm chí khó khăn tôi có thể nhìn thấy nó bằng cách sử dụng Terminal.app trên máy Mac của tôi). Sau khi ứng dụng (với vùng chứa mới) đã được phê duyệt và có sẵn trên AppStore, bạn có thể phát lại bằng Info.plist (và làm cho vùng chứa mới hiển thị/ẩn, ...)

+2

Tôi dường như đã từ chối tuyên bố của bạn rằng 'NSUbiquitousContainerIsDocumentScopePublic = true chỉ có hiệu lực sau khi ứng dụng (và vùng chứa iCloud có quyền) đã được xem xét và phê duyệt'. Với ứng dụng cửa hàng ứng dụng hiện tại, không có khóa NSUbiquitousContainers nào trong danh sách. Tôi đã thêm NSUbiquitousContainerIsDocumentScopePublic = true, và nhấn CFBundleVersion mà không cần gửi tới kho ứng dụng - và vùng chứa phổ biến sẽ hiển thị trong ứng dụng iCloud Drive iOS ** và ** vùng chứa sẽ hiển thị trên hệ thống OS X được đăng nhập vào cùng tài khoản iCloud (I thậm chí không đồng bộ một tệp). –

+2

Tôi đồng ý @Michael Rourke. Nó không có liên quan gì đến App Store. Điều gì đã khắc phục sự cố cho tôi là nhận được ID ứng dụng mới theo http://stackoverflow.com/questions/25203697/exposing-an-apps-ubiquitous-container-to-icloud-drive-in-ios-8/32801479#32801479 . Ứng dụng của tôi chưa có trong App Store. Bạn cần có NSUbiquitousContainerIsDocumentScopePublic = true trong Info.plist trước khi bạn chạy ứng dụng lần đầu tiên. – BillF

+1

Tôi đã gặp sự cố tương tự này. Ứng dụng của tôi đã tồn tại trong cửa hàng ứng dụng, vì vậy tôi không thể làm gì để thư mục ứng dụng hiển thị trong iCloud Drive. Tôi thậm chí đã gỡ cài đặt ứng dụng và cài đặt lại, và nó không hiển thị. – gbotha

2

Điều duy nhất làm việc cho tôi (tôi đã có chính xác cùng một vấn đề) trong một ứng dụng hiện có (vì vậy tôi không thể thay đổi ID gói) là tạo một thư mục con Documents trong thư mục URLForUbiquityContainerIdentifier và viết tất cả các tệp của tôi ở đó.

Khi tôi đã làm điều này, chúng xuất hiện trong Trình tìm kiếm trên máy Mac của tôi. Tuy nhiên, chúng không xuất hiện trong thư mục con Documents của thư mục ứng dụng của tôi trong iCloud Drive, chúng xuất hiện trực tiếp trong thư mục ứng dụng.

+1

Bạn thưa bạn là một học giả :). Nếu tạo một vùng chứa không mặc định, bạn cần phải tạo một thư mục Documents bên trong nó. thư mục tài liệu đó không hiển thị cho người dùng cuối, nhưng bên trong thư mục đó có nội dung gì. :) – bworby

+0

điều này làm việc đêm qua. Nhưng giờ đây, thư mục ứng dụng không còn hiển thị trong iCloud Drive nữa ... :( – bworby

2

Tôi đã thử cùng một mã nhanh và có cùng một vấn đề.

Đây là những gì làm việc cho tôi:

1) Tìm những dòng sau trong mã nguồn info.plist của bạn

<key>CFBundleVersion</key> 
<string>1</string> 

2) Tăng số phiên bản. Nếu nó là 1, tăng nó lên 2. Làm tương tự bất kể số phiên bản là gì.

3) Nếu cần thiết, gỡ bỏ cài đặt các ứng dụng từ điện thoại của bạn và chạy lại nó sau khi làm theo hai bước trên

+0

Điều này vừa được lưu lại trong ngày của tôi, cảm ơn! –

+0

Đã làm việc cho tôi nhưng TẠI SAO ??? –

Các vấn đề liên quan