从网站打开UWP应用程序

3
让我们先从背景开始。 我们正在iOS / Android / Windows上构建一个应用程序,我们将使用Firebase Dynamic Links在用户之间分享内容(链接看起来像这样:https://xya.app.goo.gl?link=..)。在iOS和Android上,如果安装了应用程序,则可以启动该应用程序,否则会打开Play / Store。 这也具有优雅地回退到我们的Web应用程序的优点。
现在,在Windows上不支持原生方式。 只有以下选项:
- 自定义URI方案(例如:app://some-link)。 不可用,因为没有优雅的回退到我们的Web。 - URI处理程序 - 由于周年更新后,应用程序可以为常规http URI注册处理程序。 再次不可用,因为我们不拥有用于该链接的 http://goo.gl 域名。
这使我只剩下一种可行的选择-在我们的Web应用程序上,检测用户是否在Windows上。 如果是,则检查应用程序是否已安装并启动它或Windows Store以让用户下载它。
我的想法正确吗?如果是,那么如何从Web应用程序启动我的应用程序/商店? 应该是可能的,它与Store一起工作(当您导航到Windows Store时-例如:https://www.microsoft.com/en-gb/store/p/ ...-它会打开商店应用程序)。
有任何想法吗?我需要两个东西-检测应用程序是否已安装并启动它。
1个回答

2

如果您点击带有自定义URI方案的URI,但Windows中没有为该URI方案注册的应用程序,则会要求从商店下载支持的应用程序。您可以使用链接测试它,例如app://test(在StackOverflow中链接到非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应用程序,则不会打开),这就是为什么我猜网站上有一个检查的原因。

1
这并不适用于所有浏览器,例如在Firefox上它会显示一个页面“协议不被理解”,而在Chrome上它则什么也不做(据我所知)。 - Tomáš Bezouška
1
但我发现了这个库,可以用于检测自定义URI方案是否与任何应用程序相关联,跨浏览器:https://github.com/ismailhabib/custom-protocol-detection - Tomáš Bezouška
关于Firefox的真实情况,我还没有测试Chrome因为没有安装。但是这对于浏览器开发人员来说很糟糕,它应该无论如何都委托给系统... - DevAttendant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接