2015-10-14 67 views
5

我爲我的iOS應用程序開發了一個iCloud Drive Export功能,它起作用。 我可以在Mac OS X 10.11的iCloud Drive文件夾的公共AppContainerFolder中看到導出的文檔。爲什麼我的iCloud Drive AppFolder在MacOS上可見,但在iOS上的iCloud Drive App中禁用?

但是在iOS上,我只能看到iCloud Drive應用程序中的AppContainerFolder。它被禁用,我無法打開該文件夾,或看到裏面的文件。

Image of the disable folder in the iOS iCloud Drive App

從iCloud中驅動器的設置,我可以看到我已經導出的文件中的iCloud雲端硬盤AppContainerFolder。

Image of the AppContainerFolder inside the iCloud settings

有沒有人有iCloud的驅動器這樣的問題?

我在我的應用程序中使用了兩個應用程序容器,一個具有導出的「iCloud.com ...」標識符,另一個具有Ensembles-CoreData同步的「TeamIdentifier.com ...」標識符。 我明確地使用網址,使用該方法的容器:

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

我已經嘗試過只使用TeamIdentifier容器,但有在AppContainerFolder的知名度沒有變化。

我試圖碰到BundleVersion,我玩了Info.plist NSUbiquitousContainers設置。我還通過TestFlight將構建版提供給外部測試人員,以查看它是否與開發設備有關。

我唯一沒做過的,就是用新的BundleVersion發佈一個新版本到AppStore,看看它是否與開發中的應用程序和應用程序有關。

歡迎任何提示和提示。

+0

你有設置在應用程序的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 \t \t \t

+1

您好鄧肯,謝謝你的提示,但沒錯,我這樣做: 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 一個 \t \t Bernd

回答

6

經過蘋果開發者技術支持澄清後,我現在能夠解決這個問題。

我的應用程序聲明瞭兩個導出的UTI(自己的備份文件),這樣,當這些UTI以外的其他文件保存到該文件夾​​時,iCloud容器將默認爲不啓用(或變灰)。 我們的應用程序能夠創建PDF和CSV,但是這些文件類型在info.plist中沒有聲明爲「文檔類型」,因爲我們的應用程序無法顯示它們。

將PDF和CSV文檔類型添加到info.plist時,iCloud容器在iCloud Drive應用程序中即時顯示。

供您參考,這裏是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

這似乎很煩人。我的應用程序確實在雲容器中放置了幾個.txt文件。這些是我想要跨設備共享的配置文件。它不*意味着我想說我的應用程序可以在一般情況下打開.txt文件。我想一個可能的解決方案是發明我自己的擴展,並將其添加到我導出的UTI。無論如何,謝謝你的信息。 – btschumy

+0

@btschumy我的導出文件有自己的擴展名,我將它們添加到導出的UTI中(儘管我也有錯誤),但據我瞭解,我也必須添加documentTypes,即使我的應用程序不能打開導出的PDF。是的,這很煩人...更好的錯誤,因爲現在我們的應用程序顯示在能夠打開PDF的應用程序列表中。我將不得不更新Apple Bug,但是atm我太忙了。也許蘋果改變了他們的實施。無論如何..首先嚐試它沒有DocumentTypes,但你現在知道下一步該怎麼做,如果它不工作。 – Bernd

+0

感謝您的提示。我遵循你所做的,但發現了一個稍微不同的解決方案。我的無處不在的容器中只有一種文檔類型 - 我自己的文檔類型。所以我沒有添加CSV或PDF - 因爲我的應用程序沒有對他們做任何事情。我發現我需要有CFBundleDocumentTypes數組(我的文檔類型有一個條目),還有NSUbiquitousContainers字典和UTExportedTypeDeclarations數組。 在我的iPad上運行我的應用程序後,我發現我的文件夾在iCloud Drive應用程序中仍然被禁用。我重新啓動了iCloud Drive應用程序,並啓用了我的文件夾 –

0

該職位Why my app is not shown in iCloud Drive Folder似乎表明您的應用需要在公共iCloud文件夾完全工作之前獲得批准和發佈。

+0

並非如此,我有測試版應用程序,它們的容器可見。 –

+0

謝謝@DuncanGroenewald - 你說得很對。我只是試過這個。預先存在的舊式容器標識 - 將NSUbiquitousContainerIsDocumentScopePublic從false更改爲true,並且該容器顯示在iCloud Drive應用程序中,並且可以訪問這些文件。在iOS和OS X之間同步NSUbiquitousContainerName和NSUbiquitousContainerIsDocumentScopePublic似乎相當快。每次碰撞CFBundleVersion。 –

+0

@Michael感謝您的提示,我已經看到了這個問題,並且還發布了iCloud Drive Export功能的第一個版本。但似乎它沒有對此做任何事情。看起來,我將不得不向Apple發佈技術請求,看看它是否與Apple的服務器上的iCloud具有某種「魔力」。 – Bernd

相關問題