2009-03-13 13 views
9

J'ai un Data: URL (voir: http://en.wikipedia.org/wiki/Data_URI_scheme) (comme un NSString) et je veux l'ouvrir dans Safari. Comment voulez-vous y arriver (j'ai essayé openURL :.)
Exemple:iPhone Open DATA: Url In Safari

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

il peut être utile d'afficher l'URL. Peut-être que c'est mal formé. –

+0

openURL devrait fonctionner (c'est ce à quoi il est destiné!) Que s'est-il passé lorsque vous avez essayé d'utiliser openURL? – hhafez

+0

J'ai effectivement vu ce travail ... ne peut pas le faire fonctionner moi-même ATM mais en essayant ... – Jonny

Répondre

6

Dans iPhone OS 2.2.1 et 5.0.1, tant dans le simulateur et sur un dispositif, l'ouverture d'une des données : url fonctionne parfaitement dans un UIWebView mais en utilisant openURL ne fait rien avec précision.

Et Safari se fera un plaisir et correctement, rendre une telle URL si vous êtes prêt à en taper un dans la barre de navigation, donc c'est clairement un problème avec sharedApplication openURL, pas avec Safari. Si la chaîne base64 est suffisamment courte (moins de 2K, probablement), vous pouvez l'insérer comme paramètre de requête dans une URL http qui renvoie simplement une redirection vers l'URL de données. Ensuite, vous pouvez utiliser openURL pour ouvrir l'URL http. Oui, cela signifie rebondir sur un serveur, mais cela fonctionnerait.

Alternativement, puisque Safari n'a évidemment pas fait, vous pouvez dire que l'iPhone votre application est le gestionnaire pour les données : système et de prendre la responsabilité de rendre le contenu dans un UIWebView. Cela semble cependant devoir échouer dans le futur. :-)

D'où vient l'URL de données en premier lieu? Peut-être que vous pourriez construire une page web dont le contenu n'est rien de plus que <iframe src="<the data url>"/> et encore, utilisez openURL sur cette URL.

-1

Cela devrait le faire:

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

supposant "yourStr" est un nSTRING avec l'URL où vos données se trouve .

+0

Ne fonctionne pas - voir les commentaires de la poste de hhafez. –

+0

Un moyen de contourner cela pourrait être de l'afficher simplement dans un objet UIWebView. C'est essentiellement Safari, mais entièrement dans votre propre application. – GoatRider

+0

J'ai besoin de l'utilisateur pour pouvoir mettre en signet la page - donc Safari est la seule option. –

Questions connexes