从网站打开 UWP 应用

Posted

技术标签:

【中文标题】从网站打开 UWP 应用【英文标题】:Open UWP app from website 【发布时间】:2017-02-03 21:06:50 【问题描述】:

让我们从背景开始。我们正在 ios / android / Windows 上构建一个应用程序,我们将使用 Firebase 动态链接在用户之间共享内容(链接如下所示:https://xya.app.goo.gl?link=...)。在 iOS 和 Android 上,如果已安装,则可以启动应用程序;如果尚未安装,则可以打开 Play / Store。这还具有优雅回退到我们的网络应用程序的优势。

现在 Windows 本身不支持此功能。只有以下选项:

自定义 URI 方案(例如 app://some-link)。不可用,因为我们的网络不会有优雅的回退 URI 处理程序 - 因为周年更新应用程序可以为常规 http URI 注册处理程序。再次无法使用,因为我们不拥有用于链接的域 http://goo.gl

这导致我只剩下一个可行的选项 - 在我们的网络应用程序上,检测用户是否在 Windows 上。如果是,请检查应用程序是否已安装并启动它或 Windows 应用商店让用户下载它。

我的想法对吗?如果是这样,我如何从网络应用程序启动我的应用程序/商店?应该可以,它适用于商店(当您导航到 Windows 商店时 - 例如https://www.microsoft.com/en-gb/store/p/... - 它会打开商店应用程序)

有什么想法吗?我需要两个想法 - 检测应用程序是否已安装并启动它

【问题讨论】:

【参考方案1】:

如果您单击具有自定义 URI 方案的 URI,但在 Windows 中没有为该 URI 方案注册的应用程序,它将要求从应用商店下载受支持的应用程序。您可以通过链接对其进行测试,例如app://test(链接到非 http(s) 网站似乎在 *** 中不起作用,但您可以为此创建一个简单的演示 html)。

<html>
<body>
    <a href="app://test">Test link</a>
    <a href="twitter://">Open twitter</a>
</body>
</html>

如果安装了处理该 URI 方案的应用程序,它将打开它,因此您需要检测您是否在 Windows 10 上(我认为这是一个 HTML/JS 问题)。我认为这也是 Windows 应用商店的基本做法。因为它不会为每个应用程序打开商店应用程序(例如,如果您在 W10 桌面上,则不会为 WP8.1 应用程序打开),这就是为什么我猜网站上有一个检查。

【讨论】:

并非所有浏览器都如此,例如在 Firefox 上,它会显示一个页面“协议不理解”,而在 Chrome 上它什么也不做(afaik)。 但是我发现这个库可以用来检测自定义 URI 方案是否与任何应用程序相关联,跨浏览器:github.com/ismailhabib/custom-protocol-detection 关于 Firefox 的正确观点,尚未测试 Chrome 导致未安装。但这对浏览器开发人员来说很糟糕,无论如何它都应该委托给系统......

以上是关于从网站打开 UWP 应用的主要内容,如果未能解决你的问题,请参考以下文章

如何让我的网站和 UWP JavaScript 应用访问同一个数据库?

C# Uwp app webbrowser 控件无法获取设备位置

UWP应用程序无法在VS 2017中运行

从服务中打开 UWP 应用程序

我的第一个UWP程序

UWP SVG 转 Glyph