Nutzung von iCloud Drive in einer iOS App

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

  • Nutzung von iCloud Drive in einer iOS App

    Hallo zusammen,

    ich würde gerne Daten aus meiner App im iCloud Drive speichern. Ich habe schon viele Seiten in der Apple Developer Dokumentation gelesen und komme irgendwie auf keinen grünen Zweig. Habt Ihr vielleicht Links, wo Schritt für Schritt erklärt ist, wie man das iCloud Drive in einer iOS 8 App nutzt ? Am besten mit einem Beispiel Quelltext.

    Hauptsächlich soll meine App nur kleinere Textdateien auf dem iCloud-Drive ablegen.
  • Danke für Deine Antwort, aber wenn ich das richtig Verstanden habe, ist CloudKit ja nur so eine Art Datenbank, womit ich zum Beispiel eine Art Webservice realisieren kann. Ich möchte aber gerne eine oder mehrere Dateien auf dem iCloud Drive des Anwenders ablegen, so wie das Numbers oder Pages macht.
  • Ich verstehe den ganzen Kram irgendwie noch nicht. Ich habe eine neue SingleView Application angelegt und habe die Info.plist so erweitert :

    Quellcode

    1. <key>NSUbiquitousContainers</key>
    2. <dict>
    3. <key>iCloud.de.bis-programmierung.iCloud-Drive-Test</key>
    4. <dict>
    5. <key>NSUbiquitousContainerIsDocumentScopePublic</key>
    6. <true/>
    7. <key>NSUbiquitousContainerName</key>
    8. <string>iCloud-Drive-Test</string>
    9. <key>NSUbiquitousContainerSupportedFolderLevels</key>
    10. <string>None</string>
    11. </dict>
    12. </dict>
    Alles anzeigen

    Meine iCloud-Drive-Text.entitlements sieht so aus :

    Quellcode

    1. <dict>
    2. <key>com.apple.developer.ubiquity-container-identifiers</key>
    3. <array>
    4. <string>iCloud.$(CFBundleIdentifier)</string>
    5. </array>
    6. <key>com.apple.developer.icloud-services</key>
    7. <array>
    8. <string>CloudDocuments</string>
    9. </array>
    10. <key>com.apple.developer.ubiquity-kvstore-identifier</key>
    11. <string>$(TeamIdentifierPrefix)$(CFBundleIdentifier)</string>
    12. </dict>
    Alles anzeigen

    Und dann habe ich noch folgenden Quelltext in der wiewDidLoad :

    Quellcode

    1. NSError *error;
    2. NSURL *iCloudDocumentsURL = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];
    3. iCloudDocumentsURL = [iCloudDocumentsURL URLByAppendingPathComponent:@"Documents"];
    4. iCloudDocumentsURL = [iCloudDocumentsURL URLByAppendingPathComponent:@"iCloud-Drive-Test"];
    5. if (![[NSFileManager defaultManager] fileExistsAtPath:iCloudDocumentsURL.path isDirectory:nil]) {
    6. BOOL success = [[NSFileManager defaultManager] createDirectoryAtURL:iCloudDocumentsURL withIntermediateDirectories:true attributes:nil error:&error];
    7. if (success) {
    8. NSLog(@"Directory was created...");
    9. } else {
    10. NSLog(@"Not created : %@", error);
    11. }
    12. }
    Alles anzeigen

    Das Verzeichnis wird beim ersten Start der App ohne Fehlermeldungen angelegt. Beim zweiten Start überspringt die App das Erstellen des Verzeichnisses. Aber leider sehe ich weder auf meinem Mac noch unter icloud.com das dort ein entsprechendes Verzeichnis angelegt wurde. Was mache ich falsch und was habe ich vielleicht falsch verstanden ?
  • Nach mehreren Jahren Erfahrung darin iCloud stabil nutzen zu wollen ist mein Rat nur: Lass es bleiben.

    Ob es jetzt mit iCloud Drive besser geworden ist kann ich nicht sagen (hab es nicht mehr ausprobiert), aber iCloud (insbesondere in Verbindung mit Core Data) hat nach meiner Erfahrung nie sauber funktioniert. Ich habe das mal in einer App eingeführt und habe seit dem 90% meines Supports damit verbrachte den Kunden alle möglichen Probleme rund um iCloud zu erklären. Aus Nutzersicht lag der Fehler natürlich einzig und alleine bei meiner App und nicht bei iCloud. Also keine so einfache Sache...

    Auch wenn mir jetzt jemand sagt, dass iCloud Drive super toll funktioniert würde ich erst einmal min. ein Jahr warten und schauen ob sich das in der Praxis wirklich so verhält bevor ich meine Zeit noch einmal dafür investieren...
  • Also ich nutze das iCloud Drive sehr intensiv mit Pages und Numbers. Hier funktioniert es richtig gut. Da ich lediglich nur kleine Textdateien ablegen will, glaube ich schon, dass iCloud Drive die richtige Lösung ist. Oder wie würdest Du damit umgehen kleinere Textdateien vom iPhone auf den Mac zu bekommen ?
  • Wie gesagt habe ich bislang noch keine Erfahrungen mit iCloud Drive oder der Nutzung von iCloud für den reinen Dateitransfer. Ich habe es bislang zusammen mit Core Data verwendet und das war wirklich schlimm. Ich bin daher erst einmal geheilt und verwende lieber reine "Datei Clouds" wie Dropbox oder setze auf eine direkte Synchronisation z.B. über WLAN.

    Es kann aber auch sein, das iCloud Drive für Dateien nun wie geschmiert läuft. Durch meine schlechten Erfahrungen mit iCloud wird es aber sicherlich noch einige Zeit dauern, bis ich mich wieder damit beschäftige.
  • Mmmh, hat sonst keiner mehr eine Idee, warum der Ordner nicht im iCloud Drive angezeigt wird ? Im Ordner ~/Library/Mobile Documents/ wird der iCloud Container der App angezeigt auf dem Mac. Hier wird auch das Verzeichnis richtig abgebildet, welches ich in meinem Beispiel Quelltext erstelle. In den iCloud-Einstellungen->Speicher->Speicher verwalten auf meinem iPhone oder iPad sehe ich ebenfalls das Verzeichnis von meiner App nur nicht auf'm Mac unter iCloud Drive und unter icloud.com-->iCloud Drive.
  • Oh Mann, ich habe den ganzen Wald vor lauter Bäumen nicht gesehen. Mein Quelltext von oben ist vollkommen korrekt. Ich hatte nur vergessen bei der App das Framework CloudKit.framework zu linken. Nachdem ich das gemacht hatte, funktioniert es jetzt wunderbar.