Может ли UIWebView заменить Safari? - PullRequest
2 голосов
/ 15 июля 2010

Можем ли мы создать приложение с использованием UIWebView, которое будет полностью имитировать браузер Safari?

Есть ли случаи, когда UIWebview не может сделать то, что можно сделать в Safari?

Ответы [ 3 ]

2 голосов
/ 15 июля 2010

Во-первых, у вас есть отдельное хранилище файлов cookie для каждого приложения. Поэтому, если у пользователя есть некоторые предпочтения на сайте X в Safari, у него не будет этих предпочтений на сайте X в вашем браузере, и наоборот. Кроме того, UIWebView очень похож на реальную вещь.

0 голосов
/ 03 сентября 2012

Рендеринг контента в UIWebView будет намного медленнее, чем в Safari.

Javascript-движок Safari использует компилятор «точно в срок». Он принимает входящий код Javascript и на лету преобразует его в машинный код, который может работать непосредственно на процессоре ARM устройства iOS. Это позволяет Javascript-коду работать со скоростью, аналогичной коду нативного приложения.

Проблема в том, что Apple не доверяет сторонним разработчикам эту силу. Если бы стороннее приложение имело возможность конвертировать Javascript в машинный код и запускать его, это приложение также могло бы загружать и запускать другие фрагменты машинного кода - и у Apple никогда не было бы возможности просмотреть этот код. Как только App Review одобрит это, (разработчики / хакеры) могут изменить загруженный код на что-то, что регистрирует ваши пароли или что-то еще. И нет никакой возможности предоставить эту власть только UIWebView, а не другим частям приложения, потому что UIWebView работает в том же процессе, что и код разработчика.

Так что в основном Apple запрещает это, потому что разрешение на это нарушит безопасность, обеспечиваемую App Store, и сделает iOS более уязвимой для атак. Они могут разрешить это для Safari, потому что контролируют действия Safari, но не могут доверять другим, чтобы они не злоупотребляли этой способностью.

0 голосов
/ 14 января 2011

Вы не можете легко создать приложение, которое имитирует браузер Safari, используя открытый API, предоставляемый компонентом UIWebView.Во-первых, пожалуйста, посмотрите на методы делегата UIWebView.Если у вас есть фреймы внутри страницы, которую вы хотите загрузить, вам может быть сложно определить, нажал ли пользователь внутри фрейма / фрейма или щелкнул по ссылке в основном документе.

Работа с аутентификацией на сайтес недействительными сертификатами также сложно с компонентом UIWebView, особенно когда сайт с недействительным сертификатом достигается путем нажатия на ссылку внутри iframe.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...