转载自:https://www.jianshu.com/p/48288466bdc2 https://blog.csdn.net/henrywulibin/article/details/52087041
https://www.cnblogs.com/shadajin/p/5724117.html
自己封装的唤醒app的js代码:
`在浏览器打开:`
function toApp(isDownload) {
if (!isApp() && !browser.versions.weixin) {
if (browser.versions.ios) {
// window.open("iOSMamaWallet://");
// location.href="https://88mmmoney.com/";
location.href = "iOSMamaWallet://"; //如果唤醒成功,则会打开app,否则跳转到下载app的地址
setTimeout(
function() {
if (isDownload) {
location.href = "https://itunes.apple.com/cn/app/ma-ma-qian-bao/id1025005906?mt=8";
/** *下载app的地址** */
}
}, 2000)
} else if (browser.versions.android) {
// window.location.href = "androidMamaWallet://";
> //在iframe 中打开APP
var ifr = document.createElement("iframe");
ifr.src = "androidmamawallet://";
ifr.style.display = "none";
document.body.appendChild(ifr);
setTimeout(
function() {
document.body.removeChild(ifr);
if (isDownload) {
location.href = "http://sj.qq.com/myapp/detail.htm?apkName=com.mmmoney.app";
}
}, 2000)
}
}
}
在安卓手机上用下面这种方案更友好些
这种方法也行:
function toApp(isDownload) {
if (!isApp() && !browser.versions.weixin) {
if (browser.versions.ios) {
// window.open("iOSMamaWallet://");
// location.href="https://88mmmoney.com/";
//首先会尝试打开URL scheme,如果成功,就唤起APP;如果失败,则跳转到 href 属性
location.href = "iOSMamaWallet://"; // 自定义 URL scheme
setTimeout(
function() {
if (isDownload) {
location.href = "https://itunes.apple.com/cn/app/ma-ma-qian-bao/id1025005906?mt=8";
/** *下载app的地址** */
}
}, 2000)
} else if (browser.versions.android) {
window.location.href = "androidmamawallet://";
setTimeout(function(){
window.location.href = "http://sj.qq.com/myapp/detail.htm?apkName=com.mmmoney.app";
},2000)
}
}
}
微信中唤醒app:
微信中打开
因为微信将唤起本地APP的接口给禁了,所以微信中是不能直接唤起APP的,一般做法是提示用户在浏览器中打开,之后的流程还是我们上面讲的内容。
但是,在iOS9中,这个限制是可以突破的,也就是说可以直接唤起APP。方法就是使用我们上文提到的universal link。
在Android和iOS8及其以下系统中,我们可以利用腾讯的亲儿子:应用宝。简单讲,就是把你的唤起地址配置成你APP的应用宝地址,微信中跳转到这个地址后,如果用户已经安装了APP,则可直接唤起,如果没有安装,则可直接点击下载,如下图示:
另外,在微信中唤醒APP默认只能到达首页,即不能到达指定页面或内容,如果想要做,则需要额外的处理。
## 拿来主义
从以上内容可以总结出:要做一个兼容性很好的方案,就需要考虑各种情况,在不同的情况适配不同的方案,比方说用户是在手机浏览器打开还是微信中打开,或者是在pc中打开,universal link是否被关闭等,这就使代码实现变得复杂,且容易出错,且还有安卓平台机型众多、浏览器众多等导致的兼容问题。
如果觉得实现难度或者成本太高,你可以考虑使用魔窗的mLink。只要你加了魔窗的sdk,就可以通过类似“[https://s.mlinks.cc/AA01”的链接,在任何环境下打开你的APP(如果在pc机上打开,浏览器中将会出现APP下载地址的二维码](https://s.mlinks.cc/AA01%E2%80%9D%E7%9A%84%E9%93%BE%E6%8E%A5%EF%BC%8C%E5%9C%A8%E4%BB%BB%E4%BD%95%E7%8E%AF%E5%A2%83%E4%B8%8B%E6%89%93%E5%BC%80%E4%BD%A0%E7%9A%84APP%EF%BC%88%E5%A6%82%E6%9E%9C%E5%9C%A8pc%E6%9C%BA%E4%B8%8A%E6%89%93%E5%BC%80%EF%BC%8C%E6%B5%8F%E8%A7%88%E5%99%A8%E4%B8%AD%E5%B0%86%E4%BC%9A%E5%87%BA%E7%8E%B0APP%E4%B8%8B%E8%BD%BD%E5%9C%B0%E5%9D%80%E7%9A%84%E4%BA%8C%E7%BB%B4%E7%A0%81)),上面提到的问题都不复存在,并且魔窗已经兼容超过600台以上安卓机型的第三方主流浏览器。而且关键的是,不管是在手机浏览器中,还是在微信中打开,你可以指定唤起APP后直达APP中的某个页面或内容(某个促销商品等),就算用户没安装APP,点击下载安装之后,再打开,还是跳转到指定的页面,这就是场景还原,或者叫做Deffered Deep Linking。
欢迎访问魔窗官网:[http://www.magicwindow.cn/](http://www.magicwindow.cn/)
网友评论