HTML中判断手机是否安装某APP,跳转或下载该应用

有些时候在做前端输出的时候,需要和app的做些对接工作。就是在手机浏览器中下载某app时,能判断该用户是否安装了该应用。如果安装了该应用,就直接打开该应用;如果没有安装该应用,就下载该应用。那么下面就对在浏览器中,用js判断某用户是否安装了该应用,并判断是否打开该应用做个简单的介绍。

那么,怎么判断某用户是否安装了某应用呢?

在这里,先写段html代码,如下:

<!doctype html>
<html>
<head>
	<meta charset="utf-8">
</head>
<body>
	<a href="某app下载链接"></a>
</body>
</html>

判断手机端是否安装某应用,并打开该应用的js代码如下:

	function isInstalled(){
		var the_href=$(".down_app").attr("href");//获得下载链接
		window.location="apps custom url schemes";//打开某手机上的某个app应用
		setTimeout(function(){
			window.location=the_href;//如果超时就跳转到app下载页
		},500);
	}

下面对这段js代码做一个简单的解析:首先试着打开手机端某个app的本地协议;如果超时就转到app下载页,下载该app。

说到这里,有人就要问了,这个本地协议又是怎么建立的呢?好了,下面也就这个做个简单的介绍:

其实就是在app中将http协议转换为本地协议,具体怎么转换,不在本讨论范围。但需要在app里面对配置文件做一下设置(一般是在manifest.xml文件的activity的intent filter里面):

<span>
<intent-filter>
               <action android:name="android.intent.action.VIEW" />
               <category android:name="android.intent.category.DEFAULT" />
               <category android:name="android.intent.category.BROWSABLE" />
               <data
            android:scheme="**"
            android:host="**.**"
            android:pathPrefix="/**">
         </data>
</intent-filter>
</span>

apps custom url schemes是什么呢?

其实就是你与app约定的一个协议URL,在iOS客户端或者Android客户端中可以设置一个URL Scheme。例如,设置URL Scheme:app,然后其他的程序就可以通过“ URLString=app://”调用该应用。还可以传参数,如:app://reaction/?uid=1

以上介绍了怎么创建该本地协议及调用该本地协议的方法。但这里还有个关键就是怎么判断用户是否安装了该app呢?原理如下:

在手机浏览器中用js代码请求该协议,如果在500ms内,如果有应用程序能解析这个协议,那么就能打开该应用;如果超过500ms就跳转到app下载页。

时间: 2024-08-23 10:10:25

HTML中判断手机是否安装某APP,跳转或下载该应用的相关文章

ios开发判断手机是否安装微信app

1.代码如下 if ([WXApi isWXAppInstalled]) 2.如果以上代码无效,请在plist文件中添加如下内容

浏览器网页判断手机是否安装IOS/Android客户端程序

IOS 原理如下: 为HTML页面中的超链接点击事件增加一个setTimeout方法. 如果在iPhone上面500ms内,本机有应用程序能解析这个协议并打开程序,则这个回调方法失效: 如果本机没有应用程序能解析该协议或者500ms内没有打开个程序,则执行setTimeout里面的function,就是跳转到apple的itunes. <html> <head> <meta name="viewport" content="width=devic

获取手机所有安装的app(转的)

获取手机所有安装的app by 伍雪颖 Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace"); NSObject* workspace = [LSApplicationWorkspace_class performSelector:@selector(defaultWorkspace)]; NSLog(@"apps: %@", [workspace performSe

js判断手机是否安装了某一款app,有则打开,没有去下载

function openApp(){ if(navigator.userAgent.match(/(iPhone|iPod|iPad);?/i)) { var loadDateTime = new Date(); window.setTimeout(function() { var timeOutDateTime = new Date(); if(timeOutDateTime - loadDateTime < 5000) { window.location = "要跳转的下载app页面

如何用js检测手机是否安装某个app

问题描述 如果本地安装了app那么直接打开,否则苹果要跳转到app-store,安卓则要跳到对应的市场 解决方案 一 //html代码中 的 a 标签,以微信为例,默认的是调用weixin scheme,去打开本机的微信,如果没有则跳转到相应连接 <a href="weixin://" class="btn-download">立即打开</a> // 为btn-download 绑定事件,如果在500ms内,没有解析到协议,那么就会跳转到下载

Dialog显示手机android安装的app信息

最近做功能开发时候需要显示当前手机安装的app信息.这里我使用Dialog来显示.截图如下: 如上截图所示,这个dialog显示了当前手机安装的app,当点击一个菜单项时候就会在上面显示一个上锁的图案(如上图:视频/相机/联系人).这时一个可以对app上锁的设计界面. 首先来看看dialog的创建: private void Init_create_dialog(){ if(null == show_app_dialog){ show_app_dialog = new Dialog(getAct

mac 上如何安装非app store上的下载的软件-------打开未知来源

打开了 Terminal 终端后 ,在命令提示后输入 sudo spctl --master-disable 并按下回车执行,如下图所示.   随后再输入当前 Mac 用户的密码,如下图所示.   如下图所示,当执行完之前输入的命令后,成功返回命令提示后,无报错的话,说明执行命令成功.   随后再进入系统偏好设置中的「安全与隐私」面板中,此时发现"任何来源"选项已经出现,并被设置为默认选项.如此一来,便可以把从网上下载的应用软件,在 Mac 上打开了. 7 虽然这个方法是可以打开系统的

Android检测手机是否安装某个应用

判断手机已安装某程序的方法: private boolean isAvilible(Context context, String packageName){ final PackageManager packageManager = context.getPackageManager();//获取packagemanager List< packageInfo> pinfo = packageManager.getInstalledPackages(0);//获取所有已安装程序的包信息 Li

Xamarin.Forms 中iOS通过URL Scheme判断应用是否安装

Xamarin.Forms 中iOS通过URL Scheme判断应用是否安装 在移动应用开发中,经常需要判断一个app是否安装,iOS中有什么方式可以判断app是否安装呢? 这里介绍通过Url Scheme来判断应用是否安装. Url Scheme在这里就不详讲了,可以看文章URL Schemes 使用详解. 首先我们来看看在原生iOS开发中Objective-C如何编写判断代码: if ([[UIApplication sharedApplication] canOpenURL:[NSURL