2009-03-13 7 views
9

Ich habe eine Daten: URL (siehe: http://en.wikipedia.org/wiki/Data_URI_scheme) (als NSString) und ich möchte es in Safari öffnen. Wie würden Sie dies erreichen (habe ich versucht, openURL :.)
Beispiel:iPhone Öffnen DATEN: URL In Safari

data:text/html;base64,(Some Base64 Encoded Data Here) 
+0

kann es hilfreich sein, die URL anzuzeigen. Vielleicht ist es schlecht gebildet. –

+0

openURL sollte funktionieren (das ist, wofür es gedacht ist!) Was ist passiert, als Sie versucht haben, openURL zu verwenden? – hhafez

+0

Ich habe diese Arbeit tatsächlich gesehen ... kann es nicht bekommen, um mich selbst zu arbeiten ATM aber versuchen ... – Jonny

Antwort

6

In iPhone OS 2.2.1 und 5.0.1, sowohl im Simulator und auf einem Gerät, einen Daten öffnen: arbeitet in einem UIWebView perfekt url aber openURL mit tut genau nichts.

Und Safari wird gerne und richtig eine solche URL rendern, wenn Sie bereit sind, einen in die Navigationsleiste einzugeben, so ist dies eindeutig ein Problem mit sharedApplication openURL, nicht mit Safari.

Wenn die base64-Zeichenfolge kurz genug ist (wahrscheinlich weniger als 2K), können Sie sie als Abfrageparameter in eine HTTP-URL umbrechen, die einfach eine Weiterleitung an die Daten-URL zurückgibt. Dann könnten Sie openURL verwenden, um die http-URL zu öffnen. Ja, das bedeutet, durch einen Server zu springen, aber es würde funktionieren.

Alternativ kann, da Safari hat offensichtlich nicht getan, man könnte das iPhone sagen, dass Ihre App der Handler für die Daten: Schema und Verantwortung übernehmen, um den Inhalt in einer UIWebView für das Rendern. Dies scheint jedoch in Zukunft wahrscheinlich nicht zu funktionieren. :-)

Woher kommt die Daten-URL? Vielleicht könnten Sie eine Webseite erstellen, deren Inhalt nicht mehr als <iframe src="<the data url>"/> ist und wieder OpenURL für diese URL verwenden.

-1

Dies sollte es tun:

NSURL *yourURL = [[NSURL alloc] initWithString:yourStr];  
[[UIApplication sharedApplication] openURL:yourURL]; 
[yourURL release]; 

unter der Annahme, "yourStr" ist ein nSTRING mit der URL, wo Ihre Daten liegen .

+0

Funktioniert nicht - siehe die Kommentare von hhafez Beitrag. –

+0

Eine Möglichkeit, dies zu umgehen, wäre, sie nur in einem UIWebView-Objekt anzuzeigen. Das ist im Grunde Safari, aber vollständig in Ihrer eigenen App. – GoatRider

+0

Ich brauche den Benutzer, um die Seite mit einem Lesezeichen versehen zu können - Safari ist also die einzige Option. –