iPhone Open DATA: URL в Safari

У меня есть URL-адрес Data: (см .: http://en.wikipedia.org/wiki/Data_URI_scheme) (как NSString), и я хочу открыть его в Safari. Как бы вы это сделали (я пробовал openURL :.)
Пример:

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

person Isaac Waller    schedule 13.03.2009    source источник
comment
openURL должен работать (это то, для чего он предназначен!). Что произошло, когда вы попытались использовать openURL?   -  person hhafez    schedule 13.03.2009
comment
это может помочь показать URL-адрес. Может, он плохо сформирован.   -  person Rog    schedule 13.03.2009
comment
Я действительно видел эту работу ... сам не могу заставить работать банкомат, но пытаюсь ...   -  person Jonny    schedule 10.02.2014


Ответы (2)


В 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-адреса.

person ddoughty    schedule 22.03.2009

Это должно сделать это:

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

предполагая, что yourStr - это NString с URL-адресом, по которому расположены ваши данные.

person GoatRider    schedule 18.03.2009
comment
Чтобы обойти это, можно просто отобразить его в объекте UIWebView. Это в основном Safari, но полностью в вашем собственном приложении. - person GoatRider; 19.03.2009
comment
Мне нужно, чтобы пользователь мог добавить страницу в закладки, поэтому Safari - единственный вариант. - person Isaac Waller; 19.03.2009