iOS-App-zu-App-Übertragung von Daten mit der neuen Document Support API

8

Problem:

Erstellen von Unternehmensanwendungen einer Suite Nature und muss Daten von einer Anwendung an eine andere weitergeben können. Beispiel: App1 ist ein Barcodeleser, der Listen erstellt und inventarisiert. App2 benötigt eine "frische" Kopie der gleichen Inventarlisteninformationen, die App1 gerade erstellt hat, um das Ziel der Erstellung von Bestellungen zu erreichen. Die beiden Apps und Datenbanken sind zwei große, die sich in einer einzelnen App zusammenschieben lassen, und die Suite wird mit immer mehr Apps weiter wachsen.


Verstehen:

Ich verstehe vollständig, dass "Jede" Anwendung in einer eigenen Sandbox ist. Beim Durchlesen der Dokumente in Bezug auf die neue UIDocumentInteractionController-API scheint es jedoch so, dass eine Anwendung außerhalb der Sandbox nur ein wenig in "Einlesen", "Ansicht" oder "Öffnen" eines Dokuments springen kann, das nicht getrennt war des Bundles oder in der Anwendung erstellt.


Datenfluss:

Ich versuche es einfach zu halten. Ich habe die von Apple heruntergeladene DocInteraction-Beispielanwendung und eine andere Anwendung namens App1 verwendet, um mit einer einfachen Textdatei zu arbeiten. In App1 erstelle ich eine einfache TXT-Datei und speichere sie im Dokumentenordner. (Aber das ist immer noch in der Sandbox der App?). Im modifizierten Beispiel von DocInteraction habe ich versucht, einen Weg zu finden, wie man die erstellte TXT-Datei "anzeigen", "öffnen" oder besser "einlesen" kann. Wenn ich eine einfache TXT-Datei zwischen den beiden übergeben kann, kann ich eine CSV-Struktur einfügen, um die Datenbanken auf jeder Seite zu aktualisieren, wenn die Anwendungen geöffnet werden.

Ich habe versucht, die Launch Options Keys ohne Glück zu benutzen.

Kurz gesagt, ich kann einfach nicht den Kopf rümpfen:

  1. Wohin müssen die Daten von App1 gehen?
  2. Wie finde ich die Daten in der anderen App, App2?
  3. Wie "öffne" Sie die Datei, die in der Sandbox einer anderen Anwendung vorhanden ist?

Ende Ergebnis: Ich habe versucht, weg von dem

zu bleiben

Die Dokument-Interaktionsübersicht:

  • Vorschau eines Dokuments oder Präsentation von Optionen
  • Registrierung Ihrer Unterstützung von Dateitypen
  • Dateien aus anderen Apps öffnen
  • Vorschauvorschau anzeigen und drucken

Es ist die " Dateien von anderen Apps öffnen" , an der ich mich besonders interessiere. Es weist mich an, die Anwendung zu verwenden: didFinishLaunchingWithOptions: Methode, indem ich Wörterbuchwerte für die Schlüssel übergebe. Hier verliere ich mich? Wie stelle ich die Schlüssel so ein, dass sie weiß, "WHERE" und "WHAT" zu suchen? Und mir ist immer noch nicht klar, den richtigen Direktor, dass App1 Informationen speichern sollte, damit die Schlüssel auf den richtigen Ort zeigen?


Das Öffnen von E-Mail-Dateianhängen und das Öffnen von PDF-Dateien in iBooks können nicht die einzigen Orte sein, an denen Sie diese API nutzen können oder sonst hätte Apple nicht die gesamte Arbeit erledigt Erlaube von App-To-App zu sprechen.

Hinweis: Ich versuche nicht, App1 dazu zu bringen, Daten direkt in App2-Dateien zu übertragen. Ich denke nicht, dass das von Apple überhaupt erlaubt wäre! Ich versuche App1 zu veranlassen, seine Daten zu komprimieren und sie an der richtigen Stelle zu speichern. Wenn Benutzer App2 verwenden, können die Daten dann für App2 verfügbar sein, indem sie die Daten "einlesen".

Wenn jemand eine Beispielanwendung, ein Tutorial oder eine solide Idee hat, wie das funktioniert, würde ich die Hilfe sehr schätzen.

-Danke!

P.S. Jemand mit 1.500 oder höherem Ruf erstellt bitte ein "UIDocumentInteraction" -Tag für stackoverflow!

    
Newbyman 26.01.2011, 05:17
quelle

1 Antwort

7

Ich habe es letzten Monat funktioniert. Hier ist mein mentales Modell:

App1 erstellt eine Datei irgendwo in ihrer Sandbox.

App1 ruft docinteraction auf, um die "Open In" -GUI für diese Datei anzuzeigen

Der Benutzer wählt "In App2 öffnen"

Das iOS kopiert die Datei von einer Sandbox in die andere und startet App2.

App2 implementiert didfinishlaunchingwithURL und lädt die angegebene URL (welche die Kopie in ihrer Sandbox ist)

    
Kris Van Bael 26.01.2011, 22:53
quelle