Предотвращение открытия универсальных ссылок в `WKWebView` /` UIWebView`

Когда пользователь нажимает на универсальную ссылку в WKWebView , соответствующее приложение будет открыто (если установлено).

Это описано в Руководстве по программированию Apple Search

Если вы создаете экземпляр объекта SFSafariViewController, WKWebView или UIWebView для обработки универсальной ссылки, iOS открывает ваш сайт в Safari вместо открытия вашего приложения. Однако, если пользователь удаляет универсальную ссылку из встроенного объекта SFSafariViewController, WKWebView или UIWebView, iOS открывает ваше приложение.

В моем приложении у меня есть WKWebView , но я не хочу, чтобы пользователь вышел из моего приложения. Я хочу обработать ссылку в моем WKWebView .

Как предотвратить открытие универсальной ссылки? Или я могу узнать, может ли URL-адрес обрабатываться другими приложениями?

sourcecode для WebKit:

static const WKNavigationActionPolicy WK_API_AVAILABLE(macosx(10.11), ios(9.0)) _WKNavigationActionPolicyAllowWithoutTryingAppLink = (WKNavigationActionPolicy)(WKNavigationActionPolicyAllow + 2);

если вы используете WKWebView , используйте WKNavigationActionPolicyAllow + 2 вместо WKNavigationActionPolicyAllow

+ [LSAppLink openWithURL: completeHandler:] это то, как универсальная ссылка открывает соответствующее приложение. вы можете обменивать свои реализации с помощью своего метода, но будьте осторожны, это частный API.

вы можете проверить файл главы LSAppLink здесь

Основываясь на ответе @none, вот пример для Swift 4

Я тестировал его, и он работает!

 func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { decisionHandler(WKNavigationActionPolicy(rawValue: WKNavigationActionPolicy.allow.rawValue + 2)!) } 
  • Настройка категории AVAudioSession не влияет на звук из WKWebView
  • Коды ошибок HTTP WKWebView
  • WKWebView и перенаправление 302 ответов
  • WKWebView не откроет внешние ссылки
  • Загружать пользовательскую ошибку htmlString, когда WKWebView loadRequest терпит неудачу
  • WKWebView, добавленный как Subview, не изменяется при вращении в Swift
  • WKWebview не загружает стили CSS, когда html-код содержит символы Unicode
  • WKWebView падает при интенсивном использовании камеры
  • Невозможно подклассы WKWebView
  • Захват аудио WKWebView для измерения
  • Установить useragent в WKWebview
  • Interesting Posts

    Продукты для покупок в приложениях для IOS

    Могу ли я опубликовать обновление в хранилище приложений с настройкой «Только встроенная активная архитектура» на «Да»?

    Сделайте снимок экрана и отправьте его программно

    Как получить доступ к контроллеру View из контроллера панели вкладок?

    вызов viewDidLoad перед init?

    Как остановить предупреждение для UIView может не отвечать на селектор

    Воспроизведение потока байтов на iPhone MPMoviePlayerController

    Как правильно форматировать валюту на ios

    Pull To Refresh Перейти в iOS

    Обмен данными Objective-C и C ++ на основе файлов

    Сортировка объектов Realm со счетом свойства List

    Круглые определенные углы и показ тени только на определенных сторонах

    Как указать координату местоположения для построения точки на карте в ios с помощью раскадровки?

    iOS 7 CAEmitterLayer нерегулярно порождает частицы

    MKPolylineView lineWidth должен быть одинаковым каждый раз при масштабировании или уменьшении на MKMapview

    Давайте будем гением компьютера.