Keine iCloud in NSOpenPanel

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Keine iCloud in NSOpenPanel

      Hallo zusammen!

      Ich hoffe, mir kann jemand von Euch helfen: iCloud treibt mich in den Wahnsinn!

      Der geneigte Leser wird sich erinnern, dass ich unter iOS mit fehlenden Ordnern in iCloud Drive kämpfte (Link). Das Problem ging zum DTS und endete in zwei Radars, ohne einer wirklichen Lösung. Ich hoffte nun, die Situation zu entschärfen, indem ich die entsprechende Companion-App unter macOS ebenfalls um iCloud-Funktionalität erweitere: So könnte man dort in den iCloud-Container speichern, auch wenn dessen Ordner nicht unter iCloud Drive angezeigt würde. Oder die macOS App würde sogar dafür sorgen, dass dessen Anzeige erfolgt. Soweit der Plan...

      Nach meinem Verständnis sind die folgenden Schritte notwendig, um einer NSDocument-basierten App iCloud Documents beizubringen:
      • Einrichten eines iCloud-Containers im Apple Member Center
      • Aktivieren der iCloud-Funktionalität für die App ID im Apple Member Center (inkl. neuer Profile ... ich nutze automatisches Signing)
      • Aktivieren der iCloud-Funktionalität in Xcode und damit Eintragen der entsprechenden Entitlements
      • Ergänzung der iCloud-Keys in der info.plist
      • Unterstützung von autosavesInPlace im NSDocument
      • Erhöhen der Build-Nummer
      Anschliessend sollten die NSOpenPanel bzw. NSSavePanel einen Abschnitt mit dem entsprechenden iCloud-Container anbieten, richtig?

      Ihr ahnt es bereits: Ich habe die oben genannten Schritte durchgeführt und es passiert genau nichts. Zumindest nicht in der App: In den Systemeinstellungen wird der iCloud-Container gelistet und auch ~/Library/Mobile Documents beinhaltet das entsprechende Verzeichnis.

      Ich habe alles inzwischen x mal überprüft und diverse Variationen ausprobiert. Google liefert viele Ergebnisse, aber nichts hilfreiches und die Apple-Dokumentationen sind ziemlich verstreut und immer lückenhaft ... zumindest bzgl. der neuen "iCloud..."-Container und iCloud Drive.

      Hat irgendjemand einen guten Tipp für mich, was ich übersehe? Ich bin kurz davor, den Sch... hinzuschmeissen und Synchronisierung aus meinen Apps zu entfernen :(

      Grüße, Mattes

      Ach so: Hier zur Information die Entitlements und Einträge in der info.plist:

      Quellcode: info.plist

      1. <key>NSUbiquitousContainers</key>
      2. <dict>
      3. <key>iCloud.de.stitchbuddy.documents</key>
      4. <dict>
      5. <key>NSUbiquitousContainerIsDocumentScopePublic</key>
      6. <true/>
      7. <key>NSUbiquitousContainerName</key>
      8. <string>StitchBuddy</string>
      9. <key>NSUbiquitousContainerSupportedFolderLevels</key>
      10. <string>Any</string>
      11. </dict>
      12. </dict>
      13. <key>NSUbiquitousDisplaySet</key>
      14. <string>iCloud.de.stitchbuddy.documents</string>
      Alles anzeigen

      Quellcode

      1. <key>com.apple.developer.icloud-container-identifiers</key>
      2. <array>
      3. <string>iCloud.de.stitchbuddy.documents</string>
      4. </array>
      5. <key>com.apple.developer.icloud-services</key>
      6. <array>
      7. <string>CloudDocuments</string>
      8. </array>
      9. <key>com.apple.developer.ubiquity-container-identifiers</key>
      10. <array>
      11. <string>iCloud.de.stitchbuddy.documents</string>
      12. </array>
      Alles anzeigen
      Diese Seite bleibt aus technischen Gründen unbedruckt.
    • Na, Ihr seid ja alle recht zurückhaltend, wenn es im iCloud Drive / Documents geht ... und ich verstehe so langsam, weswegen :D

      Ich habe noch einmal alles hoch und runter geprüft, mit neuem Benutzer / neuer Apple ID. Die App kann im in der iCloud speichern, nur ein eigener App-Container wird in den besagten Panels nicht angezeigt. Auch das entsprechende App-Verzeichnis wird weder im Finder unter iCloud gelistet, noch in der Web-Applikation unter icloud.com. Insgesamt also sehr vergleichbar mit dem Effekt, den ich auch mit der Beispiel-App unter iOS habe (siehe oben).

      Ich will nicht ausschließen, dass das Problem vor'm Computer sitzen kann. Vielleicht übersehe ich etwas Maßgebliches. Allerdings habe ich inzwischen viel Zeit in das Thema investiert und bin nicht sicher, ob es - selbst bei "Erfolg" - nicht durch Instabilitäten bei Benutzern zu Unmut führt.

      Mein Fazit: Ich investiere meine Zeit jetzt doch lieber in eine Umstellung auf die Dropbox API v2 und Verfeinerung meiner eigenen Datei-Synchronisierung. iCloud Drive sah sehr vielversprechend aus, aber hält dieses Versprechen (zumindest bei mir) nicht. Schade um den Aufwand.

      Ernüchtert, Mattes
      Diese Seite bleibt aus technischen Gründen unbedruckt.
    • Hallo Mattes,

      was ich auf die schnelle sehe ist, dass du keinen eindeutigen Identifier definiert hast. Passe mal den Standard Identifier an, damit er Weltweit eindeutig wird.

      Ich bin selbst auch unschlüssig ob ich die iCloud Sync einsetzen werde. Mir ist hier Apple einfach noch nicht weit genug damit man das problemlos produktiv verwenden kann. Aber das muss jeder für sich selbst bewerten...

      Wolf
    • Wolf schrieb:


      was ich auf die schnelle sehe ist, dass du keinen eindeutigen Identifier definiert hast. Passe mal den Standard Identifier an, damit er Weltweit eindeutig wird.
      Danke für Deine Hilfe. Ich bin nicht sicher, welchen "Identifier" Du genau meinst, iCloud.de.stitchbuddy.documents ist als ID meines Display Sets sehr wohl eindeutig.

      Ich konnte ja doch nicht die Finger davon lassen und habe gestern Abend noch eine kleine Beispiel-App geschrieben, bei der alles wie erhofft funktionierte. Vergleiche mit meiner App ergaben keine erkennbaren Unterschiede.

      Heute wollte ich erst alle Dateien des alten in das neue Projekt übertragen, habe dann aber doch noch einmal alles auf Anfang gedreht: Alle Punkte der o. g. Liste noch einmal überprüft bzw. durchgeführt und dann mit einem neuen Test-User und am Mac unter dem Gast-Account ausprobiert: Siehe da, es funktioniert alles!

      Unter meinem Account fehlt der app-eigene iCloud-Eintrag weiterhin im "Open"-Panel ... Öffnen und Speichern aber über iCloud-Drive und das Verzeichnis / die Dateien werden auch synchronisiert. Scheinbar ist irgendwas in meinem iCloud-Drive strubbelig und ich weiß nicht, wie ich dieses ohne Logout etc. behoben bekomme. Solange es aber bei anderen Benutzern funktioniert, habe ich damit keinen Stress.

      Natürlich werde ich noch sehr genau testen und die Einbindung in die iOS-Apps steht noch aus. So weit bin ich jetzt aber wieder optimistisch ... auch wenn ein komisches Gefühl im Magen bleibt.

      Mattes
      Diese Seite bleibt aus technischen Gründen unbedruckt.
    • Wolf schrieb:

      ich meinte diesen hier: com.apple.developer.ubiquity-container-identifiers

      Der muss angepasst werden, wenn du den gleichwn Kontainer für alle deine Apps willst mit deinen Account, ansonsten musst du noch weiter qualifizieren...
      Jetzt stehe ich auf'm Schlauch. Das habe ich doch

      Quellcode

      1. <key>com.apple.developer.ubiquity-container-identifiers</key>
      2. <array>
      3. <string>iCloud.de.stitchbuddy.documents</string>
      4. </array>
      In dem Array der Identifier steht das Display-Set, welches ich in den verschiedenen Applikationen nutzen möchte ... und in iTC entsprechend als Container definiert habe. Wo verstehe ich Dich falsch?

      Mattes
      Diese Seite bleibt aus technischen Gründen unbedruckt.
    • Ach, hier fehlte noch ein (vorerst) abschliessender Kommentar: iCloud wird bei anderen Accounts sauber im NSOpenPanel angezeigt. So wie es aussieht habe ich meinen Account ziemlich durcheinander gebracht (siehe auch die anderen diesbzgl. Posts). Leider gibt es keinen mir bekannten Weg, iCloud Drive für eine App sauber zurückzusetzen.

      Ciao, Mattes
      Diese Seite bleibt aus technischen Gründen unbedruckt.