У меня есть URL-адрес Data: (см .: http://en.wikipedia.org/wiki/Data_URI_scheme) (как NSString), и я хочу открыть его в Safari. Как бы вы это сделали (я пробовал openURL :.)
Пример:
data:text/html;base64,(Some Base64 Encoded Data Here)
У меня есть URL-адрес Data: (см .: http://en.wikipedia.org/wiki/Data_URI_scheme) (как NSString), и я хочу открыть его в Safari. Как бы вы это сделали (я пробовал openURL :.)
Пример:
data:text/html;base64,(Some Base64 Encoded Data Here)
В iPhone OS 2.2.1 и 5.0.1 как в симуляторе, так и на устройстве открытие URL-адреса data: отлично работает в UIWebView
, но использование openURL
ничего не дает.
И Safari с радостью и должным образом отобразит такой URL-адрес, если вы захотите ввести его в панель навигации, так что это явно проблема sharedApplication openURL
, а не Safari.
Если строка base64 достаточно короткая (менее 2 КБ, вероятно), вы можете обернуть ее как параметр запроса для URL-адреса http, который просто возвращает перенаправление на URL-адрес данных. Затем вы можете использовать openURL, чтобы открыть URL-адрес http. Да, это означает прыгать через какой-то сервер, но это сработает.
В качестве альтернативы, поскольку 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-адресом, по которому расположены ваши данные.