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?
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:
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. [UIApplication canOpenURL:@"freeapp://goPro"] == YES
[UIApplication openURL:@"freeapp://goPro"]
auf.
handleOpenURL
von UIApplication
implementieren muss. NSCoding
in eine lange Hex-Zeichenfolge serialisieren. [UIApplication openURL:@"proapp://YOUR_DATA_IN_WHATEVER_FORMAT"]
an die Pro-App zurück
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.