![d78eb6f2d44afa5277b31d5045e47f89.png](https://i-blog.csdnimg.cn/blog_migrate/a62db7b42b9c335195b284e143184482.png)
Deeplink,简单讲,就是你在手机上点击一个链接之后,可以直接链接到app内部的某个页面,而不是app正常打开时显示的首页。不似web,一个链接就可以直接打开web的内页,app的内页打开,必须用到deeplink技术。
核心条件技术
在web的使用中,无论是URL Scheme 还是 Universal Links 找客户端开发者索取即可
URL Scheme
URL Scheme是iOS,Android平台都支持,只需要原生APP开发时注册scheme, 那么用户点击到此类链接时,会自动唤醒APP,借助于URL Router机制,则还可以跳转至指定页面。这种方式是当前使用最广泛,也是最简单的,但是需要手机,APP支持URL Scheme。
Universal Links
在2015年的WWDC大会上,Apple推出了iOS 9的一个功能:Universal Links通用链接。如果你的App支持Universal Links,那就可以访问HTTP/HTTPS链接直接唤起APP进入具体页面,不需要其他额外判断;如果未安装App,访问此通用链接时,可以一个自定义网页。
实例
<a href="javascript:;" id="pullApp" >进入app</a>
<script type="text/javascript">
;(function(){
var ua = navigator.userAgent.toLowerCase()
var isAppInside = /micromessenger/i.test(ua) || /weibo/i.test(ua)
function pullApp(obj){
var timeout = 1000
if (isAppInside) {
//针对微信和微博的屏蔽 跳转提示页面(让用户使用浏览器打开页面)
obj.button.onclick = function(){
window.location.href = obj.tipsUrl
}
} else {
obj.button.onclick = function(){
//用Universal Link或者URL Scheme拉起app
//这里使用iframe(或者A标签或者location.href)
//scheme格式'<scheme域名>://<path>?<params>=<value>'
var startTime = Date.now()
var ifr = document.createElement('iframe')
ifr.setAttribute('id', 'ifr')
ifr.setAttribute('src', obj.openUrl)
document.querySelector('body').appendChild(ifr);
//拉起失败跳转app下载页面
var timer = setTimeout(function() {
var endTime = Date.now()
if (!startTime || endTime - startTime < timeout + 200) {
window.location.href = obj.downloadUrl
} else {
}
}, timeout)
}
}
}
pullApp({
'button':document.querySelector('#pullApp'),
'openUrl':'ltatm://',
'downloadUrl':'index.php?act=tips',
'tipsUrl':'xxxxx?redirect_url=' + location.href.split('#')[0]
})
// button:需要绑定点击唤醒APP事件的元素
// openUrl:唤醒APP的URL,一般为Universal Link或者URL Scheme
// downloadUrl:该游戏的下载地址
// tipsUrl:跳转提示页面,用于微信、微博、QQ等APP内打开页面却无法拉起游戏时的提示
})()
</script>