iOS Apps, die Dokumentverzeichnisse freigeben

8

Ist es möglich, dass zwei Anwendungen auf Dokumente in anderen Anwendungen zugreifen, vorausgesetzt, sie haben die gleiche Paket-ID. Ich weiß, dass es möglich ist, Elemente im Schlüsselbund mit Anwendungen zu teilen, die eine Bundle-Seed-ID teilen ( siehe hier ).

Nehmen wir beispielsweise an, Sie hätten eine Anwendung mit einer kostenlosen und einer kostenpflichtigen Version. Ist es möglich, dass nach dem Upgrade von der kostenlosen auf die kostenpflichtige Version die Daten auf die kostenpflichtige Version migriert werden können?

    
DHamrick 11.11.2011, 16:45
quelle

1 Antwort

4

Sie können Dokumentverzeichnisse nicht zwischen Anwendungen freigeben. Aber es sind andere Kommunikationskanäle offen.

Der Schlüsselbund ist eine Möglichkeit, wie Sie erwähnt haben.

Eine andere Möglichkeit könnten benutzerdefinierte URL-Schemata sein. Vielleicht ein bisschen so:

  1. Die kostenlose App registriert die Möglichkeit, URLs mit dem Schema freeapp:// zu öffnen. Ebenso registriert die Pro-App die Möglichkeit, URLs mit dem proapp:// -Schema zu öffnen. Verwenden Sie den Eintrag "URL-Typen" im Info-Plist.
  2. Pro App überprüft ob [UIApplication canOpenURL:@"freeapp://goPro"] == YES
  3. Falls zutreffend, ruft die pro-App [UIApplication openURL:@"freeapp://goPro"] auf.
  4. Dies startet die kostenlose App, die handleOpenURL von UIApplication implementieren muss.
  5. Die kostenlose App packt die notwendigen Daten in einer URL zusammen. Sie können HTTP-ähnliche Parameter verwenden, wenn Sie möchten. Sie können auch ein Wörterbuch erstellen und es mit Hilfe von NSCoding in eine lange Hex-Zeichenfolge serialisieren.
  6. Die kostenlose App übergibt die Daten mit [UIApplication openURL:@"proapp://YOUR_DATA_IN_WHATEVER_FORMAT"] an die Pro-App zurück
  7. Die pro-App empfängt die URL in ihrer überschriebenen Implementierung von handleOpenURL von UIApplication und führt die erforderliche Datenmigration durch.

Offensichtlich möchten Sie mehr eindeutige URL-Schemata als oben verwenden.

Bedenken Sie die Sicherheitsimplikationen, wenn Sie diese Art von Daten über URLs in Ihre App einspeisen können. Es ist wahrscheinlich für viele Zwecke in Ordnung, aber ich bin sicher, wenn die Facebook-App eine Möglichkeit bietet, deine Kontoeinstellungen über eine URL aufzufrischen, würden es einige Leute lustig finden, überall facebookapp://reset_my_account -Links zu posten.

Bonus-Tipp: URL-Schemata sind auch sehr praktisch, um die Lücke zwischen nativem Code und Web-Views zu schließen. Ich hatte ein paar Apps mit einer eingebetteten Webansicht, die eine Seite auf einem Server unter meiner Kontrolle zeigte. Die Webseite kann mit der App kommunizieren, indem sie den Speicherort des Dokuments von JS aus festlegt. Die App kann die Anfrage im Web-View-Delegaten abfangen und mit stringByEvaluatingJavaScriptFromString zurück zur Web-Ansicht sprechen.

    
Heiberg 28.05.2012, 18:43
quelle

Tags und Links