2009-03-13 16 views
9

Ho un dato: URL (vedi: http://en.wikipedia.org/wiki/Data_URI_scheme) (come NSString) e voglio aprirlo in Safari. Come si raggiungere questo (ho provato openURL :.)
Esempio:iPhone Open DATA: Url In Safari

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

potrebbe aiutare a mostrare l'URL. Forse è mal formato. –

+0

openURL dovrebbe funzionare (questo è ciò a cui è destinato!) Cosa è successo quando hai provato ad usare openURL? – hhafez

+0

In realtà ho visto questo lavoro ... non riesco a farlo funzionare ATM ma provo ... – Jonny

risposta

6

In iPhone OS 2.2.1 e 5.0.1, sia nel simulatore e su un dispositivo, l'apertura di un dati: url funziona perfettamente in un UIWebView ma utilizzando openURL fa esattamente nulla.

E Safari renderà volentieri, e correttamente, tale URL se si è disposti a digitare uno nella barra di navigazione, quindi questo è chiaramente un problema con sharedApplication openURL, non con Safari.

Se la stringa base64 è sufficientemente breve (meno di 2K, probabilmente), è possibile includerla come parametro di query su un URL http che restituisce semplicemente un reindirizzamento all'URL dei dati. Quindi è possibile utilizzare openURL per aprire l'URL http. Sì, questo significa rimbalzare attraverso alcuni server, ma funzionerebbe.

In alternativa, dal momento che Safari, ovviamente, non l'ha fatto, si potrebbe dire l'iPhone che vostra applicazione è il gestore per i dati : schema e assumersi la responsabilità per il rendering del contenuto in un UIWebView. Sembra che questo possa fallire in futuro, comunque. :-)

Da dove proviene l'URL dei dati? Forse potresti costruire una pagina web il cui contenuto non è nient'altro che <iframe src="<the data url>"/> e ancora, usa openURL su quell'URL.

-1

Questo dovrebbe farlo:

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

assumendo "yourStr" è un nSTRING con l'URL in cui si trova i dati .

+0

Non funziona - guarda i commenti del post di hhafez. –

+0

Un modo per aggirare che potrebbe essere quello di visualizzarlo in un oggetto UIWebView. Questo è fondamentalmente Safari, ma interamente all'interno della tua app. – GoatRider

+0

Ho bisogno che l'utente sia in grado di aggiungere un segnalibro alla pagina, quindi Safari è l'unica opzione. –

Problemi correlati