2017-05-22 67 views
0

今天我分別在「協議激活」(自定義URI方案處理)如何在部署在同一個UWP項目的桌面和電話上工作時遇到了非常奇怪的差異。在桌面上,您的應用程序已成功激活。在手機上,它說,你必須從商店安裝適當的應用程序來處理你的自定義URI方案(事實上,你之前已經在手機上安裝了你的應用程序,甚至現在它正在運行 - 爲什麼要搜索商店?)。如果通過HTTP返回UWP協議302重定向

重要提示:如果您將該自定義URI直接輸入到瀏覽器窗口中,那麼在兩個硬件上都可以。如果通過正確的HTTP 302重定向將自定義URI作爲HTTP請求的結果返回,則會出現此問題。因此,完整的使用案例是「請求正常的URL - >響應HTTP 302到自定義URI位置」

最後,我得出結論:與桌面瀏覽器相比,Edge的移動版本在302重定向上做了不同的事情。快速編寫與XAML的WebView和UnsupportedUriSchemeIdentified事件處理程序最簡單的應用程序,我才知道兩件事情:

  1. 桌面的WebView看到您的重定向URI作爲「yourapp://主機/ PARAMS清單」,一切正常
  2. 電話的WebView看到您的重定向URI像 「意圖是什麼?: // yourapp/確認 PARAMS列表#意向; 方案= yourapp; 」 轉義形式(所以主機部分完全丟失,其他部分都逃脫了)

我的問題是:

  1. 爲什麼手機就實現這一意圖,逃避?
  2. 什麼是在同一代碼庫範圍內的「協議激活」在桌面和手機上工作的最佳做​​法?
+0

你的手機是否安裝了該APP?看起來如果您的設備中沒有應用程序,它會搜索商店? – Scavenger

+0

@清道夫,當然我有,見上面:[quote](事實上,你之前已經在手機上安裝了你的應用程序,甚至現在它正在運行 - 爲什麼要搜索商店?)。[/ quote] –

回答

0

所以,這個問題是由服務器端邏輯引起的(在桌面瀏覽器或手機瀏覽器提供的User-Agent頭部中進行天真的子串搜索)。

Backend guys!永遠不要信任用戶代理字符串!

的Mozilla/5.0(Windows Phone的10.0;安卓6.0.1;微軟; 950的Lumia雙 SIM)爲AppleWebKit/537.36(KHTML,例如Gecko)瀏覽器/ 52.0.2743.116 移動版Safari/537.36邊/ 15.15063