我可以如何使网页浏览器的本机应用程序的URL与url后备?

当用户点击url时,我需要打开vk.com,facebook,twitter应用程序,以防这个应用程序被安装。

否则,应该用http url打开新的标签页。

有没有一些现成的解决scheme呢?

我需要这个工作在iOS,Android和Windows设备。

这可以使用URLscheme完成。 不幸的是,不同的操作系统(IOS,Android等)对其移动应用程序的不同URLscheme作出响应。 所以,首先你必须找出用户正在使用什么设备。 这可以通过使用navigator.userAgent属性来获得:

var ua = window.navigator.userAgent; 

uavariables是表示用户信息的string,例如他们正在使用的浏览器。 所以你可以使用String的匹配方法来查找特定的值:

 var IS_IPAD = ua.match(/iPad/i) != null, IS_IPHONE = !IS_IPAD && ((ua.match(/iPhone/i) != null) || (ua.match(/iPod/i) != null)), IS_IOS = IS_IPAD || IS_IPHONE, IS_ANDROID = !IS_IOS && ua.match(/android/i) != null, IS_MOBILE = IS_IOS || IS_ANDROID; 

现在您知道用户正在使用哪个设备,您可以使用正确的URLscheme。 Android使用Intent ://前缀,IOS使用格式appname://参数 。 所以,你可以这样做:

 if(IS_IOS){ window.location = "myapp://view?id=123"; }else if(IS_ANDROID){ window.location = 'intent://view?id=123#Intent;package=my.app.id;scheme=myapp;launchFlags=268435456;end;'; } 

您可能需要使用IOS的超时(如果未安装应用程序,Android将带入Play商店)查看应用程序是否已加载。 如果应用程序未加载,则可以将窗口位置设置为标准URL。

这解决了Android和IOS的问题,但不包括Windows移动设备。 虽然,我相信这是一个类似的方法。 我还没有find任何为您抽象和处理这些代码的特定库,但实现相当简单。

资源/进一步阅读:

  • 如何从移动浏览器启动应用程序(脸谱/微博/等),但如果没有安装应用程序回落到超链接
  • iOS和Android的urlscheme(2/2)