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

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

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

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

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

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

3 Solutions collect form web for “Предотвращение открытия универсальных ссылок в `WKWebView` /` UIWebView`”

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)!) } 
  • Как получить слово в указанном месте на WKWebView?
  • Невозможно подклассы WKWebView
  • Как я могу исправить нарушенные функции, вызванные запрещенным useragent?
  • Варианты представления веб-сайта, когда веб-сайт / приложение поддерживает универсальные ссылки в iOS 9
  • Получить текущее использование памяти WKWebView?
  • Проблема WKWebView с прерывистым пустым экраном
  • WKSelectionGranularityCharacter опция WKWebView, поврежденная в iOS 9
  • Получить URL-адрес всех элементов, используемых с помощью WKWebView
  • встраивание Javascript в SFSafariViewController
  • Отдельное хранилище файлов cookie для двоих (UIWebView или WKWebView)
  • WKWebView в интерфейсе Builder
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.