2015-10-14 14 views
5

Tôi đã phát triển một tính năng iCloud Drive Export cho Ứng dụng iOS của tôi và nó hoạt động. Tôi có thể xem Tài liệu đã xuất trong AppContainerFolder công khai của chúng tôi trong thư mục iCloud Drive trên Mac OS X 10.11.Tại sao iCloud Drive AppFolder của tôi có thể hiển thị trên MacOS, nhưng bị vô hiệu hóa trong iCloud Drive App trên iOS?

Nhưng trên iOS, tôi chỉ có thể thấy AppContainerFolder trong ứng dụng iCloud Drive. Nó bị tắt và tôi không thể mở thư mục đó, hoặc xem các tài liệu bên trong.

Image of the disable folder in the iOS iCloud Drive App

Từ các thiết lập iCloud Drive, tôi có thể thấy rằng các tập tin tôi đã xuất khẩu là ở chỗ AppContainerFolder trong iCloud Drive.

Image of the AppContainerFolder inside the iCloud settings

Có ai gặp vấn đề với iCloud Drive không?

Tôi đang sử dụng hai vùng chứa ứng dụng trong ứng dụng của mình, một trong số đó có mã nhận dạng "iCloud.com ..." cho mục xuất và một với mã nhận dạng "TeamIdentifier.com ..." cho đồng bộ hóa Ensembles-CoreData. tôi sử dụng một cách rõ ràng các URL cho Container sử dụng phương pháp này:

