iPhone开放数据:Safari中的URL

9
我有一个Data: URL(参见:http://en.wikipedia.org/wiki/Data_URI_scheme)(作为NSString),我想在Safari中打开它。你应该如何实现这个功能?(我尝试了openURL:.)
示例:
data:text/html;base64,(Some Base64 Encoded Data Here)

openURL应该可以工作(这就是它的目的!)你尝试使用openURL时发生了什么? - hhafez
可能是URL格式不正确。 - Rog
我确实见过这个工作……但目前自己无法使其工作,正在尝试中…… - Jonny
2个回答

9
在iPhone OS 2.2.1和5.0.1中,无论在模拟器还是真机上,打开data: url在UIWebView中完美运行,但使用openURL却一点反应都没有。而如果你愿意在导航栏中键入一个这样的URL,Safari将欣然、正确地呈现它,因此这显然是sharedApplication openURL的问题,而不是Safari的问题。如果base64字符串足够短(可能小于2K),您可以将其包装为http URL的查询参数,该URL只返回到数据URL的重定向。然后,您可以使用openURL打开http URL。是的,这意味着通过一些服务器进行跳转,但它会起作用。或者,由于Safari显然没有这样做,您可以告诉iPhone,您的应用程序是data:方案的处理程序,并负责在UIWebView中呈现内容。但这似乎有可能失败。:-) 首先,数据URL来自哪里?也许您可以构建一个网页,其内容仅包含<iframe src="<the data url>"/>,再次在该URL上使用openURL。

-1

这应该可以:

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

假设“yourStr”是一个包含数据所在URL的NSString。

一个解决方法可能是将其显示在UIWebView对象中。这基本上就是Safari,但完全在您自己的应用程序中。 - GoatRider
我需要用户能够将页面加入书签 - 因此Safari是唯一的选择。 - Isaac Waller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接