WebView против Safari - PullRequest
       18

WebView против Safari

0 голосов
/ 28 июня 2011

У меня есть веб-приложение, которое я пытаюсь обернуть как нативное приложение. Я использую webView для отображения веб-приложения. Приложение содержит множество статей, а некоторые из них имеют ссылки на внешние страницы. Когда я нажимаю на эти ссылки, webView загружает внешнюю страницу, и вся моя навигация исчезает, и я, по сути, заблокирован на внешнем сайте. У меня нет возможности вернуться в приложение, не выйдя из него полностью.

То, что я хочу сделать, - это иметь скрипт, который оценивает URL-адреса перед их загрузкой в ​​webView. Если сервер отличается от того, где у меня есть веб-приложение, я хочу ссылку для запуска мобильного Safari. Я нашел много сценариев в Интернете, которые делают что-то вроде того, что я хочу, но не совсем. Они проверяют href и вызывают мобильное Safari, если href присутствует. Это не будет работать в моем случае, так как почти все ссылки в приложении содержат ссылки href.

У меня есть пример того, что я пытаюсь сделать здесь:

NSURL * requestURL = [[URL запроса] сохранить];

if ((! [[схема requestURL] isEqualToString: @ "http://www.some -site.dk /"]) && (navigationType == UIWebViewNavigationTypeLinkClicked))
{
NSLog (@ "Ссылка открыта в нативном Safari");
return! [[UIApplication sharedApplication] openURL: [ autoRlease requestURL]];
}
NSLog (@ "Ссылка открыта в webView");
[releaseURL release];
вернуть YES;

Как мне проверить, не совпадает ли строка url с чем-то в target-c?

Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

1 голос
/ 28 июня 2011

Я не уверен, что вы удерживаете свою строку URL, или если она полностью экранирована или нет, но если вы переместите URL на какую-то строку NSString, тогда есть много инструментов для поиска подстрок.

Если вы просто хотите проверить неравенство, вы можете сделать что-то вроде

if( ![urlString isEqualToString:@"Whatever you want to test against"] )
{

... execute code here

}
0 голосов
/ 04 июля 2011

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

Вот пример:

NSRange infoUrl = [filePath rangeOfString:@"DOMAIN_NAME.COM"];

if (infoUrl.location == NSNotFound)
{
     return ![ [ UIApplication sharedApplication ] openURL: [ requestURL autorelease ] ];
}

return YES;
...