Ich möchte ein Konfigurationsprofil mit meiner iPhone-Anwendung versenden und bei Bedarf installieren.
Wir sprechen von einem Konfigurationsprofil, nicht von einem Bereitstellungsprofil.
Zunächst einmal ist eine solche Aufgabe möglich. Wenn Sie ein Konfigurationsprofil auf einer Webseite platzieren und in Safari darauf klicken, wird es installiert. Wenn Sie ein Profil per E-Mail senden und auf den Anhang klicken, wird es ebenfalls installiert. "Installiert" bedeutet in diesem Fall "Die Installationsoberfläche wird aufgerufen" - aber ich konnte nicht einmal so weit kommen.
Ich arbeitete also unter der Theorie, dass das Initiieren einer Profilinstallation das Navigieren als URL umfasst. Ich habe das Profil meinem App-Bundle hinzugefügt.
A) Zuerst habe ich [sharedApp openURL] mit der Datei: // URL in meinem Bundle ausprobiert. Kein solches Glück - nichts passiert.
B) Ich habe dann meinem Bundle eine HTML-Seite hinzugefügt, die einen Link zum Profil enthält, und diese in eine UIWebView geladen. Ein Klick auf den Link führt zu nichts. Das Laden einer identischen Seite von einem Webserver in Safari funktioniert jedoch einwandfrei - der Link ist anklickbar, das Profil wird installiert. Ich habe ein UIWebViewDelegate bereitgestellt, das auf jede Navigationsanforderung mit JA geantwortet hat - kein Unterschied.
C) Dann habe ich versucht, dieselbe Webseite aus meinem Bundle in Safari zu laden (mit [sharedApp openURL] - nichts passiert. Ich denke, Safari kann keine Dateien in meinem App-Bundle sehen.
D) Das Hochladen der Seite und des Profils auf einen Webserver ist machbar, aber ein Problem auf organisatorischer Ebene, ganz zu schweigen von einer zusätzlichen Fehlerquelle (was ist, wenn keine 3G-Abdeckung vorhanden ist? Usw.).
Meine große Frage lautet also: ** Wie installiere ich ein Profil programmgesteuert?
Und die kleinen Fragen sind: Was kann dazu führen, dass ein Link in einer UIWebView nicht anklickbar ist? Ist es möglich, eine Datei: // URL aus meinem Bundle in Safari zu laden ? Wenn nicht, gibt es einen lokalen Speicherort auf dem iPhone, an dem ich Dateien ablegen und Safari sie finden kann?
BEARBEITEN auf B): Das Problem liegt irgendwie in der Tatsache, dass wir auf ein Profil verlinken. Ich habe es von .mobileconfig in .xml umbenannt (weil es wirklich XML ist) und den Link geändert. Und der Link funktionierte in meinem UIWebView. Umbenannt zurück - das gleiche Zeug. Es sieht so aus, als würde UIWebView nur ungern anwendungsweite Aufgaben ausführen - da die Installation des Profils die App schließt. Ich habe versucht zu sagen, dass es in Ordnung ist - mittels UIWebViewDelegate - aber das hat nicht überzeugt. Gleiches Verhalten für mailto: URLs in UIWebView.
Für mailto: URLs besteht die übliche Technik darin, sie in [openURL] -Aufrufe zu übersetzen, aber das funktioniert in meinem Fall nicht ganz, siehe Szenario A.
Für itms: URLs funktioniert UIWebView jedoch wie erwartet ...
EDIT2: Es wurde versucht, eine Daten-URL über [openURL] an Safari weiterzuleiten - funktioniert nicht, siehe hier: iPhone Open DATA: Url In Safari
EDIT3: Es wurden viele Informationen darüber gefunden, wie Safari file: // URLs nicht unterstützt. UIWebView macht jedoch sehr viel. Auch Safari auf dem Simulator öffnet sie ganz gut. Das letztere ist das frustrierendste.
EDIT4: Ich habe nie eine Lösung gefunden. Stattdessen habe ich eine Zwei-Bit-Weboberfläche zusammengestellt, über die die Benutzer das per E-Mail an sie gesendete Profil bestellen können.