uniapp实现被浏览器唤起

1,配置UrlSchemes

在manifest.json配置

/* 应用发布信息 */
"distribute" : {
    /* android打包配置 */
    "android" : {
        "schemes" : [ "CCC" ],
        ...
    },
    /* ios打包配置 */
    "ios" : {
        "urltypes" : [
            {
                "urlidentifier" : "com.BBB.AAA",
                "urlschemes" : [ "CCC" ]
            }
        ],
        "urlschemewhitelist" : [ "CCC" ],
        ...
    },
},
...

2,页面中配置

1)微信浏览器中可能无法唤起app,需要单独处理

2)safari中只能通过loaction.href唤起app

其中_inviteCode为网页携带的inviteCode 参数;com.BBB.AAA不一定非要写成com.BBB.AAA,后面的?是一个符号,用于隔开前面的字符串和后面的参数,便于在app中取参数

    <div class="mark hide">
        <div class="mark_info">
            点击右上角
            <br>
            选择“在浏览器中打开”
        </div>
    </div>
<script>
$(function(){
    var sys = 'android';
    var isiOS = !!navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
    //获取url参数
    var GetRequest = function(variable) {
        var query = window.location.search.substring(1);
        var vars = query.split("&");
        for (var i=0;i<vars.length;i++) {
                var pair = vars[i].split("=");
                if(pair[0] == variable){return pair[1];}
        }
        return(false);
    }
    //打开app
    var openApp = function(){
        var _inviteCode = GetRequest("inviteCode")
        if(isiOS){
            location.href = "CCC://com.BBB.AAA?" + _inviteCode
        }else{
            var appOpenUrl = "CCC://com.BBB.AAA?" + _inviteCode
            //在iframe 中打开APP
            var ifr = document.createElement('iframe');
            ifr.src = appOpenUrl;
            ifr.style.display = 'none';

            document.body.appendChild(ifr);      
            setTimeout(function() {
                document.body.removeChild(ifr);
            }, 2000); 
        }
        
    };
    
    //是否是微信判断
    var ua = window.navigator.userAgent.toLowerCase();
    if (ua.match(/MicroMessenger/i) == "micromessenger") {
      $('.mark').removeClass("hide")
    }else{
        openApp()
    }
})
</script>

3,在app中取参数

在uniapp项目中App.vue

onShow: function() {
	// #ifdef APP-PLUS
	var args= plus.runtime.arguments;
	let _inviteCode = args.split('?')[1]
	if(args && _inviteCode){
        console.log(_inviteCode)
	}
	// #endif
	
},

 

 

注:

更多配置参考:https://ask.dcloud.net.cn/article/64

小米手机自带浏览器无法唤起uniapp

若是hbuilder打包web2app,可直接在manifest.json中的App常用其他配置中填写UrlSchemes即可,网页配置同以上

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值