IOS 开发之应用唤起实现原理详解
投稿:lqh
一、什么是iOS应用唤起
IOS中的应用唤起用来实现以下功能:在浏览器中可以通过某些方式打开IOS手机本地的app,如果该app没有安装可以跳转到该应用对应的App Store的下载页。
二、App store下载页连接
App store中某个应用的下载页连接形如:https://itunes.apple.com/us/app/id399608199。在PC端浏览器打开该连接会跳转到应用详情页的PC端界面。在Safari中打开该连接,浏览器会询问是否在App Store中打开该连接,选择打开即会自动打开App Store并跳转到对应应用的下载界面。
三、URL Schemes
URL Schemes和URL很类似,一个URL可以指向某个网站(如https://www.apple.com指向苹果官网),也可以指向该网站内部具体的某个页面(如https://www.apple.com/mac/指向苹果官网的Mac页面)。一个URL Schemes也可以指向某个APP(weixin://指向微信这个APP)或者APP内部的某个功能(weixin://dl/moments/指向微信朋友圈功能)。
基本URL Schemes指的是如weixin://的这部分。通过这个基本URL Schemes,可以打开某个IOS APP应用。比如在Safari的地址栏中输入weixin://,浏览器就会提示是否打开微信,选择打开,手机就会自动打开本地的微信应用。
四、IOS应用唤起方法
1.直接跳转法(支持各个版本IOS系统)
最简单的方法,在页面中使用a标签制作一个按钮,让其href指向打开APP的基本URL Schemes即可。考虑到可能本地没有安装,这时需要通过js代码让浏览器跳转到对应的App Store下载页。可以设定一个合理的反映时间时间,如果超时还没有打开应用的话,就跳转到下载页面,可以使用setTimeout方法,代码如下:
$('a').click(function() { location.href = 'weixin://'; setTimeout(function() { location.href = 'https://itunes.apple.com/us/app/id399608199'; }, 500); }
2.使用iframe(仅支持IOS8及其以下版本)
通过为body中添加一个隐藏的iframe,其内部的src设置成对应的连接,即可实现该功能,代码如下:
var url = { open: 'weixin://', //对应的Scheme down: 'https://itunes.apple.com/us/app/id399608199' //对应的下载地址 }; var iframe = document.createElement('iframe'); //创建一个iframe var body = document.body; iframe.style.cssText='display:none;width=0;height=0'; //设置该iframe为不可见的 var timer = null; var openapp = document.getElementById('openapp'); openapp.addEventListener('click', function() { body.appendChild(iframe); //点击打开app按钮后,将这个iframe添加到body中 iframe.src = url.open; //设置iframe的src为weixin://,通过这个iframe进行跳转 timer = setTimeout(function() { wondow.location.href = url.down; //500ms后跳转到下载界面 }, 500); }, false)
3.使用Universal links(目前仅IOS9支持)
Universal links是IOS9新增的功能,它是一个普通的HTTP连接。通过Universal links,能够方便的通过传统的HTTP链接来启动APP(如果iOS设备上已经安装了app), 或者打开对应下载界面(iOS设备上没有安装app)。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
您可能感兴趣的文章:
- iOS中的NSURLCache数据缓存类用法解析
- Objective-C的缓存框架EGOCache在iOS App开发中的使用
- C++开发在IOS环境下运行的LRUCache缓存功能
- 使用Javascript判断浏览器终端设备(PC、IOS(iphone)、Android)
- iOS 条码及二维码扫描(从相册中读取条形码/二维码)及扫码过程中遇到的坑
- iOS实现时间显示几分钟前,几小时前以及刚刚的方法示例
- IOS正则表达式判断输入类型(整理)
- iOS 仿百度外卖-首页重力感应的实例
- IOS TextFiled与TextView 键盘的收起以及处理键盘遮挡
- IOS与网页JS交互详解及实例
- IOS Cache设计详细介绍及简单示例