I have a Data: URL (see: http://en.wikipedia.org/wiki/Data_URI_scheme) (as a NSString) and I want to open it in Safari. How would you accomplish this (I tried openURL:.)
Example:
data:text/html;base64,(Some Base64 Encoded Data Here)
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
In iPhone OS 2.2.1 and 5.0.1, in both the simulator and on a device, opening a data: url works perfectly in a
UIWebViewbut usingopenURLdoes precisely nothing.And Safari will gladly, and properly, render such an URL if you are willing to type one into the navigation bar, so this is clearly a problem with
sharedApplication openURL, not with Safari.If the base64 string is short enough (less than 2K, probably) you could wrap it as a query parameter to an http URL that simply returns a redirect to the data url. Then you could use openURL to open the http URL. Yes, this means bouncing through some server, but it would work.
Alternatively, since Safari obviously hasn’t done it, you could tell the iPhone that your app is the handler for the data: scheme and take responsibility for rendering the content in a UIWebView. This seems likely to fail in the future, though. 🙂
Where is the data URL coming from in the first place? Perhaps you could construct a web page whose contents are nothing more than
<iframe src='<the data url>'/>and again, use openURL on that URL.