私はmyApp
を対象とするiOSユニバーサルリンクを持っています。別のアプリでそのリンクをクリックすると、myApp
が開き、適切なペイオフが完全に表示され、機能しています。wkwebviewはユニバーサルリンクをまだ処理していません
ただし、myApp
には、WKWebView
を使用する組み込みブラウザが含まれています。内蔵のブラウザから同じユニバーサルリンクをクリックすると、iOSはmyApp
へのリンクを送信せず、ウェブページを取得します。あなたがユニバーサルリンクを処理するためにSFSafariViewController、WKWebView、またはのUIWebViewオブジェクトをインスタンス化した場合
を言う、iOSのアプリを開くのではなく、Safariでウェブサイトを開きます。ただし、埋め込まれたSFSafariViewController、WKWebView、またはUIWebViewオブジェクト内でユニバーサルリンクをタップすると、iOSによってアプリが開きます。
これは、WKWebView
代理人を定義することを提案したsimilar questionです。 myApp
にWKWebView
代理人を定義して使用していますが、それは役に立ちません。このother questionにはupvotesがたくさんありますが、答えはありません。
私のWKWebView
は実際に他のアプリケーションへのユニバーサルリンクを開くことができます。 myApp
WKWebView
のリンク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のユニバーサルリンクをクリックすると、より一般的な逆リンクを行うと呼び出されるです。
これはバグですか?または機能ですか?あるいは、私はいつものように間違った木を吠えるだけですか?
ありがとうございます!
これはバグのようですね?私はhttps://bugreport.apple.com経由でアップルと提携することをお勧めします –
解決策はありますか? – AntiMoron
私は最近このプロジェクトに取り組んでいないので、何か変わったかどうかは分かりません。私たちは、ホームボタンを押して、リンクを取得するためにアプリを再入力することでそれを残しました。私たちのユーザーにとって、これ以上のことは役に立たないことは比較的稀です。私は個人的にAppleにバグとして提出していません。申し訳ありませんもっと今すぐヘンプすることはできません:-( – emrys57