2016-02-10 14 views
10

私はmyAppを対象とするiOSユニバーサルリンクを持っています。別のアプリでそのリンクをクリックすると、myAppが開き、適切なペイオフが完全に表示され、機能しています。wkwebviewはユニバーサルリンクをまだ処理していません

ただし、myAppには、WKWebViewを使用する組み込みブラウザが含まれています。内蔵のブラウザから同じユニバーサルリンクをクリックすると、iOSはmyAppへのリンクを送信せず、ウェブページを取得します。あなたがユニバーサルリンクを処理するためにSFSafariViewController、WKWebView、またはのUIWebViewオブジェクトをインスタンス化した場合

Apple docs

を言う、iOSのアプリを開くのではなく、Safariでウェブサイトを開きます。ただし、埋め込まれたSFSafariViewController、WKWebView、またはUIWebViewオブジェクト内でユニバーサルリンクをタップすると、iOSによってアプリが開きます。

これは、WKWebView代理人を定義することを提案したsimilar questionです。 myAppWKWebView代理人を定義して使用していますが、それは役に立ちません。このother questionにはupvotesがたくさんありますが、答えはありません。

私のWKWebViewは実際に他のアプリケーションへのユニバーサルリンクを開くことができます。 myAppWKWebViewのリンクhttps://open.spotify.com/artist/3hv9jJF3adDNsBSIQDqcjpをクリックすると、中間色のWebページを開かずにspotifyアプリケーションを開くことができます(myAppの長押しメニューは「開かれた状態で開く」ことはできません)。しかし、myAppからクリックすると、iOSは普遍的なリンクをmyAppに送信しません。

多くのテストの後、私は、特定のURLを探していると、ディスプレイをキャンセルすることによってユニバーサルリンクに関連付けられたWebページの表示を防止することができることを発見:

func webView(webView: WKWebView, decidePolicyForNavigationResponse navigationResponse: WKNavigationResponse, decisionHandler: (WKNavigationResponsePolicy) -> Void) { 
    if let urlString = navigationResponse.response.URL?.absoluteString { 
     if urlString.hasPrefix(myULPrefix) { // it's a universal link targetted at myApp 
      decisionHandler(.Cancel) 
      return 
     } 
    } 
    decisionHandler(.Allow) 
} 

私は決定でこれを行う必要がありますレスポンス用のハンドラです。アクション用のハンドラではありません。私がこれを行うと、ユニバーサルリンクmyAppに配送のためにキューに入れられたです。 BUTアプリを終了する(ホームボタンを押すなど)まで、実際にはiOSによって配信されず、再起動します。

func application(application: UIApplication, continueUserActivity userActivity: NSUserActivity, restorationHandler: ([AnyObject]?) -> Void) -> Bool {} 

上で参照アップルのドキュメントでは、このメッセージを配信するように指定appDelegate関数が呼び出されません。 は、myAppを開くSafariのユニバーサルリンクをクリックすると、より一般的な逆リンクを行うと呼び出されるです。

これはバグですか?または機能ですか?あるいは、私はいつものように間違った木を吠えるだけですか?

ありがとうございます!

+0

これはバグのようですね?私はhttps://bugreport.apple.com経由でアップルと提携することをお勧めします –

+0

解決策はありますか? – AntiMoron

+0

私は最近このプロジェクトに取り組んでいないので、何か変わったかどうかは分かりません。私たちは、ホームボタンを押して、リンクを取得するためにアプリを再入力することでそれを残しました。私たちのユーザーにとって、これ以上のことは役に立たないことは比較的稀です。私は個人的にAppleにバグとして提出していません。申し訳ありませんもっと今すぐヘンプすることはできません:-( – emrys57

答えて

0

これは、wkwebview wepページのドメイン名がユニバーサルリンクドメイン名と同じ場合に発生します。ショットでSafari、SFSafariVC、WKWebView、またはUIWebViewで開いたWebページが、アプリのアプリリンク(ユニバーサルリンク)ドメインと同じドメインになっているとユニバーサルリンクが無効になります

+0

そのドキュメントはありますか? – CoachNono

+0

Appleがこれを文書化しているとは思わない。 –

関連する問題