2015-10-14 18 views
5

Ich habe eine iCloud Drive Export Funktion für meine iOS App entwickelt und es funktioniert. Ich kann die exportierten Dokumente in unserem öffentlichen AppContainerFolder im Ordner iCloud Drive unter Mac OS X 10.11 sehen.Warum ist mein iCloud Drive AppFolder auf MacOS sichtbar, aber in der iCloud Drive App auf iOS deaktiviert?

Aber auf iOS kann ich nur den AppContainerFolder in der iCloud Drive App sehen. Es ist deaktiviert und ich kann diesen Ordner nicht öffnen oder die darin enthaltenen Dokumente nicht sehen.

Image of the disable folder in the iOS iCloud Drive App

Von den iCloud Drive-Einstellungen, kann ich sehen, dass die Dateien, die ich exportiert haben in diesem AppContainerFolder in iCloud Drive sind.

Image of the AppContainerFolder inside the iCloud settings

Hat so ein Problem mit iCloud-Laufwerk jemand hat?

Ich verwende zwei App-Container in meiner App, einen mit dem "iCloud.com ..." Bezeichner für die Exporte und einen anderen mit dem "TeamIdentifier.com ..." Bezeichner für die Ensembles-CoreData Synchronisierung. ich ausdrücklich die URLs für die Container verwenden, um die Methode:

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

Ich habe bereits versucht, nur den TeamIdentifier-Container zu verwenden, aber es gab keine Änderung in der Sichtbarkeit des AppContainerFolder.

Ich versuchte, die BundleVersion zu stoßen, spielte ich mit den Einstellungen von Info.plist NSUbiquitousContainers herum. Ich habe auch Builds über TestFlight für externe Tester zur Verfügung gestellt, um zu sehen, ob es etwas mit Entwicklungsgeräten zu tun hat.

Das einzige, was ich noch nicht getan hatte, war die Veröffentlichung einer neuen Version im AppStore mit einer neuen BundleVersion, um zu sehen, ob es etwas mit einer produktiven App oder einer App in Entwicklung zu tun hat.

Alle Tipps und Hinweise willkommen.

+0

Haben Sie den Zugang zu öffentlichen in den Apps info.plist eingestellt? (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 Keine \t \t \t

+1

Hallo Duncan, vielen Dank für Ihren Hinweis, aber ja, ich habe das: iCloud.com ... \t \t \t \t \t NSUbiquitousContainerIsDocumentScopePublic \t \t \t \t \t \t NSUbiquitousContainerName So\t \t TaptileApps \t \t \t NSUbiquitousContainerSupportedFolderLevels \t \t \t One \t \t Bernd

Antwort

6

Nach Klärung mit dem technischen Support von Apple Developer war ich nun in der Lage, das Problem zu lösen.

Meine App deklariert zwei exportierte UTIs (eigene Sicherungsdateien), sodass der iCloud-Container standardmäßig NICHT aktiviert (oder ausgegraut) wird, wenn andere Dateien als diese UTIs in diesem Ordner gespeichert werden. Unsere App ist in der Lage, PDFs und CSVs zu erstellen, aber diese Dateitypen wurden NICHT als 'Dokumenttypen' in der Datei info.plist deklariert, da unsere App sie nicht anzeigen kann.

Beim Hinzufügen der PDF- und CSV-Dokumenttypen zur Datei info.plist wird der iCloud-Container sofort in der iCloud Drive-App angezeigt.

Zu Ihrer Information hier ist ein Auszug aus dem 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

Das scheint nervig. Meine App legt einige .txt-Dateien in den Cloud-Container. Dies sind Konfigurationsdateien, die ich für verschiedene Geräte freigeben möchte.Es bedeutet * nicht * ich möchte sagen, dass meine App im Allgemeinen .txt-Dateien öffnen kann. Ich denke, eine mögliche Lösung ist, meine eigene Erweiterung für diese zu erfinden und sie zu meinen exportierten Harnwegsinfekten hinzuzufügen. Wie auch immer, danke für die Information. – btschumy

+0

@btschumy Meine Exportdateien haben ihre eigene Erweiterung und ich habe diese zu den exportierten HWIs hinzugefügt (obwohl ich dort auch einen Fehler hatte), aber wie ich verstanden habe, muss ich auch die documentTypes hinzufügen, auch wenn meine App das nicht kann Öffnen Sie die exportierten PDFs. Und JA, es ist ärgerlich ... besser FALSCH, denn jetzt wird unsere App in der Liste der Apps angezeigt, die PDFs öffnen können. Ich werde den Apple Bug aktualisieren müssen, aber dafür bin ich zu beschäftigt. Vielleicht ändert Apple ihre Umsetzung davon. Wie auch immer ... versuche es zuerst ohne die DocumentTypes, aber du weißt jetzt, was du als nächstes versuchen solltest, wenn es nicht funktioniert. – Bernd

+0

Danke für die Tipps hier. Ich folgte dem, was Sie getan haben, fand aber eine etwas andere Lösung. Ich habe nur einen Dokumententyp in meinem allgegenwärtigen Container - meinen eigenen Dokumententyp. Also habe ich keine CSV oder PDF hinzugefügt - da meine App nichts mit ihnen macht. Ich habe festgestellt, dass ich das CFBundleDocumentTypes-Array (mit einem Eintrag für meinen Dokumenttyp), das NSUbiquitousContainers-dict- und das UTExportedTypeDeclarations-Array benötigt. Nachdem ich meine App auf meinem iPad ausgeführt hatte, bemerkte ich, dass mein Ordner in der iCloud Drive App noch deaktiviert war. Ich habe die iCloud Drive App neu gestartet und mein Ordner wurde aktiviert –

0

Der Beitrag Why my app is not shown in iCloud Drive Folder scheint darauf hinzuweisen, dass Ihre App genehmigt und freigegeben werden muss, bevor ein öffentlicher iCloud-Ordner vollständig funktioniert.

+0

Nicht so, ich habe Apps im Betatest und ihre Container sind sichtbar. –

+0

Danke @DuncanGrenewald - Sie haben recht. Ich habe es gerade versucht. Vorhandene alte Container-ID - NSUbiquitousContainerIsDocumentScopePublic wurde von "false" in "true" geändert und der Container wird in der App "iCloud Drive" angezeigt. Auf die Dateien kann zugegriffen werden. Die Synchronisierung von NSUbiquitousContainerName und NSUbiquitousContainerIsDocumentScopePublic zwischen iOS und OS X scheint ziemlich schnell zu sein. Bumping CFBundleVersion jedes Mal. –

+0

@Michael Vielen Dank für Ihren Hinweis, ich hatte diese Frage bereits gesehen und auch die erste Version mit der iCloud Drive Export-Funktion veröffentlicht. Aber es scheint, dass es damit nichts zu tun hatte. Es scheint, dass ich eine technische Anfrage mit Apple öffnen muss, um zu sehen, ob es eine andere Art von "Magie" mit iCloud auf den Servern von Apple ist. – Bernd