2017-02-03 140 views
2

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

现在这不是本机支持的Windows。只有以下选项:

  • 自定义URI方案(例如app:// some-link)。不可用,因为没有优雅的回退到我们的网络
  • URI处理程序 - 因为周年更新应用程序可以注册常规http URI的处理程序。同样无法使用,因为我们并不拥有其用于链接

这使我只剩下一个可行的选择域http://goo.gl - 我们的Web应用程序,检测用户是否是在Windows上。如果他是,检查应用程序是否已安装并启动它或Windows应用商店让用户下载它。

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

任何想法?我需要两个想法 - 检测应用程序是否已安装&启动它

回答

1

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

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

如果一个应用程序来处理URI方案是安装它会打开它,所以你需要,如果你使用的是Windows 10基本上(这是一个HTML/JS的问题,我认为)来检测。而且我认为这也是Windows Store基本上的功能。因为它没有为每个应用程序打开Store应用程序(例如,如果您在W10桌面上不适用于WP8.1应用程序),这就是为什么我会猜测在网站上有一个检查。

+1

这不适用于所有浏览器,例如在Firefox上它会显示一个页面“Protocol not understand”,在Chrome上它什么都不做(afaik)。 –

+0

但我发现这个lib可以用来检测自定义URI方案是否与任何应用程序相关联,跨浏览器:https://github.com/ismailhabib/custom-protocol-detection –

+0

关于Firefox的真实点,还没有经测试的Chrome原因未安装。但浏览器开发人员认为这很糟糕,所以应该委托给系统。 – schumi1331