2009-03-13 10 views
9

Tengo un Data: URL (vea: http://en.wikipedia.org/wiki/Data_URI_scheme) (como un NSString) y quiero abrirlo en Safari. ¿Cómo se lograr esto (probé openURL :.)
Ejemplo:iPhone Open DATA: Url En Safari

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

podría ayudar mostrar la URL. Tal vez está mal formado. –

+0

openURL debería funcionar (¡para eso está destinado!) ¿Qué sucedió cuando trataste de usar openURL? – hhafez

+0

De hecho, he visto este trabajo ... no puedo hacerlo trabajar en cajero automático pero tratando ... – Jonny

Respuesta

6

En iPhone OS 2.2.1 y 5.0.1, tanto en el simulador y en un dispositivo, la apertura de una datos: url funciona perfectamente en un UIWebView pero utilizando openURL hace absolutamente nada.

Y Safari con mucho gusto, y correctamente, representará una URL si está dispuesto a escribir uno en la barra de navegación, por lo que este es claramente un problema con sharedApplication openURL, no con Safari.

Si la cadena base64 es suficientemente corta (menos de 2K, probablemente) podría envolverla como un parámetro de consulta en una URL http que simplemente devuelve un redireccionamiento a la url de datos. Entonces podría usar openURL para abrir la URL http. Sí, esto significa saltar a través de algún servidor, pero funcionaría.

Como alternativa, ya que Safari, obviamente, no lo ha hecho, usted podría decirle al iPhone que su aplicación es el manejador de datos para la : esquema y toma la responsabilidad de hacer que el contenido de una UIWebView. Sin embargo, parece probable que falle en el futuro. :-)

¿De dónde viene la URL de datos en primer lugar? Tal vez podrías construir una página web cuyos contenidos no sean más que <iframe src="<the data url>"/> y de nuevo, usar openURL en esa URL.

-1

Esto debe hacerlo:

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

asumiendo "yourStr" es una nSTRING con la URL donde se encuentra sus datos .

+0

No funciona - vea los comentarios de la publicación de hhafez. –

+0

Una forma de evitarlo es simplemente mostrarlo en un objeto UIWebView. Eso es básicamente Safari, pero completamente dentro de tu propia aplicación. – GoatRider

+0

Necesito que el usuario pueda marcar la página, por lo que Safari es la única opción. –

Cuestiones relacionadas