通过 JS 下载/唤起 App

预计阅读时间: 2 分钟

判断唤起 app 的连接是否在 WeChat 中打开

代码示例
1let isWeiXin = navigator.userAgent.toLowerCase().indexOf("micromessenger") != -1;
2// 监测手机设备的系统
3systemType(isWeiXin);

判断手机设备为iOS 的方法

代码示例
1// iOS
2function toiOS() {
3	$("#DBL").click(function () {
4		/* [app scheme码]:// */
5		window.location.href = "scheme://";
6		setTimeout(function () {
7			// iOS App Store下载地址
8			window.location = "url";
9		}, 300);
10		setTimeout(function () {
11			window.location.reload();
12		}, 1000);
13	});
14}

判断手机设备为 Android 的方法

代码示例
1// Android
2function toAndroid(isWeiXin) {
3	if (isWeiXin) {
4		// 在微信中打开链接的提示信息
5		$("#DBL").click(function () {
6			$("#zz").fadeIn();
7		});
8		$("#zz").click(function () {
9			$(this).fadeOut();
10		});
11	} else {
12		var ifr = document.createElement("iframe");
13		/* Android app scheme码 打开地址 */
14		ifr.src = "scheme://host/openwith";
15		ifr.style.display = "none";
16		document.body.appendChild(ifr);
17
18		$("#DBL").click(function () {
19			// Android.apk下载地址
20			window.location = "url";
21		});
22	}
23}

判断手机系统类型「Android、iOS、WeChat」

代码示例
1// 判断手机系统
2function systemType(isWeiXin) {
3	let u = navigator.userAgent,
4		app = navigator.appVersion;
5
6	// 监测设备
7	let isAndroid = u.indexOf("Android") > -1 || u.indexOf("Linux") > -1,
8		isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
9
10	// iOS 设备判断
11	if (isiOS) toiOS();
12	// Android 设备判断
13	if (isAndroid) toAndroid(isWeiXin);
14}
注意事项:

  在 WeChat 中,因为微信的安全机制的问题,通过微信唤起不同设备的 app 的方法也存在一定的差异;iOS 与 Android 的安全机制不同,唤起各自设备的 app 的方法也有所差别。

  iOS 所有的 app 都是在 App Store 中完成的,所以可以通过微信直接唤起苹果的 App Store 来实现 app 的唤起和下载;

  Android 中 app 的来源五花八门,可以通过 app 应用市场、浏览器等来实现 app 的唤起和下载;   因为微信的安全机制,无法通过微信直接唤起 app 或下载 app,只能通过微信提供的插件“浏览器”中打开当前链接,通过浏览器来实现 app 的下载和打开功能。