iOS: можно ли открыть NSURLRequest прямо в Safari? - PullRequest
5 голосов
/ 27 марта 2012

Я не говорю о UIWebView, я хочу открыть мобильное приложение для сафари, используя NSURLRequest.

Почему?В моем приложении пользователь уже зашел на наш веб-сервер.Я хочу предоставить пользователю возможность запуска веб-страницы без повторного ввода их учетных данных.Однако я не могу использовать GET, потому что это поместит их учетные данные в URL.

Итак, могу ли я открыть приложение safari (не UIWebView) из моего приложения с NSURLRequestили POST в какой-то другой форме?

Ответы [ 2 ]

10 голосов
/ 27 марта 2012

Я собираюсь поставить свою шею на линию и сказать нет - нет способа передать NSURLRequest прямо в Safari. (Основным) средством связи между приложениями на iOS является доступ к URL; нет общего механизма передачи объектов из одного приложения в другое.

Я думаю, что лучшее, что вы сможете сделать, - это получить одноразовый ключ с вашего веб-сервера в приложении, а затем открыть его в Safari, указав его в URL-адресе. И, если вы можете, сделайте это через HTTPS, чтобы пути URL и компоненты запроса были видны только после успешного согласования TLS. Это должно помешать кому-либо еще видеть соответствующие учетные данные и лишить их возможности быть полезными, даже если они получены другими способами (например, кто-то рядом с вами копирует URL-адрес с вашего экрана).

0 голосов
/ 27 марта 2012

Было бы проще использовать NSURL, или просто NSString, или просто символ * в этом отношении.Я не уверен, что это работает на iPhone, так и должно, поскольку iPhone работает параллельно с Darwin, как OSX, но на iPhone есть некоторые ограничения.Хотя это определенно работает на Mac.

NSString *url = @"http://www.apple.com";
NSURL *myURL = [NSURL URLWithString:url];
system([ [NSString 
          stringWithFormat:@"Open -a Safari %@", 
          [NSString stringWithContentsOfURL:myURL encoding:NSUTF8StringEncoding error:NULL] ]
          cStringUsingEncoding:NSUTF8StringEncoding]);

Кроме того, я могу предположить, что это плохая идея (если ее можно избежать).Как пользователь iPhone, я уверен, что я не одинок в том, что очень раздражает, когда разработчики забирают меня из приложения, в котором я сейчас нахожусь.

...