iOS js判断移动端是否安装某款app的方法

2024-05-26 09:38

本文主要是介绍iOS js判断移动端是否安装某款app的方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、判断是那种设备

var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
二、 ios设备:原理:判断是否认识这个协议,认识则直接跳转,不认识就在这里下载appios();
if(isiOS){function ios(){var ifr = document.createElement("iframe");ifr.src = "openwjtr://com.tyrbl.wjtr"; /***打开app的协议,有ios同事提供***/ifr.style.display = "none";document.body.appendChild(ifr);window.setTimeout(function(){document.body.removeChild(ifr);window.location.href = "http://www.wjtr.com/download/index.html"; /***下载app的地址***/},2000)};
}
第二种方法:
虽然在Js中可以启动某个app,但是并不能判断该app是否安装;
启动app需要的时间较长,js中断时间长,如果没安装,js瞬间就执行完毕。直接上代码吧!
function testApp(url) {var timeout, t = 1000, hasApp = true;setTimeout(function () {if (hasApp) {alert('安装了app');} else {alert('未安装app');}document.body.removeChild(ifr);}, 2000)var t1 = Date.now();var ifr = document.createElement("iframe");ifr.setAttribute('src', url);ifr.setAttribute('style', 'display:none');document.body.appendChild(ifr);timeout = setTimeout(function () {var t2 = Date.now();if (!t1 || t2 - t1 < t + 100) {hasApp = false;}}, t);
}
第三种方法:
<script language="javascript">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 = "要跳转的页面URL";} else {window.close();}},25);window.location = " apps custom url schemes ";} else if (navigator.userAgent.match(/android/i)) {var state = null;try {state = window.open("apps custom url schemes ", '_blank');} catch(e) {}if (state) {window.close();} else {window.location = "要跳转的页面URL";}}
</script>
四、注意事项:
  1. apps custom url schemes 是什么呢?
 
其实就是你与APP约定的一个协议URL,你的IOS同事或Android同事在写程序的时候会设置一个URL Scheme,例如设置:URL Scheme :app然后其他的程序就可以通过URLString = app:// 调用该应用。还可以传参数,如:app://reaction/?uid=1

原理:500ms内,本机有应用程序能解析这个协议并打开程序,调用该应用;如果本机没有应用程序能解析该协议或者500ms内没有打开这个程序,则执行setTimeout里面的function,就是跳转到你想跳转的页面。

2. 网页推荐下载App,如其本地已安装则直接打开本地App

1.网页推荐下载App,如果本地已安装则直接打开本地App

 
function open_or_download_app() { if (navigator.userAgent.match(/(iPhone|iPod|iPad);?/i)) { // 判断useragent,当前设备为ios设备 var loadDateTime = new Date(); // 设置时间阈值,在规定时间里面没有打开对应App的话,直接去App store进行下载。 window.setTimeout(function() { var timeOutDateTime = new Date(); if (timeOutDateTime - loadDateTime < 2000) { window.location = "https://itunes.apple.com/cn/app/hu-lu/id627370076?mt=8"; } else { window.close(); } }, 50); window.location = "XXX://"; // iOS端URL Schema } else if (navigator.userAgent.match(/android/i)) { // 判断useragent,当前设备为android设备 window.location = "XXX://"; // Android端URL Schema }}



君凯商联网-iOS-字唐名僧

这篇关于iOS js判断移动端是否安装某款app的方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1004104

相关文章

macOS无效Launchpad图标轻松删除的4 种实用方法

《macOS无效Launchpad图标轻松删除的4种实用方法》mac中不在appstore上下载的应用经常在删除后它的图标还残留在launchpad中,并且长按图标也不会出现删除符号,下面解决这个问... 在 MACOS 上,Launchpad(也就是「启动台」)是一个便捷的 App 启动工具。但有时候,应

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法

《mysql出现ERROR2003(HY000):Can‘tconnecttoMySQLserveron‘localhost‘(10061)的解决方法》本文主要介绍了mysql出现... 目录前言:第一步:第二步:第三步:总结:前言:当你想通过命令窗口想打开mysql时候发现提http://www.cpp

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE

MySQL Workbench 安装教程(保姆级)

《MySQLWorkbench安装教程(保姆级)》MySQLWorkbench是一款强大的数据库设计和管理工具,本文主要介绍了MySQLWorkbench安装教程,文中通过图文介绍的非常详细,对大... 目录前言:详细步骤:一、检查安装的数据库版本二、在官网下载对应的mysql Workbench版本,要是

Linux安装MySQL的教程

《Linux安装MySQL的教程》:本文主要介绍Linux安装MySQL的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux安装mysql1.Mysql官网2.我的存放路径3.解压mysql文件到当前目录4.重命名一下5.创建mysql用户组和用户并修

CentOS 7部署主域名服务器 DNS的方法

《CentOS7部署主域名服务器DNS的方法》文章详细介绍了在CentOS7上部署主域名服务器DNS的步骤,包括安装BIND服务、配置DNS服务、添加域名区域、创建区域文件、配置反向解析、检查配置... 目录1. 安装 BIND 服务和工具2.  配置 BIND 服务3 . 添加你的域名区域配置4.创建区域