app已安装检测技术原理
来源:互联网 发布:淘宝买家秀 编辑:程序博客网 时间:2024/06/10 16:40
本文摘自:openinstall
由于安全隐私的原因,目前网页端无法通过js脚本直接判断某个APP是否已安装,只能首先通过js尝试性的启动app,然后再进入安装流程。web网页上启动app的方式有两种:
1).schema
android与ios均支持自定义schema,通过访问自定义schema的url即可启动对应的app,如weixin://dl/scan这个url,这里的weixin就是自定义的schema。
js启动app的具体方法主要有iframe.src,window.location等,如下:
js启动app的具体方法主要有iframe.src,window.location等,如下:
1.var iframe = document.createElement("iframe");iframe.style.display = "none";iframe.src = schemaUrl;document.body.appendChild(iframe);2. window.location=schemaUrl;
某些浏览器由于人为限制无法直接使用schema启动app,如微信与qq的内置浏览器以及android下的百度浏览器。但微信与QQ中,可以通过集成应用宝的微下载来启动app,应用宝的具体情况下面详细介绍
目前主要通过监听各种dom事件(如:pagehide,visibilitychange,unload等)或通过setTimeout根据时间差来(早期ios系统中,通过schema可立即启动app,同时导致浏览器js脚本暂停运行,脚本恢复运行时通过时间差就能大致的判断app是否启动成功)。但由于现实情况下,由于各种浏览器与系统的差异性,无法通过js百分百的准确判断app是否启动成功;比如从ios9.2开始,通过schema启动app时,ios系统会弹出一个非模态的系统提示框,询问用户是否同意启动,在用户没有做出选择前,js脚本将继续运行,这将导致js完全无法判断app是否启动成功。
2).通用链接(universal link)
ios9开始提供通用链接的特性,app开发时可配置一个与app对应的关联域名,在ios9以上系统的所有浏览器中,访问任何一个url链接前,系统将检查本地是否已安装与url域名相对应的app,如果已安装对应的app,将进一步检查链接url的路径,是否应当启动该app,而不在浏览器中访问此url链接。 但是通用链接存在一个容易让人迷惑的地方,在经过通用链接启动app后,用户可以选择使用safari访问此url,系统会默默的记住用户的选择,在下次访问通用链接的url时,系统将不再启动app,而是直接在浏览器中访问此url,并且没有明显的提示;(在safari中,用户只有手动往下拽了该页面时,才会出现一个询问用户打开app的banner,其它浏览器则未必有此功能,而是完完全全的忽略掉通用链接)
3).应用宝微下载
正常情况下,微信内置浏览器中,无法通过schema启动app,无法下载apk,也无法跳转到app store,但微信与QQ均集成了对应用宝的支持。通过使用应用包的微下载功能,android下的微信与QQ帮助判断某个app是否已安装,已安装的情况下,提示用户直接启动app(在应用宝中需配置启动用的schema),未安装的情况下,可直接下载已上架到应用宝的apk文件;ios下,由于无法判断某个应用是否已安装(特别是ios>=9.2出现的提示窗口),应用宝只提供了跳转app store的功能,而没有启动app的功能。的忽略掉通用链接)
阅读全文
0 0
- app已安装检测技术原理
- extundelete 检测文件已删除原理
- ADB检查APP已安装列,是否已安装,获取已安装APP的版本号,
- 如何检测已安装的iOS应用
- iOS获取app已安装列表和安装app
- 获取APP安装列表 已成功验证
- android 获取已安装app应用信息
- 获取已安装APP的信息
- 判断手机上是否已安装app
- 获取已安装APP的apk文件
- SYN攻击原理以及检测防范技术
- MHL技术介绍及接口检测原理
- 人脸检测、原理、技术和方法
- 检测手机上所安装的app
- JS检测APP是否安装的情况
- JS检测APP是否安装的情况
- 检测地图app安装并且进入地图
- Ionic3 Android 检测并下载安装app
- Codeforces-557D Vitaly and Cycle(二分图染色)
- 【NOIP2017】SummerTraining0707
- mysql中or和in的效率问题
- Introduction.to.Machine.Learning.with.Python 笔记
- PhalApi框架脱坑笔记(二:get请求的参数获取)
- app已安装检测技术原理
- C++中delete和delete[]的区别
- JS对象深度拷贝
- Android String转二维码
- MySQL索引原理及慢查询优化
- 从ActiveMQ认识JMS
- XYNUOJ 1096: 习题6-10 字符统计 输出结果为三行分别输出
- 解决nginx的The page you are looking for is temporarily unavailable错误办法
- JavaScript 通常用于操作 HTML 元素