微信内的H5单页,都不能直接唤醒APP。所以需要打开外部浏览器。目前android能够通过后台的配合修改请求头,打开外部浏览器唤醒APP。ios目前没找到合适的方法,只能引导用户自己使用默认浏览器打开H5单页,进而唤醒APP
思路:
ios:判断是否是微信,是微信则显示打开默认浏览器页面。否则,直接跳转
android:后台配合,跟后台约定一个链接,修改链接的请求头为下载响应头(用于打开外部浏览器),并将前端需要访问的H5单页链接返回过来。
具体实现:
1.跟后台约定的链接
var pathName=window.document.location.pathname;
var curWwwPath=window.document.location.href;
var pos=curWwwPath.indexOf(pathName);
var prefixUrl=curWwwPath.substring(0,pos);
this.linkData = prefixUrl+'/ourHouse/system/openBrowser?aa='+'参数'
访问后台返回的链接,跳转到外部浏览器并访问返回的链接
2.进页面先判断是否是IOS并且是微信浏览器
//判断是否是微信浏览器并且是ios系统
if(ua.indexOf('micromessenger') > -1 && ua.indexOf('os') > -1){
//提示请选择在浏览器打开
$("img").css({'display':'block'});
$("body").css({'background':'black',"opacity":"0.8"});
$(".box").css('display','none');
}
//点击领取
$(document).on('click','.discount_use',function(){
if(localStorage.getItem("token")){
if($('.discount_use').text() == '去使用' || $('.discount_use').text() == '打开APP'){
//唤醒APP.second_right
openclient();
}else{
getDiscount();
}
}else{
window.location.href='./login.html'
}
})
3.H5页面唤醒APP的方法。
//唤醒APP的方法,
//config.scheme_IOS,config.scheme_Adr。跟IOS和android定义好的跳转到APP的路径
//config.download_url,android的下载路径。IOS没有对应APP时,自己会跳转到appstore
function openclient() {
// alert(ua)
var ifr = document.createElement('iframe')
if(ua.indexOf('os') > 0){
window.location.href=config.scheme_IOS;
}else{
ifr.src = config.scheme_Adr;
ifr.style.display = 'none';
document.body.appendChild(ifr);
setTimeout(function(){
document.body.removeChild(ifr);
window.location.href = config.download_url
}, 2000);
}
}