iPhone Open DATA: URL в Safari
У меня есть Data: URL (см. http://en.wikipedia.org/wiki/Data_URI_scheme) (как NSString), и я хочу открыть его в Safari. Как бы вы достигли этого (я попробовал openURL:.)
Пример:
data:text/html;base64,(Some Base64 Encoded Data Here)
2 ответа
В iPhone OS 2.2.1 и 5.0.1, как в симуляторе, так и на устройстве, открытие данных: URL отлично работает в UIWebView
но используя openURL
точно ничего не делает.
И Safari с радостью и должным образом предоставит такой URL, если вы захотите ввести его в навигационную панель, так что это явно проблема с sharedApplication openURL
не с Safari.
Если строка base64 достаточно короткая (вероятно, менее 2 КБ), вы можете поместить ее в качестве параметра запроса в URL-адрес http, который просто возвращает перенаправление на URL-адрес данных. Затем вы можете использовать openURL, чтобы открыть http URL. Да, это значит прыгать через какой-то сервер, но это будет работать.
В качестве альтернативы, поскольку Safari, очевидно, не сделал этого, вы можете сообщить iPhone, что ваше приложение является обработчиком для схемы data: и взять на себя ответственность за отображение содержимого в UIWebView. Это, вероятно, не удастся в будущем, хотя.:-)
Откуда берется URL данных? Возможно, вы могли бы создать веб-страницу, содержание которой не более чем <iframe src="<the data url>"/>
и снова используйте openURL для этого URL.
Это должно сделать это:
NSURL *yourURL = [[NSURL alloc] initWithString:yourStr];
[[UIApplication sharedApplication] openURL:yourURL];
[yourURL release];
Предполагая, что "yourStr" является NString с URL, где расположены ваши данные.