[[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:@"iCloud.com..."] 

Tôi đã cố gắng chỉ sử dụng TeamIdentifier-container, nhưng không có sự thay đổi trong tầm nhìn của các AppContainerFolder.

Tôi đã cố gắng để vượt qua BundleVersion, tôi đã chơi xung quanh với cài đặt Info.plist NSUbiquitousContainers. Tôi cũng đã tạo các bản dựng sẵn thông qua TestFlight cho những người thử nghiệm bên ngoài, để xem nó có liên quan gì đến các thiết bị phát triển hay không.

Điều duy nhất, tôi chưa thực hiện, để phát hành phiên bản mới cho AppStore với BundleVersion mới, để xem nó có liên quan gì đến ứng dụng sản xuất so với ứng dụng đang phát triển hay không.

Mọi mẹo và gợi ý đều được chào đón.

+0

Bạn đã thiết lập quyền truy cập vào công trong các ứng dụng info.plist? (NSUbiquitousContainerIsDocumentScopePublic = YES) –

+0

NSUbiquitousContainers \t \t \t iCloud.au.com.ossh.AppName \t \t \t \t \t NSUbiquitousContainerIsDocumentScopePublic \t \t \t \t \t \t NSUbiquitousContainerSupportedFolderLevels \t \t \t Không \t \t \t

+1

Xin chào Duncan, cảm ơn bạn đã gợi ý của bạn, nhưng có, tôi đã làm điều đó: iCloud.com ... \t \t \t \t \t NSUbiquitousContainerIsDocumentScopePublic \t \t \t \t \t \t NSUbiquitousContainerName \t \t \t TaptileApps \t \t \t NSUbiquitousContainerSupportedFolderLevels \t \t \t Một \t \t Bernd

Trả lời

6

Sau khi làm rõ với Bộ phận hỗ trợ kỹ thuật dành cho nhà phát triển của Apple, tôi hiện đã có thể giải quyết vấn đề.

Ứng dụng của tôi khai báo hai tệp UTI (tệp sao lưu riêng) được xuất, để thùng chứa iCloud mặc định KHÔNG được bật (hoặc chuyển sang màu xám), khi các tệp khác với các tệp này được lưu vào thư mục đó. Ứng dụng của chúng tôi có thể tạo tệp PDF và CSV, nhưng các loại tệp này KHÔNG được khai báo là 'Loại tài liệu' trong info.plist, vì ứng dụng của chúng tôi không thể hiển thị chúng.

Khi thêm các loại tài liệu PDF và CSV vào info.plist, vùng chứa iCloud sẽ hiển thị ngay lập tức trong ứng dụng iCloud Drive.

Đối với các bạn tham khảo, đây là một trích info.plist:

... 
<key>CFBundleDocumentTypes</key> 
<array> 
    <dict> 
     <key>CFBundleTypeIconFiles</key> 
     <array/> 
     <key>CFBundleTypeName</key> 
     <string>Adobe PDF</string> 
     <key>CFBundleTypeRole</key> 
     <string>Viewer</string> 
     <key>LSHandlerRank</key> 
     <string>Alternative</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>com.adobe.pdf</string> 
     </array> 
    </dict> 
    <dict> 
     <key>CFBundleTypeIconFiles</key> 
     <array/> 
     <key>CFBundleTypeName</key> 
     <string>CSV</string> 
     <key>CFBundleTypeRole</key> 
     <string>Viewer</string> 
     <key>LSHandlerRank</key> 
     <string>Alternative</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>public.comma-separated-values-text</string> 
     </array> 
    </dict> 
</array> 
... 
+0

Điều đó có vẻ khó chịu. Ứng dụng của tôi thực hiện một vài tệp .txt trong vùng chứa đám mây. Đây là những tệp cấu hình mà tôi muốn chia sẻ trên các thiết bị.Nó không * không * có nghĩa là tôi muốn nói rằng ứng dụng của tôi có thể mở các tệp .txt chung. Tôi đoán một giải pháp có thể là để phát minh ra phần mở rộng của riêng tôi cho những điều này và thêm nó vào UTI xuất khẩu của tôi. Dù sao, cảm ơn thông tin. – btschumy

+0

@btschumy Các tệp xuất của tôi có phần mở rộng của riêng chúng và tôi đã thêm chúng vào các UTI đã xuất (mặc dù tôi cũng có lỗi), nhưng như tôi đã hiểu, tôi cũng phải thêm documentTypes, ngay cả khi ứng dụng của tôi không thể mở các tệp PDF đã xuất. Và có, nó là gây phiền nhiễu ... tốt hơn WRONG, bởi vì bây giờ ứng dụng của chúng tôi được hiển thị trong danh sách các ứng dụng có thể mở file PDF. Tôi sẽ phải cập nhật Apple Bug, nhưng atm tôi quá bận rộn cho điều đó. Có lẽ Apple thay đổi việc thực hiện điều đó. Anyways .. thử nó đầu tiên mà không có DocumentTypes, nhưng bạn biết bây giờ những gì để thử tiếp theo, nếu nó không hoạt động. – Bernd

+0

Cảm ơn các mẹo ở đây. Tôi làm theo những gì bạn đã làm, nhưng tìm thấy một giải pháp hơi khác. Tôi chỉ có một loại tài liệu trong vùng chứa phổ biến của mình - loại tài liệu của riêng tôi. Vì vậy, tôi không thêm CSV hoặc PDF - vì ứng dụng của tôi không làm bất kỳ điều gì với chúng. Tôi đã tìm thấy rằng tôi cần phải có mảng CFBundleDocumentTypes (với một mục nhập cho loại tài liệu của tôi), cũng là NSUbiquitousContainers dict và mảng UTExportedTypeDeclarations. Sau khi tôi chạy ứng dụng trên iPad, tôi nhận thấy thư mục của tôi vẫn bị vô hiệu hóa bên trong ứng dụng iCloud Drive. Tôi đã khởi động lại ứng dụng iCloud Drive và thư mục của tôi đã được bật –

0

Bài đăng Why my app is not shown in iCloud Drive Folder dường như cho biết ứng dụng của bạn cần được phê duyệt và phát hành trước khi thư mục iCloud công khai hoạt động hoàn toàn.

+0

Không phải vậy, tôi có các ứng dụng trong thử nghiệm beta và vùng chứa của chúng hiển thị. –

+0

Cảm ơn bạn @ DuncanGroenewald - bạn hoàn toàn đúng. Tôi vừa thử cái này. Id vùng chứa kiểu cũ hiện có - đã thay đổi NSUbiquitousContainerIsDocumentScopePublic từ false thành true và vùng chứa xuất hiện trong ứng dụng iCloud Drive và các tệp có thể truy cập được. Đồng bộ hóa NSUbiquitousContainerName và NSUbiquitousContainerIsDocumentScopePublic giữa iOS và OS X có vẻ khá nhanh. Bumping CFBundleVersion mỗi lần. –

+0

@Michael Cảm ơn bạn đã gợi ý, tôi đã nhìn thấy câu hỏi này và cũng đã phát hành phiên bản đầu tiên với tính năng iCloud Drive Export. Nhưng có vẻ như, nó đã không làm bất cứ điều gì với điều này. Có vẻ như tôi sẽ phải mở một yêu cầu kỹ thuật với Apple để xem, nếu đó là một số loại 'ma thuật' khác với iCloud trên các máy chủ của Apple. – Bernd

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