【发布时间】:2017-10-22 10:11:10
【问题描述】:
今天,对于部署在同一 UWP 项目上的桌面和手机,“协议激活”(自定义 URI 方案处理)的工作方式分别遇到了非常奇怪的差异。在台式机上,您的应用程序已成功激活。在手机上,它说您必须从商店安装适当的应用程序来处理您的自定义 URI 方案(实际上您之前已经在手机上安装了您的应用程序,甚至现在就可以运行它 - 为什么要搜索商店?)。
重要提示:如果您直接在浏览器窗口中键入该自定义 URI,那么您在两种硬件上都可以。如果自定义 URI 作为 HTTP 请求的结果通过正确的 HTTP 302 重定向返回,则会出现此问题。因此,完整的用例是“请求普通 URL -> 响应 HTTP 302 到自定义 URI 位置”
最后,我得出的结论是,与桌面浏览器相比,Edge 的移动版本在 302 重定向上做了一些不同的事情。使用 XAML WebView 和 UnsupportedUriSchemeIdentified 事件处理程序快速编写最简单的应用程序,我学到了两件事:
- Desktop WebView 将您的重定向 URI 视为“yourapp://host/?params-list”,一切正常
- Phone WebView 以转义形式看到您的重定向 URI,例如“intent://yourapp/confirm?params-list#Intent;scheme=yourapp;end"(因此主机部分完全丢失,其他部分被转义)
我的问题是:
- 为什么电话会进行意图转义?
- 让“协议激活”在同一代码库范围内同时在桌面和手机上工作的最佳实践是什么?
【问题讨论】:
-
你的手机安装了那个APP吗?如果您的设备中没有应用程序,它似乎会搜索商店?
-
@Scavenger,我当然有,见上文:[quote](确实,您之前已经在手机上安装了您的应用程序,甚至现在就可以运行 - 为什么要搜索商店?) .[/quote]
标签: uwp