我如何在网站上使用http url fallback制作crossbrowser native-app网址?

时间:2015-04-27 22:05:17

标签: javascript android html ios mobile

我需要在用户点击网址时打开vk.com,facebook,twitter应用,以防安装此应用。

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

是否有一些现成的解决方案?

我需要这个在ios,android和amp; Windows设备。

1 个答案:

答案 0 :(得分:1)

这可以使用URL方案完成。不幸的是,不同的操作系统(ios,android等)为他们的移动应用程序响应不同的URL方案。因此,首先您必须找出用户正在使用的设备。这可以通过使用navigator.userAgent属性获得:

var ua = window.navigator.userAgent;

ua 变量是表示用户信息的字符串,例如,他们正在使用哪个浏览器。因此,您可以使用String的match method来查找特定值:

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;

现在您知道用户正在使用哪个设备,您可以使用正确的URL方案。 Android使用Intents intent:// 前缀,IOS使用格式 appname:// parameters 。所以,你可以这样做:

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移动设备。虽然,我确信这是一种类似的方法。我没有找到任何特定的库来抽象和处理这些代码,但它实现起来相当简单。

资源/进一步阅读: