Подтвердить что ты не робот

Что такое настраиваемая схема URL-адресов для мобильных Safari?

Схемы URL-адресов iOS позволяют веб-сайтам запускать такие приложения:

  • twitter://timeline запускает Twitter
  • googlechrome://google.com запускает Chrome
  • fb://root запускает Facebook
  • ______________ запускает Safari? (не http://, так как Safari не запускается с UIWebView)

Какая настраиваемая схема URL запускает запуск Safari (даже из другого приложения UIWebView)?

Чтобы уточнить, я не ищу [[UIApplication sharedApplication] openURL: request.URL];

Вместо этого я ищу, как веб-сайт может позволить пользователю запускать Mobile Safari из UIWebView другого приложения (Google Chrome, Twitter и т.д.).

Примеры ссылок HTML, которые открывают другие приложения:

<a href="twitter://timeline">Open Twitter</a>
<a href="googlechrome://google.com">Open site in Chrome</a>
<a href="fb://root">Open Facebook</a>

Я ищу что-то похожее на эти неработающие примеры:

<a href="safari://google.com">Open Safari [Doesn't work]</a>
<a href="webkit://google.com">Open Webkit [Doesn't work]</a>

Здесь jsFiddle: http://jsfiddle.net/gXLjF/9/embedded/result/

Попробуйте открыть этот URL в iOS Google Chrome и открыть Safari со ссылками.

4b9b3361

Ответ 1

Как для любого веб-браузера, http://someurl.com и https://someurl.com.

Ответ 2

Нет схемы URL-адреса Safari. Если вы сделаете это и используете его в своем html, вы можете проверить его, хотя.

Внедрить метод UIWebViewDelegate webView:shouldStartLoadWithRequest:navigationType:. Верните "НЕТ" для запросов, которые вы хотите отключить для мобильных сафари. Вызовите UIApplication openURL с URL-адресом запроса.

Что-то вроде этого:

- (BOOL) webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    // all clicked links!
    if ( navigationType == UIWebViewNavigationTypeLinkClicked )
    {
        [[UIApplication sharedApplication] openURL: request.URL];
        return NO;
    }

    // or, custom URL scheme!
    if ( [request.URL.scheme isEqualToString: @"my-open-in-safari"] )
    {
        // remap back to http.  untested!
        NSURL* url = [NSURL URLWithString: [request.URL.absoluteString stringByReplacingOccurrencesOfString: @"my-open-in-safari" withString: @"http" ]];

        [[UIApplication sharedApplication] openURL: url];
        return NO;
    }

    return YES;
}