7

Ich habe Untersuchungen darüber durchgeführt, wie Daten sicher zwischen Anwendungen ausgetauscht werden können. Ich möchte einige Informationen über die richtige Vorgehensweise erhalten, bevor ich die Implementierung mit der falschen Methode gründlich durchkomme. Nur weil du etwas tun kannst, bedeutet das nicht unbedingt, dass du es tun solltest.Freigeben von Dateidaten zwischen Anwendungen in Swift/iOS

User Case: Ich arbeite an einer Reihe von Sprachlern-Apps, die eine gemeinsame Audiodateibasis von mehreren hundert Audiodateien und JSON-Dateien mit wichtigen Daten für eine Sprache haben. Ich würde es vorziehen, dass der Benutzer das Sprachpaket nicht erneut herunterladen muss, wenn er eine andere App in unserer Suite verwendet.

1. App-Erweiterungen - Document Provider Non-UI Variant

Nach dem documentation:

Der Datei Provider Erweiterung ermöglicht den Zugriff auf Dateien außerhalb der Sandbox des Host-App mit dem offenen und Umzug Aktionen. Diese Erweiterung (manchmal hier als Dateianbieter abgekürzt) ermöglicht der Host-App auch das Herunterladen von Dateien, ohne einen Dokumentauswahl-Controller anzuzeigen. Diese Funktion ermöglicht der Host-App den Zugriff auf zuvor geöffnete Dokumente mit sicheren URL-Lesezeichen, auch wenn diese Dateien nicht mehr auf dem Gerät gespeichert sind.

Auf der Oberfläche scheint dies eine wirklich solide Lösung. Mein Hauptanliegen stammt aus den letzten paar Zeilen, in denen es heißt, dass die Anwendung die Dateien herunterladen kann, die nicht mehr auf dem Gerät gespeichert sind. Ich möchte, dass die Dateien lokal auf dem Gerät gespeichert werden, um ein ständiges Herunterladen zu verhindern. Wenn der Dokumentanbieter die Dateien lokal speichert und den verschiedenen Anwendungen in der Gruppe den Zugriff auf die Dateien ermöglicht, könnte dies meiner Meinung nach funktionieren.

2. Geteilt Schlüsselbund

Hier können Sie Daten sicher speichern, um zu einem gemeinsamen Schlüsselbund, die anderen Anwendungen, den Zugriff auf einen Teil einer Reihe von Anwendungen sind. Alle Anwendungen, die den Keychain-Zugriff teilen, müssen dasselbe App-ID-Präfix verwenden. Ein Beispiel für den Zugriff auf freigegebene Schlüsselbunde in Aktion.

Ich habe ein wenig in die Dokumentation dieses eingesehen, und ich denke, das könnte die beste Passform sein. Mein Hauptanliegen bei dieser Lösung ist, ob es eine Größenbeschränkung für die hochgeladenen Daten gibt und ob mp3/ogg/json Dateitypen erlaubt sind. Die meisten Beispiele/Verwendungen, die ich mit dieser Lösung gefunden habe, weisen auf das Teilen von Zeichenfolgen und kleinen Daten hin. Ich bin mir nicht sicher, ob es große Daten wie JSON- oder Audiodateien verarbeiten wird.

Ich fand auch this repo, die offenbar mit Schlüsselanhänger macht den Umgang einfacher:

3. Individuelle Pasteboards

Der Brauch Pappe zum Zwecke der halb-privat am besten teilt benutzerdefinierte Daten zwischen zwei Anwendungen . Benutzerdefinierte Pappen werden mit eindeutigen Namen identifiziert. Sie können Daten über die Anwendung hinaus, die sie erstellt, beibehalten, so dass eine Pappe nach dem Beenden der Anwendung oder sogar nach dem Neustart des Geräts Daten festhalten kann.

Beim Schreiben oder Lesen von Daten in und von einer Arbeitsfläche müssen Sie einen Typ der Arbeitsfläche angeben.Papptypen verwenden normalerweise einen einheitlichen Typidentifizierer (UTI), um den Typ von Daten zu identifizieren, die in das Pasteboard eingehen und von diesem abgerufen werden. Weitere Informationen finden Sie in der UIPasteboard Class Reference-Dokumentation von Apple.

Above Dokumentation gezogen von this post

Mein Hauptanliegen bei dieser Lösung ist, dass es vielleicht ein bisschen wie ein Hack ist. Logischerweise erscheint eine Pasteboard als etwas, das vorübergehend Daten speichert und das Teilen zwischen Apps ermöglicht, während die Lösung, nach der ich suche, eher eine dauerhafte Lösung sein muss.


würde ich irgendwelche Informationen zu schätzen wissen über die besten Praktiken auf diese Art von Dateien zwischen Anwendungen zu teilen. Ich nehme an, es gibt viele andere Lösungen, die ich hier weggelassen habe, also wenn es eine bessere Alternative gibt, würde ich einige Informationen darüber lieben. Wenn es passiert, ist eine der aufgelisteten Lösungen, die ich hier platziert habe, ein guter Weg, um dieses Problem zu lösen. Ich hätte gerne mehr Informationen über Ihre Erfahrungen mit der Arbeit mit ihnen und wenn meine Bedenken mit ihnen gültig sind oder nichts zu befürchten .

Danke im Voraus. Wie immer, gut geschriebene Antworten auf-Stimmen;)

+1

Der referenzierte Beitrag PERFECT funktioniert. Danke, Entschuldigung für das Duplikat. – Unome

+0

Sie sind willkommen –

Antwort

1

Ich glaube, der beste Ansatz wäre die Freigabe von Daten durch Einrichten einer App-Gruppe zu ermöglichen. Dies ist Apples empfohlene Lösung für die gemeinsame Nutzung von Daten zwischen Anwendungen und Erweiterungen, und ich glaube, dass Daten im Allgemeinen zwischen Apps ausgetauscht werden.

Siehe Abschnitt "Sharing Data with Your Containing App"

auch "Adding an App to an App Group" sehen:

Verwandte Themen