2017-07-01 50 views
-1

など。 Aliexpress。私はAliexpressのアプリをインストールしている場合 - それはjavascriptのコードで、ウェブサイト上のリンクをクリックして実行します:location.href = aliexpress://.....WKWebViewのlocation.hrefを変更して外部アプリを開くのを防ぐには?

私はUIApplication.shared.openURL()を呼び出すことによって、手動でオープンapp-scheme://が必要ですが、WKWebViewを通じて自動開口部を必要としません。

答えて

0

リンク上でクリックが発生したときに開く特定のアプリのURLSchemeを読み込む必要があります。 詳細情報はthis urlになります。

そして、あなたはそのアプリを開くようにしたい場合は、その後WKWebView

decidePolicyForNavigationAction 

編集のため、このデリゲートメソッドのリンクのクリックを監視する:外オープンであることを行っている任意のURLを傍受するために

アプリケーションはUIApplicationクラスのサブクラスを作成し、OpenURLメソッドをオーバーライドします。この方法では、URLを確認して、アプリケーションの外で開くURLを決定できます。

新しいクラスをアプリケーションのプリンシパルクラスとして割り当てることを忘れないでください。

+0

をURLの負荷を処理javascriptを介して開始された外部アプリケーションにつながるURL。外部アプリケーションを開く前に、このメソッドではクリックされたURL(http:// scheme)のみが表示されます。 – Emissar

+0

@Emissar私の編集した回答を確認 – vivek

+0

https://pastebin.com/Y6wAKAZC 私は正しく理解していますか?しかし、WKWebViewの外部アプリケーションは、サイトをナビゲートすると開いています。しかし、 'UIApplication.shared.openURL(externalAppURL)'は期待どおりに動作します:アプリケーションを開く代わりにコンソールにurlを表示します。 WKWebViewは他の方法を使用して外部アプリケーションでURLを開きますか? – Emissar

0

ほとんどの場合、外部URLはcreateWebViewWith Configuration:メソッドにスローされます。一度 チェックこの、自己としてあなたWKUIDelegateを設定し、

webview.UIDelegate = self 

私が追跡することはできませんし、次のデリゲートを実装し、適切にdecidePolicyForNavigationAction` `で

public func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? 
    { 
      //check the URL, either block it or handle it here. 
      webView.load(navigationAction.request) 
      return nil 
    } 

Refer: Apple Docs

+0

これは機能しません( – Emissar

関連する問題