【问题标题】:UWP protocol activation if returned via HTTP 302 redirect如果通过 HTTP 302 重定向返回 UWP 协议激活
【发布时间】:2017-10-22 10:11:10
【问题描述】:

今天,对于部署在同一 UWP 项目上的桌面和手机,“协议激活”(自定义 URI 方案处理)的工作方式分别遇到了非常奇怪的差异。在台式机上,您的应用程序已成功激活。在手机上,它说您必须从商店安装适当的应用程序来处理您的自定义 URI 方案(实际上您之前已经在手机上安装了您的应用程序,甚至现在就可以运行它 - 为什么要搜索商店?)。

重要提示:如果您直接在浏览器窗口中键入该自定义 URI,那么您在两种硬件上都可以。如果自定义 URI 作为 HTTP 请求的结果通过正确的 HTTP 302 重定向返回,则会出现此问题。因此,完整的用例是“请求普通 URL -> 响应 HTTP 302 到自定义 URI 位置”

最后,我得出的结论是,与桌面浏览器相比,Edge 的移动版本在 302 重定向上做了一些不同的事情。使用 XAML WebView 和 UnsupportedUriSchemeIdentified 事件处理程序快速编写最简单的应用程序,我学到了两件事:

  1. Desktop WebView 将您的重定向 URI 视为“yourapp://host/?params-list”,一切正常
  2. Phone WebView 以转义形式看到您的重定向 URI,例如“intent://yourapp/confirm?params-list#Intent;scheme=yourapp;end"(因此主机部分完全丢失,其他部分被转义)

我的问题是:

  1. 为什么电话会进行意图转义?
  2. 让“协议激活”在同一代码库范围内同时在桌面和手机上工作的最佳实践是什么?

【问题讨论】:

  • 你的手机安装了那个APP吗?如果您的设备中没有应用程序,它似乎会搜索商店?
  • @Scavenger,我当然有,见上文:[quote](确实,您之前已经在手机上安装了您的应用程序,甚至现在就可以运行 - 为什么要搜索商店?) .[/quote]

标签: uwp


【解决方案1】:

因此,问题是由服务器端逻辑引起的(桌面浏览器或手机浏览器提供的 User-Agent 标头中的子字符串搜索很简单)。

后端的家伙!永远,永远不要相信用户代理字符串!

Mozilla/5.0(Windows Phone 10.0;Android 6.0.1;微软;Lumia 950 Dual SIM) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 移动版 Safari/537.36 Edge/15.15063

【讨论】:

    猜你喜欢
    • 2013-06-20
    • 2016-12-02
    • 2012-05-27
    • 2016-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多